polymarket について
polymarketは、Polymarket APIの市場データ、オーダーブック、取引、認証、公式SDKのリファレンスを整理したスキルです。Polymarketの予測市場との連携を開発する人を対象としています。
主な機能
- 01Gamma、CLOB、Data APIを収録
- 02イベントと市場の検索方法を説明
- 03価格とオーダーブックのエンドポイントを記載
- 04L1・L2認証と注文タイプを解説
- 05TypeScript、Python、RustのSDKを掲載
活用シーン
- 01イベント、市場、タグの検索
- 02トークン価格、履歴、オーダーブックの取得
- 03認証済みクライアントで注文を管理
- 04SDKリファレンスを使ったPolymarket連携の開発
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ outsharp/ shipp-skills --skill polymarketインストール後、Claude Code で/polymarketを入力して読み込まれたか確認します。
同梱ファイルREADME.md
詳細
Polymarket API
Polymarket は、ユーザーが現実世界の出来事の結果を取引する分散型予測市場です。Polygon 上のオフチェーンでのマッチングとオンチェーンでの決済を組み合わせた、ハイブリッド分散型の中央指値注文板(CLOB)を使用しています。
このスキルと公式ドキュメントを 頻繁に 確認してください。すべてのドキュメントを網羅した、正式な機械可読インデックスは次の場所にあります。
構築を始める前に、必ず llms.txt を参照して利用可能なすべてのページを確認してください。これは、エンドポイントのリファレンス、SDK のドキュメント、WebSocket チャンネル、ビルダープログラムの詳細、スタートガイドに関する唯一の信頼できる情報源です。
主要な概念(用語集)
| 用語 | 定義 |
|---|---|
| イベント | 共通のトピック(例:「2024 年米国大統領選挙」)のもとにまとめられた、関連市場の集まりです。 |
| 市場 | イベント内の、個別に取引可能な二択の結果です。各市場には Yes と No のサイド、条件 ID、質問 ID、トークン ID のペアがあります。 |
| トークン | 特定の結果(Yes または No)に対するポジションを表します。価格は 0.00 から 1.00 の範囲です。勝利したトークンは 1 ドル分の USDCe と引き換えられます。結果トークンとも呼ばれます。 |
| トークン ID | 特定の結果トークンを識別する一意の ID です。注文の発注や価格の照会に必要です。 |
| 条件 ID | 市場の決着条件を示すオンチェーンの識別子です。CTF の操作や、CLOB における市場識別子として使用されます。 |
| 質問 ID | 市場とその決着オラクル(UMA)を結び付ける識別子です。 |
| スラッグ | 市場またはイベントの、人が読みやすい URL 識別子です(例:polymarket.com/event/[slug])。 |
| CLOB | 中央指値注文板(Central Limit Order Book)— Polymarket のオフチェーン注文マッチングシステムです。注文はオンチェーンで決済される前に、ここでマッチングされます。 |
| ティックサイズ | 市場における最小価格変動幅です。通常は 0.01(1 セント)または 0.001(0.1 セント)です。 |
| 約定 | 注文がマッチングされ、実行されることです。注文は一部または全額が約定する場合があります。 |
| ネガティブリスク(NegRisk) | Yes として決着する結果が 1 つだけの複数結果イベントです。注文パラメーターで negRisk: true を指定する必要があります。 |
| CTF | 条件付きトークンフレームワーク(Conditional Token Framework)— 結果トークンを管理するオンチェーンのスマートコントラクトです。 |
| 分割 | USDCe を、結果トークンの完全なセット(Yes 1 つ + No 1 つ)に変換します。 |
| 統合 | 結果トークンの完全なセットを USDCe に戻します。 |
| 償還 | 決着後、勝利したトークンを 1 つにつき 1 ドル分の USDCe と交換します。 |
| USDCe | Polygon 上のブリッジされた USDC です。Polymarket で担保として使用されるステーブルコインです。 |
| 資金提供者アドレス | 取引に使用する資金とトークンを保有するウォレットアドレスです。 |
| 署名タイプ | ウォレットの種類を示します:0 = EOA、1 = Magic Link プロキシ(POLY_PROXY)、2 = Gnosis Safe プロキシ。 |
用語集の全文:https://docs.polymarket.com/quickstart/reference/glossary.md
注文タイプ
| タイプ | 名称 | 説明 |
|---|---|---|
| GTC | キャンセルされるまで有効 | 約定するか手動でキャンセルされるまで、注文が有効な状態を保ちます。 |
| GTD | 指定日時まで有効 | 約定しない場合、指定した時刻に期限切れになります。 |
| FOK | 全量即時約定またはキャンセル | 注文全量が直ちに約定する必要があり、そうでなければキャンセルされます。一部約定はありません。 |
| FAK | 即時約定可能分を約定後キャンセル | 直ちに可能な限り約定し、残った未約定分はキャンセルされます。 |
ベース URL
| API | ベース URL | 説明 |
|---|---|---|
| CLOB API | https://clob.polymarket.com | 注文管理、価格、注文板、取引 |
| Gamma API | https://gamma-api.polymarket.com | 市場の検索、メタデータ、イベント、タグ |
| Data API | https://data-api.polymarket.com | ユーザーのポジション、アクティビティ、取引履歴 |
| CLOB WebSocket | wss://ws-subscriptions-clob.polymarket.com/ws/ | 注文板の更新、注文ステータス |
| RTDS WebSocket | wss://ws-live-data.polymarket.com | 低遅延の暗号資産価格、コメント |
エンドポイントのリファレンス:https://docs.polymarket.com/quickstart/reference/endpoints.md
ドキュメントと参考資料
詳細な例、リクエスト/レスポンスのスキーマ、手順ガイドはすべて公式ドキュメントに掲載されています。構築を始める前に、必ず参照してください。
認証
Polymarket は二段階認証システムを採用しています。パブリックエンドポイント(マーケットデータ、価格、オーダーブック)には認証は不要です。
L1 認証(秘密鍵)
L1 では、ウォレットの秘密鍵を使用して EIP-712 メッセージに署名します。これによりウォレットの所有権を証明し、L2 API 認証情報の作成または導出に使用します。
L1 ヘッダー(REST を直接呼び出す場合):
| ヘッダー | 説明 |
|---|---|
POLY_ADDRESS | Polygon の署名者アドレス |
POLY_SIGNATURE | EIP-712 署名 |
POLY_TIMESTAMP | 現在の UNIX タイムスタンプ |
POLY_NONCE | ノンス(デフォルトは 0) |
POLY_SIGNATURE は、ドメインが ClobAuthDomain(バージョン 1、chainId 137)の EIP-712 構造体に署名して生成します。
TypeScript の例:
import { ClobClient } from "@polymarket/clob-client";
import { Wallet } from "ethers"; // v5.8.0
const HOST = "https://clob.polymarket.com";
const CHAIN_ID = 137; // Polygon mainnet
const signer = new Wallet(process.env.PRIVATE_KEY);
const client = new ClobClient(HOST, CHAIN_ID, signer);
const apiCreds = await client.createOrDeriveApiKey();
// Returns: { apiKey, secret, passphrase }
Python の例:
from py_clob_client.client import ClobClient
import os
client = ClobClient(
host="https://clob.polymarket.com",
chain_id=137,
key=os.getenv("PRIVATE_KEY"),
)
api_creds = client.create_or_derive_api_creds()
# Returns: { "apiKey": "...", "secret": "...", "passphrase": "..." }
L1 認証の詳細:https://docs.polymarket.com/developers/CLOB/authentication.md
L2 認証(API 認証情報)
L2 では、L1 から派生した API 認証情報(apiKey、secret、passphrase)を使用します。リクエストには secret を使った HMAC-SHA256 署名が付与されます。
L2 ヘッダー(REST を直接呼び出す場合):
| ヘッダー | 説明 |
|---|---|
POLY_ADDRESS | Polygon の署名者アドレス |
POLY_SIGNATURE | HMAC-SHA256 署名 |
POLY_TIMESTAMP | 現在の UNIX タイムスタンプ |
POLY_API_KEY | ユーザーの API apiKey 値 |
POLY_PASSPHRASE | ユーザーの API passphrase 値 |
TypeScript の例(完全な L2 クライアント):
import { ClobClient } from "@polymarket/clob-client";
import { Wallet } from "ethers"; // v5.8.0
const signer = new Wallet(process.env.PRIVATE_KEY);
const apiCreds = {
apiKey: process.env.API_KEY,
secret: process.env.SECRET,
passphrase: process.env.PASSPHRASE,
};
const client = new ClobClient(
"https://clob.polymarket.com",
137,
signer,
apiCreds,
2, // Signature type: 0=EOA, 1=POLY_PROXY, 2=GNOSIS_SAFE
process.env.FUNDER_ADDRESS, // proxy wallet address
);
Python の例(完全な L2 クライアント):
from py_clob_client.client import ClobClient
from py_clob_client.clob_types import ApiCreds
import os
api_creds = ApiCreds(
api_key=os.getenv("API_KEY"),
api_secret=os.getenv("SECRET"),
api_passphrase=os.getenv("PASSPHRASE"),
)
client = ClobClient(
host="https://clob.polymarket.com",
chain_id=137,
key=os.getenv("PRIVATE_KEY"),
creds=api_creds,
signature_type=2, # 0=EOA, 1=POLY_PROXY, 2=GNOSIS_SAFE
funder=os.getenv("FUNDER_ADDRESS"),
)
署名タイプ
| タイプ | 値 | 説明 |
|---|---|---|
| EOA | 0 | 標準の Ethereum ウォレットです。Funder は EOA アドレスです。ガス代として POL が必要です。 |
| POLY_PROXY | 1 | Magic Link のメール/Google ログイン用プロキシウォレットです。ユーザーは Polymarket.com から PK をエクスポートする必要があります。 |
| GNOSIS_SAFE | 2 | Gnosis Safe のマルチシグプロキシウォレットです。Polymarket.com のユーザーに最もよく使われています。 |
認証ガイド全文:https://docs.polymarket.com/developers/CLOB/authentication.md
SDK
Polymarket は公式 SDK を提供しています。本番環境との連携には、こちらを推奨します。
| SDK | インストール | ソース |
|---|---|---|
| TypeScript | npm install @polymarket/clob-client | GitHub |
| Python | pip install py-clob-client | GitHub |
| Rust | cargo add polymarket-client-sdk | — |
ユーザーに代わって注文をルーティングするビルダーは、こちらもインストールしてください。
| パッケージ | インストール | 用途 |
|---|---|---|
| Builder Signing SDK | npm install @polymarket/builder-signing-sdk | ビルダー注文の帰属情報 |
レート制限
Polymarket は Cloudflare ベースのスロットリングを使用しています(リクエストは即座に拒否されるのではなく、遅延します)。主な制限は次のとおりです。
一般
| エンドポイント | 制限 |
|---|---|
| 一般的なレート制限 | 15,000 リクエスト/10 秒 |
Gamma API
| エンドポイント | 制限 |
|---|---|
| Gamma(一般) | 4,000/10 秒 |
/events | 500/10 秒 |
/markets | 300/10 秒 |
/markets と /events の一覧表示 | 900/10 秒 |
| 検索 | 350/10 秒 |
| タグ | 200/10 秒 |
| コメント | 200/10 秒 |
CLOB API
| エンドポイント | 制限 |
|---|---|
| CLOB(一般) | 9,000/10 秒 |
/book | 1,500/10 秒 |
/price | 1,500/10 秒 |
/midprice | 1,500/10 秒 |
/books、/prices、/midprices | 500/10 秒 |
| 価格履歴 | 1,000/10 秒 |
CLOB 取引
| エンドポイント | バースト制限 | 継続制限 |
|---|---|---|
POST /order | 3,500/10 秒(500/秒) | 36,000/10 分(60/秒) |
DELETE /order | 3,000/10 秒(300/秒) | 30,000/10 分(50/秒) |
POST /orders(一括) | 1,000/10 秒(100/秒) | 15,000/10 分(25/秒) |
DELETE /orders(一括) | 1,000/10 秒(100/秒) | 15,000/10 分(25/秒) |
DELETE /cancel-all | 250/10 秒(25/秒) | 6,000/10 分(10/秒) |
Data API
| エンドポイント | 制限 |
|---|---|
| Data API(一般) | 1,000/10 秒 |
/trades | 200/10 秒 |
/positions | 150/10 秒 |
/closed-positions | 150/10 秒 |
レート制限の詳細:https://docs.polymarket.com/quickstart/introduction/rate-limits.md
REST API エンドポイントの概要
以下に API ごとの概要を示します。リクエスト/レスポンスのスキーマ全文は、リンク先のドキュメントを参照するか、https://docs.polymarket.com/llms.txt をご覧ください。
Gamma API — 市場の発見とメタデータ
ベース:https://gamma-api.polymarket.com
| エンドポイント | メソッド | 説明 | ドキュメント |
|---|---|---|---|
/events | GET | イベントの一覧を取得します(active、closed、tag_id、series_id などで絞り込み) | イベントの一覧 |
/events/{id} | GET | ID でイベントを取得します | ID でイベントを取得 |
/events/{slug} | GET | スラッグでイベントを取得します | スラッグでイベントを取得 |
/events/tags | GET | イベントタグを取得します | イベントタグを取得 |
/markets | GET | マーケットの一覧を取得します(さまざまな条件で絞り込み) | マーケットの一覧 |
/markets/{id} | GET | ID でマーケットを取得します | ID でマーケットを取得 |
/markets/{slug} | GET | スラッグでマーケットを取得します | スラッグでマーケットを取得 |
/tags | GET | タグの一覧を取得します | タグの一覧 |
/tags/{id} | GET | ID でタグを取得します | ID でタグを取得 |
/tags/{slug} | GET | スラッグでタグを取得します | スラッグでタグを取得 |
/series | GET | シリーズの一覧を取得します | シリーズの一覧 |
/series/{id} | GET | ID でシリーズを取得します | ID でシリーズを取得 |
/sports | GET | スポーツのメタデータを取得します | スポーツのメタデータを取得 |
/sports/market-types | GET | 有効なスポーツマーケットタイプを取得します | 有効なスポーツマーケットタイプを取得 |
/teams | GET | チームの一覧を取得します | チームの一覧 |
/search | GET | マーケット、イベント、プロフィールを検索します | 検索 |
/comments | GET | コメントの一覧を取得します | コメントの一覧 |
/profiles/{address} | GET | ウォレットアドレスから公開プロフィールを取得します | プロフィールを取得 |
Gamma の構造ガイド:https://docs.polymarket.com/developers/gamma-markets-api/gamma-structure.md
CLOB API — 価格とオーダーブック(公開)
ベース:https://clob.polymarket.com
| エンドポイント | メソッド | 認証 | 説明 | ドキュメント |
|---|---|---|---|---|
/price | GET | 不要 | トークンと売買方向を指定して現在価格を取得します | 市場価格を取得 |
/prices | POST | 不要 | 複数のトークンと売買方向の価格を取得します | 複数の市場価格を取得 |
/midpoint | GET | 不要 | トークンの中間価格を取得します | 中間価格を取得 |
/book | GET | 不要 | トークンのオーダーブックを取得します | オーダーブックの概要を取得 |
/books | POST | 不要 | 複数のトークンのオーダーブックを取得します | 複数のオーダーブックを取得 |
/prices-history | GET | 不要 | トークンの過去の価格データを取得します | 価格履歴を取得 |
/spreads | GET | 不要 | 複数のトークンの買値と売値のスプレッドを取得します | 買値と売値のスプレッドを取得 |
CLOB API — 取引(認証済み)
ベース:https://clob.polymarket.com
| エンドポイント | メソッド | 認証 | 説明 | ドキュメント |
|---|---|---|---|---|
/order | POST | L2 | 単一の注文を発注します | 単一注文を発注 |
/order | DELETE | L2 | 単一の注文をキャンセルします | 注文をキャンセル |
/orders | POST | L2 | 複数の注文を発注します(バッチ、最大15件) | 複数の注文を発注 |
/orders | DELETE | L2 | 複数の注文をキャンセルします | 注文をキャンセル |
/cancel-all | DELETE | L2 | すべての未約定注文をキャンセルします | 注文をキャンセル |
/cancel-market-orders | DELETE | L2 | 特定の市場のすべての注文をキャンセルします | 注文をキャンセル |
CLOB API — 注文と取引(認証済み)
| エンドポイント | メソッド | 認証 | 説明 | ドキュメント |
|---|---|---|---|---|
/data/order/{orderId} | GET | L2 | 特定の注文を取得します | 注文を取得 |
/data/orders | GET | L2 | 有効な注文/未約定注文を取得します | 有効な注文を取得 |
/data/trades | GET | L2 | ユーザーの取引を取得します | 取引を取得 |
/order/scoring | GET | L2 | 注文が報酬スコアリングの対象となるか確認します | スコアリングを確認 |
CLOB API — 認証エンドポイント
| エンドポイント | メソッド | 認証 | 説明 |
|---|---|---|---|
/auth/api-key | POST | L1 | 新しい API 認証情報を作成します |
/auth/derive-api-key | GET | L1 | 既存の API 認証情報を導出します |
/auth/api-keys | GET | L2 | API キーを一覧表示します |
/auth/api-key | DELETE | L2 | API キーを削除/無効化します |
Data API — ポジションとアクティビティ
ベース URL:https://data-api.polymarket.com
| エンドポイント | メソッド | 説明 | ドキュメント |
|---|---|---|---|
/positions | GET | ユーザーの現在のポジションを取得します | 現在のポジションを取得 |
/closed-positions | GET | ユーザーの決済済みポジションを取得します | 決済済みポジションを取得 |
/positions/market | GET | マーケットのポジションを取得します | マーケットのポジションを取得 |
/positions/value | GET | ユーザーのポジションの合計価値を取得します | 合計価値を取得 |
/top-holders | GET | マーケットの上位保有者を取得します | 上位保有者を取得 |
/trades | GET | ユーザーまたはマーケットの取引を取得します | 取引を取得 |
/activity | GET | ユーザーのオンチェーンアクティビティを取得します | ユーザーアクティビティを取得 |
/leaderboard | GET | トレーダーのリーダーボードランキングを取得します | リーダーボードを取得 |
/open-interest | GET | 建玉を取得します | 建玉を取得 |
/volume | GET | イベントのリアルタイム取引高を取得します | リアルタイム取引高を取得 |
Bridge API — 入金と出金
| エンドポイント | メソッド | 説明 | ドキュメント |
|---|---|---|---|
/deposit | POST | 入金アドレスを作成します | 入金アドレスを作成 |
/withdraw | POST | 出金アドレスを作成します | 出金アドレスを作成 |
/supported-assets | GET | 対応するチェーンとトークンを取得します | 対応資産を取得 |
/quote | GET | 入金・出金の見積もりを取得します | 見積もりを取得 |
/status | GET | トランザクションのステータスを取得します | トランザクションのステータスを取得 |
Bridge の概要:https://docs.polymarket.com/developers/misc-endpoints/bridge-overview.md
Builder Program エンドポイント
| エンドポイント | メソッド | 説明 | ドキュメント |
|---|---|---|---|
/builders/leaderboard | GET | 集計済みのビルダーリーダーボードを取得します | ビルダーリーダーボード |
/builders/volume | GET | ビルダーの1日ごとの取引高時系列データを取得します | ビルダー取引高 |
Builder プログラム:https://docs.polymarket.com/developers/builders/builder-intro.md
手数料
現在の手数料体系(変更される場合があります):
| 取引高レベル | メイカー手数料(bps) | テイカー手数料(bps) |
|---|---|---|
| >0 USDC | 0 | 0 |
手数料の計算方法は、購入か売却かによって異なります。
- 売却アウトカムトークン:
feeQuote = baseRate × min(price, 1 - price) × size - 購入アウトカムトークン:
feeBase = baseRate × min(price, 1 - price) × (size / price)
手数料の詳細:https://docs.polymarket.com/developers/CLOB/introduction.md
メイカーリベートプログラム:https://docs.polymarket.com/developers/market-makers/maker-rebates-program.md
WebSocket API
Polymarket は、リアルタイムデータ用に2つの WebSocket サービスを提供しています。
CLOB WebSocket
wss://ws-subscriptions-clob.polymarket.com/ws/
2 つのチャネルを利用できます。
| チャネル | 認証が必要 | 説明 | ドキュメント |
|---|---|---|---|
market | いいえ | オーダーブックと価格の更新(公開) | マーケットチャネル |
user | はい | 注文ステータスと取引の更新 | ユーザーチャネル |
マーケットチャネルのイベント
| イベントタイプ | トリガー | 説明 |
|---|---|---|
book | 最初の購読/取引 | 買い注文と売り注文を含むオーダーブック全体のスナップショット |
price_change | 新規注文/キャンセル | 最良買い気配値/売り気配値を含む、価格レベルの差分更新 |
tick_size_change | 価格が 0.96 超または 0.04 未満 | 最小ティックサイズの更新 |
last_trade_price | 取引のマッチ | 直近の取引価格、売買方向、数量 |
best_bid_ask | 最良価格の変化 | 最良買い気配値、売り気配値、スプレッド(custom_feature_enabled が必要) |
new_market | マーケットの作成 | 新しいマーケットの詳細(custom_feature_enabled が必要) |
market_resolved | マーケットの解決 | 勝利した結果を含む解決の詳細(custom_feature_enabled が必要) |
ユーザーチャネルのイベント
| イベントタイプ | トリガー | 説明 |
|---|---|---|
trade | 注文のマッチ/ステータスの変更 | メーカー注文とステータス(MATCHED、MINED、CONFIRMED、RETRYING、FAILED)を含む取引の詳細 |
order | 注文の発注/更新/キャンセル | タイプ(PLACEMENT、UPDATE、CANCELLATION)を含む注文の詳細 |
購読
接続時に JSON メッセージを送信します。
{
"auth": { /* L2 auth for user channel */ },
"markets": ["0x...conditionId"],
"assets_ids": ["tokenId1", "tokenId2"],
"type": "market",
"custom_feature_enabled": true
}
接続後に、追加のアセットを購読/購読解除します。
{
"assets_ids": ["tokenId3"],
"markets": [],
"operation": "subscribe",
"custom_feature_enabled": true
}
WebSocket の完全ガイド:https://docs.polymarket.com/developers/CLOB/websocket/wss-overview.md WSS 認証:https://docs.polymarket.com/developers/CLOB/websocket/wss-auth.md
RTDS(リアルタイムデータストリーム)
wss://ws-live-data.polymarket.com
暗号資産の価格やコメントフィードを低レイテンシでストリーミングします。マーケットメーカー向けに最適化されています。
- RTDS の概要:https://docs.polymarket.com/developers/RTDS/RTDS-overview.md
- RTDS 暗号資産価格:https://docs.polymarket.com/developers/RTDS/RTDS-crypto-prices.md
- RTDS コメント:https://docs.polymarket.com/developers/RTDS/RTDS-comments.md
スポーツ WebSocket
WebSocket 経由でスポーツの結果をリアルタイムに取得します。
- 概要:https://docs.polymarket.com/developers/sports-websocket/overview.md
- クイックスタート:https://docs.polymarket.com/developers/sports-websocket/quickstart.md
- メッセージ形式:https://docs.polymarket.com/developers/sports-websocket/message-format.md
データモデル
イベント → マーケット → トークンの階層
Event (e.g., "Who will win the 2024 election?")
├── Market 1 (e.g., "Will Candidate A win?")
│ ├── Token: Yes (token_id: "abc...") price: 0.65
│ └── Token: No (token_id: "def...") price: 0.35
├── Market 2 (e.g., "Will Candidate B win?")
│ ├── Token: Yes (token_id: "ghi...") price: 0.30
│ └── Token: No (token_id: "jkl...") price: 0.70
└── ...
- 価格は暗黙の確率(0.00~1.00)です。「Yes」と「No」の価格の合計は約 1 ドルになります。
- Gamma API の
clobTokenIdsは、取引に必要な CLOB トークン ID に対応します。 outcomesとoutcomePricesの配列は 1 対 1 で対応します。
ネガティブリスクイベント
「Yes」として解決できる結果が 1 つだけの複数結果イベントでは、ネガティブリスクアーキテクチャを使用します。どのマーケットの「No」シェアも、他のすべてのマーケットの「Yes」シェア 1 つに変換でき、資本効率を高められます。
- イベントの
negRisk: trueは、ネガティブリスクであることを示します。 negRiskAugmented: trueは、プレースホルダーの結果を後から明確化できることを意味します。
NegRisk の完全なドキュメント:https://docs.polymarket.com/developers/neg-risk/overview.md
よく使われるパターン
アクティブなイベントを取得する
curl -s "https://gamma-api.polymarket.com/events?active=true&closed=false&limit=10" | jq '.[].title'
マーケットを含むイベントの詳細を取得する
curl -s "https://gamma-api.polymarket.com/events?slug=will-bitcoin-reach-100k-by-2025" | jq '.[0] | {title, markets: [.markets[] | {question, outcomePrices, clobTokenIds}]}'
トークンの現在価格を取得する
curl -s "https://clob.polymarket.com/price?token_id=YOUR_TOKEN_ID&side=buy"
# Returns: { "price": "0.65" }
オーダーブックの深さを取得する
curl -s "https://clob.polymarket.com/book?token_id=YOUR_TOKEN_ID" | jq '{bids: .bids[:3], asks: .asks[:3]}'
中間価格を取得する
curl -s "https://clob.polymarket.com/midpoint?token_id=YOUR_TOKEN_ID"
# Returns: { "mid": "0.655" }
マーケットを検索する
curl -s "https://gamma-api.polymarket.com/search?query=bitcoin&limit=5" | jq '.markets[] | {question, slug}'
スポーツマーケットを見つける
# Get all supported sports leagues
curl -s "https://gamma-api.polymarket.com/sports" | jq '.'
# Get NBA events
curl -s "https://gamma-api.polymarket.com/events?series_id=10345&active=true&closed=false" | jq '.[].title'
ユーザーのポジションを取得する(Data API)
curl -s "https://data-api.polymarket.com/positions?user=0xYOUR_ADDRESS" | jq '.'
注文を発注する(TypeScript)
import { ClobClient, Side, OrderType } from "@polymarket/clob-client";
import { Wallet } from "ethers";
const client = new ClobClient(
"https://clob.polymarket.com", 137, signer, apiCreds, 2, funderAddress
);
const market = await client.getMarket("CONDITION_ID");
const response = await client.createAndPostOrder(
{ tokenID: "TOKEN_ID", price: 0.50, size: 10, side: Side.BUY },
{ tickSize: market.tickSize, negRisk: market.negRisk },
OrderType.GTC
);
console.log("Order ID:", response.orderID);
注文を発注する(Python)
from py_clob_client.client import ClobClient
from py_clob_client.clob_types import OrderArgs, OrderType
from py_clob_client.order_builder.constants import BUY
market = client.get_market("CONDITION_ID")
response = client.create_and_post_order(
OrderArgs(token_id="TOKEN_ID", price=0.50, size=10, side=BUY),
options={"tick_size": market["tickSize"], "neg_risk": market["negRisk"]},
order_type=OrderType.GTC,
)
print("Order ID:", response["orderID"])
CTF の運用(分割/統合/償還)
Conditional Token Framework を使用すると、USDCe とアウトカムトークンを相互に変換できます。
| 操作 | 説明 | 使用するタイミング |
|---|---|---|
| 分割 | USDCe → Yes トークン 1 枚 + No トークン 1 枚 | マーケットメイキング用の在庫を作成する |
| 統合 | Yes トークン 1 枚 + No トークン 1 枚 → USDCe | ポジションを解消し、担保を回収する |
| 償還 | 勝利したトークン → $1 USDCe | マーケットの結果確定後 |
- 分割:https://docs.polymarket.com/developers/CTF/split.md
- 統合:https://docs.polymarket.com/developers/CTF/merge.md
- 償還:https://docs.polymarket.com/developers/CTF/redeem.md
- デプロイとアドレス:https://docs.polymarket.com/developers/CTF/deployment-resources.md
Builder プログラム
Builder は、Polymarket をアプリに統合するサードパーティの開発者です。このプログラムでは、段階別のレート制限、報酬、収益機会を備えた、許可不要の統合が可能です。
Builder の認証情報は、ユーザーの認証情報とは別です。Builder の認証情報は注文にタグを付けてアトリビューションを行うために使用しますが、取引を行うには各ユーザーが自身の L2 認証情報を用意する必要があります。
マーケットメイキング
使用上のヒント
- まずは必ず
llms.txtを確認してください: https://docs.polymarket.com/llms.txt に、すべてのエンドポイントとガイドが掲載されています。 - 秘密鍵をハードコードしないでください — 環境変数または安全な鍵ストレージを使用してください。
- 価格は確率です(0.00~1.00)。勝利トークンは1ドルのUSDCeと引き換えられます。
- イベントをクエリする際は
active=true&closed=falseを使用してください。取引可能な進行中の市場だけを取得できます。 - トークンIDはGammaから取得します — Gamma APIからイベント/市場を取得し、CLOBのクエリと取引には
clobTokenIdsを使用してください。 negRiskを正しく設定してください — 複数の結果があるイベントではネガティブリスクを使用します。イベントのnegRiskフィールドを確認し、注文を作成する際に渡してください。- 手動署名ではなくSDKを使用してください — L1/L2署名は複雑です(EIP-712 + HMAC-SHA256)。TypeScriptとPythonのクライアントが処理します。
- アローワンスを設定してください — 注文を出す前に、ファンダーアドレスでExchangeコントラクトへのUSDCeアローワンス(購入時)または条件付きトークンのアローワンス(売却時)を設定する必要があります。
- RESTとWebSocketを組み合わせてください — 初期状態にはRESTを、リアルタイムの差分にはWebSocketを使用してください。
- レート制限を守ってください — スロットリングされた場合に備えてバックオフを実装してください。バッチエンドポイント(
/books、/prices)を使用すると、リクエスト数を減らせます。 - 署名タイプは重要です — 独立したウォレットにはタイプ
0(EOA)、ほとんどのPolymarket.comアカウントにはタイプ2(Gnosis Safe)を使用してください。タイプが正しくないと認証に失敗します。 - プロキシウォレットでは、ファンダーと署名者は異なります — ファンダーはプロキシウォレットのアドレス(polymarket.com/settingsで確認可能)であり、秘密鍵に対応するEOAアドレスではありません。
- 地域制限が適用されます — 取引の前にhttps://docs.polymarket.com/developers/CLOB/geoblock.mdを確認してください。
- 注文の有効性は継続的に監視されます — 残高、アローワンス、オンチェーンでのキャンセルがリアルタイムで確認されます。不正利用するとブラックリストに登録されます。
エラー処理
標準的なHTTPエラーコードが適用されます。APIは説明的なメッセージを含むJSON形式のエラーボディを返します。
- スロットリングされたリクエスト(レート制限):リクエストは直ちに拒否されるのではなく、遅延またはキューに追加されます。バックオフを実装してください。
- 認証エラー:秘密鍵、署名タイプ、ファンダーアドレス、API認証情報が一致していることを確認してください。
- 残高不足:既存の未決済注文による拘束分も含め、ファンダーアドレスに十分なUSDCeまたは条件付きトークンがあることを確認してください。
- 注文の拒否:市場ごとの最大注文サイズは
balance - sum(openOrderSize - fillAmount)です。 - 地域制限:制限対象地域からの取引はブロックされます。
解決
市場は、スマートコントラクトベースのオプティミスティックオラクルであるUMA Optimistic Oracleによって解決されます。解決結果はUMAプロトコルを通じて異議申し立てできます。
- 解決の概要:https://docs.polymarket.com/developers/resolution/UMA.md
- 市場の解決方法:https://docs.polymarket.com/polymarket-learn/markets/how-are-markets-resolved.md
- 市場への異議申し立て方法:https://docs.polymarket.com/polymarket-learn/markets/dispute.md
オンチェーンリソース
| リソース | URL |
|---|---|
| Exchangeコントラクトのソースコード | GitHub |
| Exchangeコントラクトのドキュメント | GitHub |
| セキュリティ監査(Chainsecurity) | 監査PDF |
| Negative Risk Adapter | Polygonscan |
| サブグラフの概要 | https://docs.polymarket.com/developers/subgraph/overview.md |
| ブロックチェーンデータのリソース | https://docs.polymarket.com/developers/builders/blockchain-data-resources.md |
| Polygon上のUSDC | 0x2791bca1f2de4661ed88a30c99a7a9449aa84174 |
変更履歴
CLOB、API、UI、モバイルアプリケーションの更新については、Polymarketの変更履歴を確認してください。