Skip to main content
Polymarket 2026 年 9 月上線的永續合約(Perps)用的是一套獨立的 API,和事件合約的 CLOB、Gamma 完全分開:不同的網域、不同的鑑權方式、不同的抵押品(pUSD)。這篇把公開行情、鑑權、下單、帳戶查詢和 WebSocket 一次講完,所有端點都是 2026 年 10 月實測可用的。 如果你還不熟悉永續合約的槓桿、資金費率和強平規則,先看永續合約教程,這篇只講程式接入。
基礎網址:REST https://api.perpetuals.polymarket.com/v1,WebSocket wss://ws.perpetuals.polymarket.com/v1/ws。公開行情不需要任何 key,帳戶和交易操作需要代理簽名。
地區限制:美國、加拿大、古巴、伊朗、北韓、敘利亞、克里米亞、頓內茨克、盧甘斯克不允許下單。官方文件明確寫了 builder 有責任在送單前確認用戶所在地,自己寫機器人或給別人用的工具都要注意。

公開行情端點(免鑑權)

時間戳全部是 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. 設定槓桿和保證金模式

對應的 REST 端點是 PATCH /v1/trade/leverage,欄位 iid、lev、cross。兩個限制要記住:槓桿預設是該市場的最高值,不改就是滿槓桿;切換逐倉和全倉時,該市場必須沒有持倉也沒有掛單。

4. 下單、撤單、平倉

直接打 REST 的話,下單是 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 的限流規則與退避策略