跳转到主要内容
CLOB API 使用两级身份验证:**L1(私钥)**和 L2(API Key)。两种方式都可以通过 CLOB 客户端或 REST API 完成。

公开 vs 需要验证

公开(无需验证)

Gamma APIData API 和 CLOB 读取端点(订单簿、价格、价差)不需要身份验证。

需要验证(CLOB)

CLOB 交易端点(下单、撤单、心跳)需要全部 5 个 POLY_* L2 HTTP header。

两级身份验证模型

CLOB 使用两级身份验证:L1(私钥)和 L2(API Key)。两种方式都可以通过 CLOB 客户端或 REST API 完成。

L1 身份验证 - 私钥

L1 身份验证使用钱包的私钥签署一个 EIP-712 消息,用于请求头。它证明了对私钥的所有权和控制权。私钥始终由用户控制,所有交易活动都是非托管的。 用于:
  • 创建 API 凭证
  • 派生现有的 API 凭证
  • 本地签署和创建用户订单

L2 身份验证 - API 凭证

L2 使用从 L1 身份验证生成的 API 凭证(apiKey、secret、passphrase)。这些仅用于验证发送到 CLOB API 的请求。请求使用 HMAC-SHA256 签名。 用于:
  • 取消或获取用户的活跃订单
  • 检查用户的余额和授权
  • 提交用户签名的订单
即使使用了 L2 身份验证 header,创建用户订单的方法仍然需要用户签署订单 payload。

获取 API 凭证

在发送需要验证的请求之前,你需要使用 L1 身份验证获取 API 凭证。

使用 SDK - 推荐

**永远不要将私钥提交到版本控制系统。**请始终使用环境变量或安全的密钥管理系统。

使用 REST API

虽然我们强烈建议使用提供的客户端来处理签名和身份验证,但以下内容适用于选择不使用 PythonTypeScript 客户端的开发者。 创建 API 凭证
派生 API 凭证
所需的 L1 header: POLY_SIGNATURE 通过签署以下 EIP-712 结构生成:
参考实现: 响应:
L2 身份验证需要这三个值。

L2 身份验证 Header

所有交易端点需要以下 5 个 header: L2 的 POLY_SIGNATURE 是使用用户 API 凭证的 secret 值创建的 HMAC-SHA256 签名。参考实现可在 TypeScriptPython 客户端中找到。

CLOB 客户端 - L2

即使使用了 L2 身份验证 header,创建用户订单的方法仍然需要用户签署订单 payload。

签名类型和 Funder

初始化 L2 客户端时,你必须指定钱包的 signatureType 和持有资金的 funder 地址:
新 API 用户应使用 POLY_1271 配合 Deposit Wallet。现有的 Safe 和 Proxy 用户不受影响,可以继续使用原有的 funder 地址和签名类型。详见 Deposit Wallet 指南

安全最佳实践

将私钥存储在环境变量或安全的密钥管理系统中。永远不要将它们提交到版本控制系统。
永远不要在客户端代码中暴露你的 API secret。所有需要身份验证的请求都应从你的后端发起。

故障排除

你的钱包私钥不正确或格式不对。解决方案:
  • 验证你的私钥是有效的十六进制字符串(以 “0x” 开头)
  • 确保你使用的是目标地址对应的正确密钥
  • 检查密钥是否具有正确的权限
你提供的 nonce 已被用于创建 API key。解决方案:
  • 使用相同的 nonce 调用 deriveApiKey() 来获取现有凭证
  • 或使用不同的 nonce 调用 createApiKey()
你的 funder 地址不正确或与你的钱包不匹配。**解决方案:**在 polymarket.com/settings 查看你的 Polymarket 个人资料地址。如果地址不存在或用户从未登录过 Polymarket.com,请先部署地址,然后再创建 L2 身份验证。
很遗憾,没有 nonce 就无法恢复丢失的 API 凭证。你需要创建新的凭证:

下一步

下你的第一笔订单

了解如何创建和提交订单。

地区限制

按地区检查交易可用性。