基礎網址:REST
https://api.perpetuals.polymarket.com/v1,WebSocket wss://ws.perpetuals.polymarket.com/v1/ws。公開行情不需要任何 key,帳戶和交易操作需要代理簽名。公開行情端點(免鑑權)
時間戳全部是 Unix 毫秒。先拿合約清單,拿到
instrument_id 再查其他東西:
合約清單欄位怎麼讀
instruments 回傳的每個物件裡最常用的欄位:
用 Python 把清單整理成表格,順便算出每個市場的維持保證金率(MMR = 0.5 ÷ 最高槓桿):
鑑權:代理簽名怎麼運作
Perps 的鑑權分三層,理解了這個,SDK 在做什麼就一目了然:
流程是:本地生成代理金鑰對 → 用主錢包對 EIP-712 的
CreateProxy 簽名(domain:name Polymarket、version 1、chainId 137)→ POST /v1/account/proxy → 拿到 secret。之後私有讀取用這兩個 header:
ts 和隨機 salt,而且要和 typed data 裡的值一致。本機時間和伺服器差太多會被拒,建議先打一次 GET /v1/info/time 對時。代理憑證預設一週有效,過期要重新建立。
主錢包私鑰只用來簽一次授權,之後可以離線保存。這是 Perps 比事件合約 CLOB 更安全的設計,交易機器人跑在伺服器上也只持有代理金鑰。
用官方 SDK 下第一筆單
官方 SDK 把上面的鑑權全包了:TypeScript 用@polymarket/client 搭 viem,Python 用 polymarket-client。下面四步走完就是一筆完整交易。
1. 建立 client 並打開 Perps session
session.credentials 可以存起來,下次用 openPerpsSession({ credentials }) 直接恢復,不用每次重新簽 CreateProxy。
2. 把 pUSD 轉入 Perps 帳戶
Perps 帳戶和事件合約帳戶是分開記帳的,要先從 Polymarket 錢包轉 pUSD 進去,最低 10 pUSD。SDK 裡是兩個呼叫:3. 設定槓桿和保證金模式
PATCH /v1/trade/leverage,欄位 iid、lev、cross。兩個限制要記住:槓桿預設是該市場的最高值,不改就是滿槓桿;切換逐倉和全倉時,該市場必須沒有持倉也沒有掛單。
4. 下單、撤單、平倉
POST /v1/trade/orders,請求體是一個 op,type 為 createOrders,單筆訂單欄位用縮寫:
整個
op 要先用 MessagePack 編碼、做 keccak256,再以 EIP-712 的 Op 類型簽名。這一段手寫很容易錯,除非有特殊需求,用 SDK。
訂單狀態一覽
自成交保護預設開啟且不能關,模式是取消掛單方(CancelMaker)。同一個人的多個帳戶如果被 Polymarket 歸為同一實體,互相成交也會被擋。
帳戶端點(需鑑權)
portfolio 裡每個持倉有 size(正數多、負數空)、entryPrice、liquidationPrice、leverage、cross、initialMargin、maintenanceMargin、unrealizedPnl、cumulativeFunding。寫風控用 liquidationPrice 和 margin.totalMaintenanceMargin 就夠。
提領用 POST /v1/account/withdraw,但要滿足保留規則:帳戶必須留下未平倉名目 10% 的抵押品,所以 withdrawable 常常小於可用來開倉的餘額。
WebSocket 即時行情
連上wss://ws.perpetuals.polymarket.com/v1/ws 後送訂閱訊息:
退訂把
req 改成 unsub。私有頻道(訂單、成交、帳戶狀態)要先送鑑權幀:
tickers 裡讀。想看資金費壓力怎麼累積,可以持續記錄 tickers 推送的即時溢價樣本,官方每 5 秒取樣一次。
手續費與強平怎麼算進程式裡
- 手續費按名目收:
abs(價格 × 數量) × 費率。新帳戶 Taker 0.04%、Maker 0.0125%,按近 30 日成交量分級,每天 UTC 重算。費率不要寫死,從instruments和帳戶fee_tier讀。 - 強平時每筆成交多收
liquidation_fee(0.5%)。 - 維持保證金率
MMR = 0.5 / max_leverage,看的是市場的最高槓桿,不是你設的槓桿。 - 送單前的保證金檢查用最壞情況名目:
max(|持倉 + 未成交買單|, |持倉 − 未成交賣單|)。掛了很多單的帳戶,明明餘額夠也可能被拒,原因在這。 - 風險分級
risk_tiers只影響開倉保證金,不影響維持保證金。要開大倉位,先把leverage調低。
常見問題
Q: 可以沙盒測試嗎? A: 目前沒有測試網。先用最小名目 10 美元、1x 到 2x 槓桿走一遍流程。 Q: 和事件合約 CLOB 的憑證通用嗎? A: 不通用。CLOB 用的是 API key + L2 簽名,Perps 用代理簽名,網域也不同。兩邊可以在同一個程式裡並行,各自鑑權。 Q: 帳戶是綁在哪個地址上? A: 綁在簽createProxy 的 EOA 基礎地址,不是 Safe 智能錢包地址。查餘額、找客服都報 EOA 地址。
Q: 一個帳戶能開幾個代理?
A: 可以開多個,用 label 區分(例如一個做市、一個風控)。撤銷用帳戶管理端點。
Q: 有速率限制嗎?
A: 文件沒有公布具體數字,但強平時的平倉單有按帳戶的速率限制。自己的程式建議加退避重試,看到 order_in_flight 等一下再送。
程式跑起來之前先去網頁版開一筆小單,看一眼強平價怎麼跳。前往 Polymarket 開戶入金後,永續合約和事件合約共用同一筆 pUSD。
延伸閱讀
永續合約教程(網頁版操作)
槓桿、資金費率、強平規則,先懂規則再寫程式
API 開發者總覽
CLOB、Gamma、Data API 與 Perps API 怎麼分工
事件合約第一筆訂單
py-clob-client 與 TypeScript SDK 下單範例
速率限制
各 API 的限流規則與退避策略