认证与签名
API 权限
创建 API Key 时,需要根据使用场景配置对应权限。
所有
GET 操作属于读请求;下单、撤单、改单及其他非 GET 操作属于写请求。
使用时需要注意:
- PerpDEX 目前不支持 Broker 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: