認證與簽名
API 權限
建立 API Key 時,需要根據使用場景設定對應權限。
所有
GET 操作屬於讀請求;下單、撤單、改單及其他非 GET 操作屬於寫請求。
使用時需要注意:
- PerpDEX API 使用獨立的 API Key 進行服務端呼叫與認證。
- 交易類介面需要 API Key 具備對應的讀寫權限。
- 建議為 API Key 設定 IP 白名單,減少金鑰洩露後的風險。
- API Secret 僅用於本地生成簽名,不應發送給服務端,也不應寫入前端程式碼。
API 簽名請求要求
呼叫需要認證的介面時,請按以下步驟構造請求:- 建立 API Key,並確認已設定正確權限。
- Header
KEY設定為 API Key。 - Header
Timestamp設定為目前 Unix 秒級時間戳,與伺服器時間差不得超過60秒。 - 根據目前請求生成簽名,並將結果寫入 Header
SIGN。 - 如果 API Key 設定了 IP 白名單,請確保呼叫伺服器 IP 已加入白名單。
API 簽名字串生成
簽名原文按以下順序拼接,每個部分之間使用換行符\n:
Request Method
請求方法必須使用大寫,例如:Request URL
只包含請求 Path,不包含協議、域名和端口,並包含/api/v1 前綴。
例如:
Query String
使用請求 URL 中實際發送的 Query String,並保持參數順序一致,不重新排序。 例如:Request Payload
對實際發送的 Request Body 原文執行SHA512,再取十六進制結果。
沒有 Request Body 時,對空字串進行 SHA512,其結果為:
Timestamp
使用與 HeaderTimestamp 完全一致的值,例如:
GET 請求籤名示例
假設請求:- 第一行:Request Method
- 第二行:Request URL
- 第三行:Query String
- 第四行:空 Request Body 的 SHA512
- 第五行:Timestamp
HMAC-SHA512,得到 SIGN。
POST 請求籤名注意事項
POST / PUT 等帶 Request Body 的介面,需要確保:- 用於計算 SHA512 的 Body 與實際發送 Body 完全一致。
Content-Type與介面要求一致,通常為application/json。- Query String 即使為空,也必須在簽名原文中保留對應的空行。
- 不要對已經拼接好的簽名字串額外做 URL Encode。
常見認證錯誤
WebSocket 認證與簽名
公開 WebSocket 頻道無需認證。訂閱訂單、使用者成交、持倉、餘額等私有頻道時,需要在請求中攜帶auth: