Skip to main content
本教程用一个最小的 API 请求说明 Ace Data Cloud X402 的完整流程。目标不是先写复杂代码,而是先看懂:为什么第一次请求会返回 402、accepts 里有什么、PAYMENT-SIGNATURE 又是怎样让同一个 API 请求变成已支付请求的。

准备工作

你需要准备: X402 调用 Ace Data Cloud API 时不需要 API Token。SDK 第一次请求不带 Authorization,Gateway 会返回 402 Payment Required 和支付要求;SDK 签名后自动重试。

安装 SDK

源码和包地址: TypeScript:
Python:
如果要使用 Solana,还需要安装对应依赖:
Python 版本的 Solana signer 依赖已经包含在 acedatacloud-x402 中。 干净临时环境的安装和导入检查输出:
结果说明:
  • npm 包和 PyPI 包都是真实发布包,不是文档里的占位名称。
  • acedatacloud-x402[cli] 会安装 CLI,approve-permit2 子命令可用于 upto 场景的 Permit2 授权。

第一次请求会返回 402

你可以先用 curl 看看未支付请求返回什么。下面示例不会产生扣费,因为它没有携带 PAYMENT-SIGNATURE:
返回体会包含 accepts 数组,常见结构如下:
同一份挑战内容也会以 base64 形式放在 PAYMENT-REQUIRED 响应头中,便于客户端不解析 body 就读取支付要求。 生产 API 未支付请求的程序输出摘要如下:
结果说明:
  • 第一次请求没有携带 Authorization 或 PAYMENT-SIGNATURE,所以返回 HTTP 402,不会产生扣费。
  • accepts 是本次请求唯一可信的签名依据,包含可选网络、scheme、金额上限、收款地址和资产地址。
  • network 是 CAIP-2 标识,客户端选网时必须按 CAIP-2 字符串匹配。
  • 这次 gpt-4o-mini 最小聊天请求的上限金额是 95215 atomic USDC,也就是 0.095215 USDC。
  • 每次请求都应该读取当次 402 响应,不要把示例金额硬编码进业务代码。
字段含义:

用 SDK 完成支付重试

下面是最小 TypeScript 示例。它指定 network: 'skale',handler 会从本次 402 响应中选择 SKALE 的 payment requirement;实际金额和收款地址仍以 accepts 为准:
同一链路用 TypeScript SDK 的程序运行结果:
结果说明:
  • content ADC_TS_SDK_X402_OK 是模型按提示词返回的固定字符串,说明付费重试后请求真实进入了模型 API。
  • payer 是本地签名钱包地址,私钥没有发送给 Ace Data Cloud。
  • SDK 完成了 402 解析、PAYMENT-SIGNATURE 签名和原请求重试;业务代码仍按普通 SDK 调用方式写。
这段代码背后发生了四步:
  1. SDK 发送一次普通 API 请求,不带 Authorization。
  2. Gateway 返回 402 Payment Required 和 accepts。
  3. createX402PaymentHandler 选择 network = 'skale' 的 payment requirement 并签出 PAYMENT-SIGNATURE。
  4. SDK 用同一个请求体重试,Gateway 调用 Facilitator 验证并结算后放行到目标 API。

查看 Facilitator 支持能力

X402 API 不依赖资源目录。客户端直接调用已知 API,并以该请求实时返回的 402 Payment Required 和 accepts 作为唯一价格与签名依据。 Facilitator 的能力声明位于:
它只描述 /supported、/verify、/settle 和当前启用的支付网络,不列出 API 资源。 Ace Data Cloud 的生产 Facilitator 地址为:
可以查看它支持哪些网络和 scheme:
返回的 kinds 会列出 Facilitator 支持的网络和 scheme。实际调用时仍以 API 返回的 accepts 为准。 Facilitator /supported 输出:
结果说明:
  • /supported 说明 Facilitator 具备这些网络和 scheme 的验证、结算能力。
  • Base、SKALE 和 Solana 都支持 exact;upto 目前只在 Base 上提供。
  • 具体 API 是否允许某个网络,仍以该 API 的 402 accepts 为准。