API · リファレンス

Polymarketの市場データを読むのにキーは不要です。注文を出す・取り消すには2層の認証が必要です。 APIの認証情報を作成するためのL1ウォレット署名(EIP-712)と、認証付きリクエストごとのL2 HMAC署名です。 このページでは両方に加え、4つの署名タイプとfunderアドレス——認証エラーの大半を引き起こす2つ——を解説します。

ひと目で
  • 読み取り(Gamma、Data、公開CLOB)——認証不要。
  • L1——ウォレットがEIP-712メッセージ(ClobAuthドメインのバージョン "1")に署名して、APIの認証情報を作成または導出する。
  • L2——各注文リクエストは、api_key / api_secret / api_passphrase のHMACで署名する。

APIの認証情報を作成・導出する(L1)

ウォレットが一度署名して、決定論的なAPI認証情報のセットを発行(または再導出)します。V2 SDKを使ってください。 V1の py-clob-client(0.34.x)はアーカイブ済みで動作しません。

from py_clob_client_v2 import ClobClient   # pip install py-clob-client-v2

# L1: your wallet signs to derive API credentials
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY)
creds = client.create_or_derive_api_key()    # api_key, api_secret, api_passphrase

# L1 + L2: rebuild the client WITH creds for authenticated calls (no set_api_creds in v2)
client = ClobClient(host="https://clob.polymarket.com", chain_id=137, key=PRIVATE_KEY, creds=creds)
// polymarket_client_sdk_v2 - official Rust client (repo rs-clob-client-v2)
use polymarket_client_sdk_v2::clob::{Client, Config};
use polymarket_client_sdk_v2::clob::types::SignatureType;
let client = Client::new("https://clob.polymarket.com", Config::default())?
    .authentication_builder(&signer)
    .funder(deposit_wallet)                   // deposit wallets work in Rust today
    .signature_type(SignatureType::Poly1271)
    .authenticate().await?;

3つの値はシークレット(環境変数)として保存してください。市場データの読み取りには一切不要です。

署名タイプ(0〜3)

署名タイプは、注文の署名が資金を保有するウォレット(funder)にどう対応するかを取引所に伝えます。 アカウントの作成方法に合ったものを選んでください。

タイプ名称該当する場合
0EOA署名と資金保有を兼ねる素のウォレット(例:MetaMask)。
1POLY_PROXYメール / Magic.link登録。プロキシウォレットが資金を保有し、あなたのキーがその代わりに署名する。
2POLY_GNOSIS_SAFEGnosis Safeが資金を保有し、署名キーがそのために署名する。
3POLY_1271デポジットウォレット(EIP-1271のスマートコントラクト署名)。

署名キーが資金保有アドレスと異なる場合(タイプ1〜3)は、秘密鍵と funder アドレスの両方を渡す必要があります。

デポジットウォレット(タイプ3)——今日はRustを使う。2026年6月時点で、Python (py-clob-client-v2)とTypeScript(@polymarket/clob-client-v2)のクライアントには 未解決バグがあります。L1認証がAPIキーをデポジットウォレットではなくEOAに紐づけるため、注文が拒否されます ("maker address not allowed, please use the deposit wallet flow")。公式のRustクライアントは EIP-1271のデポジットウォレット署名を正しく処理します。Rust以外の回避策:メール/Magicアカウントを使い、 signature_type = POLY_PROXY(タイプ1)で署名します。修正状況はPolymarketのissue #70(Python)/ #65(TS)を再確認してください。

リクエストに署名する(L2)

各認証付きリクエストは、APIシークレットとリクエストのメソッド・パス・ボディ・タイムスタンプから作られるHMAC署名を伴います。 V2 SDKがこれらのヘッダーを生成します。正しく保つべき点が2つあります。

  • 時計——約60秒を超えるずれは署名が拒否されます。NTPで同期してください。
  • ドメイン——L2/ClobAuthのEIP-712ドメインバージョンは "1" のままです。V2のExchange(注文)ドメインだけが "2" に移りました。V1クライアントは誤った注文ドメインに署名して失敗します。 order_version_mismatch を参照してください。

キーの安全管理

  • 秘密鍵やAPIシークレットを絶対にハードコードしないこと。環境変数を使い、コミットしないこと。
  • 可能な限り、署名キーとfunderアドレスを日常使いのウォレットから分けておくこと。
  • 読み取り専用のボットは認証情報を一切必要としません。そこから始めてください。

次へ:CLOB API:注文を出す · 認証エラーを直す · v1 → v2 に移行する。