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)にどう対応するかを取引所に伝えます。 アカウントの作成方法に合ったものを選んでください。
| タイプ | 名称 | 該当する場合 |
|---|---|---|
| 0 | EOA | 署名と資金保有を兼ねる素のウォレット(例:MetaMask)。 |
| 1 | POLY_PROXY | メール / Magic.link登録。プロキシウォレットが資金を保有し、あなたのキーがその代わりに署名する。 |
| 2 | POLY_GNOSIS_SAFE | Gnosis Safeが資金を保有し、署名キーがそのために署名する。 |
| 3 | POLY_1271 | デポジットウォレット(EIP-1271のスマートコントラクト署名)。 |
署名キーが資金保有アドレスと異なる場合(タイプ1〜3)は、秘密鍵と funder アドレスの両方を渡す必要があります。
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 に移行する。



