Skip to content

AgentPay 接口规格文档 (API Specifications) ​

1. x402 V2 HTTP 协议头规范 ​

AgentPay 在 HTTP 应用层采用标准的 402 Payment Required 状态码与结构化自定义头部进行无缝交互。

1.1 PAYMENT-REQUIRED 响应头 (服务端返回) ​

当客户端未携带有效支付凭据访问受保护的端点时,服务端返回 HTTP 402 并在 PAYMENT-REQUIRED 响应头中携带 Base64URL 编码的 JSON 挑战载荷。

JSON 载荷 Schema: ​

json
{
  "version": "2.0",
  "challengeId": "ch_01j7xyz...",
  "network": "eip155:421614",
  "asset": "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d",
  "assetSymbol": "USDC",
  "decimals": 6,
  "amount": "100000",
  "payee": "0xSellerPayoutAddress...",
  "scheme": "EIP-3009",
  "validAfter": 1729000000,
  "validBefore": 1729000300,
  "facilitatorUrl": "https://facilitator.agentpay.dev",
  "resourceUri": "/v1/market-data"
}

字段详细说明: ​

字段类型必填描述
versionstring是协议版本,固定为 "2.0"。
challengeIdstring是本次支付挑战的全局唯一 ID (UUIDv7/CUID)。
networkstring是CAIP-2 格式的区块链网络 ID(如 eip155:421614 为 Arbitrum Sepolia)。
assetstring是支付资产的合约地址(EVM 0x 格式)。
assetSymbolstring否代币资产标识符号,便于展示与审计(如 "USDC")。
decimalsnumber是资产精度位数(USDC 通常为 6)。
amountstring是需支付的最小基数单位(字符串避免精度丢失,如 "100000" 表示 0.1 USDC)。
payeestring是卖方收款的链上地址。
schemestring是支付签名模式:"EIP-3009" 或 "EIP-712"。
validAfternumber是授权生效的 Unix 时间戳(秒)。
validBeforenumber是授权失效的 Unix 时间戳(秒,通常有效窗口为 3~5 分钟)。
facilitatorUrlstring是推荐/指定的 Facilitator 清算节点地址。
resourceUristring否被保护的目标资源路径。

1.2 PAYMENT-SIGNATURE 请求头 (买方客户端重放) ​

买方 Agent 在完成策略评估并生成 EIP-712/3009 授权签名后,将凭据 Base64URL 编码后放入请求的 PAYMENT-SIGNATURE 头部。

JSON 载荷 Schema: ​

json
{
  "version": "2.0",
  "challengeId": "ch_01j7xyz...",
  "payer": "0xBuyerAgentAddress...",
  "scheme": "EIP-3009",
  "nonce": "0x4a9b...32bytesHex",
  "validAfter": 1729000000,
  "validBefore": 1729000300,
  "signature": "0xcompactSignatureHex..."
}

2. Facilitator 协调清算服务 REST API ​

2.1 校验支付授权接口 (Verify Authorization) ​

提供给卖方网关快速核验买方提交的签名、余额及 Nonce 是否合法,无需直接广播上链即可确权。

  • Endpoint: POST /v1/verify
  • Content-Type: application/json

请求参数 (Request Body): ​

json
{
  "challengeId": "ch_01j7xyz...",
  "authorization": {
    "network": "eip155:421614",
    "asset": "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d",
    "payer": "0xBuyerAgentAddress...",
    "payee": "0xSellerPayoutAddress...",
    "amount": "100000",
    "validAfter": 1729000000,
    "validBefore": 1729000300,
    "signature": "0xcompactSignature..."
  }
}

成功响应 (HTTP 200 OK): ​

json
{
  "valid": true,
  "verifiedPayer": "0xBuyerAgentAddress...",
  "verifiedAt": 1729000010,
  "verificationToken": "vtok_01j7abc..."
}

常见失败状态码: ​

  • 400 Bad Request:参数缺失或格式非法。
  • 401 Unauthorized:EIP-712 签名反解出的地址与 payer 不符。
  • 409 Conflict:该 nonce 已被提交或消费过(防重放触发)。
  • 410 Gone:当前时间已超过 validBefore 截止期。

2.2 提交链上结算接口 (Submit Settlement) ​

卖方在确认资源交付成功后,异步将签名提交至 Facilitator 请求上链。

  • Endpoint: POST /v1/settle
  • Content-Type: application/json

请求参数 (Request Body): ​

json
{
  "verificationToken": "vtok_01j7abc...",
  "authorization": { ... },
  "idempotencyKey": "idem_01j7def..."
}

响应 (HTTP 202 Accepted): ​

json
{
  "settlementId": "stl_01j7xyz...",
  "status": "SUBMITTED",
  "queuePosition": 4
}

实验性项目,未经独立安全审计,请勿用于生产资金。