本教程用一个最小的 API 请求说明 Ace Data Cloud X402 的完整流程。目标不是先写复杂代码,而是先看懂:为什么第一次请求会返回 402、accepts 里有什么、X-Payment 又是怎样让同一个 API 请求变成已支付请求的。
准备工作
你需要准备:
| 项目 | 说明 |
|---|---|
| 钱包 | 一个支持目标网络的钱包。Base / SKALE 使用 EVM 钱包,Solana 使用 Solana 钱包。 |
| USDC | 钱包中需要有足够 USDC。实际金额以 402 响应里的 maxAmountRequired 为准。 |
| 开发环境 | TypeScript 推荐 Node.js 18+;Python 推荐 Python 3.10+。 |
| SDK | 推荐使用官方 SDK,不建议手写签名细节。 |
X402 调用 Ace Data Cloud API 时不需要 API Token。SDK 第一次请求不带 Authorization,Gateway 会返回 402 Payment Required 和支付要求;SDK 签名后自动重试。
安装 SDK
源码和包地址:
- SDK 仓库:https://github.com/AceDataCloud/SDK
- X402 Client 仓库:https://github.com/AceDataCloud/X402Client
- npm:
@acedatacloud/sdk、@acedatacloud/x402-client - PyPI:
acedatacloud、acedatacloud-x402
TypeScript:
1 |
npm install @acedatacloud/sdk @acedatacloud/x402-client ethers |
Python:
1 |
pip install acedatacloud acedatacloud-x402 |
如果要使用 Solana,还需要安装对应依赖:
1 |
npm install @solana/web3.js |
Python 版本的 Solana signer 依赖已经包含在 acedatacloud-x402 中。
干净临时环境的安装和导入检查输出:
1 |
@acedatacloud/sdk@2026.504.2 |
结果说明:
- npm 包和 PyPI 包都是真实发布包,不是文档里的占位名称。
acedatacloud-x402[cli]会安装 CLI,approve-permit2子命令可用于upto场景的 Permit2 授权。
第一次请求会返回 402
你可以先用 curl 看看未支付请求返回什么。下面示例不会产生扣费,因为它没有携带 X-Payment:
1 |
curl -sS -X POST https://api.acedata.cloud/openai/chat/completions \ |
返回体会包含 accepts 数组,常见结构如下:
1 |
{ |
生产 API 未支付请求的程序输出摘要如下:
1 |
status=402 |
结果说明:
- 第一次请求没有携带
Authorization或X-Payment,所以返回 HTTP 402,不会产生扣费。 accepts是本次请求唯一可信的签名依据,包含可选网络、scheme、金额上限、收款地址和资产地址。- 这次
gpt-4o-mini最小聊天请求的上限金额是95215atomic USDC,也就是0.095215USDC。 - 每次请求都应该读取当次 402 响应,不要把示例金额硬编码进业务代码。
字段含义:
| 字段 | 说明 |
|---|---|
scheme |
支付方案。exact 表示固定金额,upto 表示授权上限、按实际用量结算。 |
network |
支付网络,例如 base、skale、solana。 |
maxAmountRequired |
最大支付金额,单位是 USDC atomic units,95215 表示 0.095215 USDC。 |
payTo |
收款地址。 |
asset |
USDC 合约地址或 Solana mint 地址。 |
extra |
签名需要的链 ID、EIP-712 domain、Permit2 地址等扩展信息。 |
用 SDK 完成支付重试
下面是最小 TypeScript 示例。它指定 network: 'skale',handler 会从本次 402 响应中选择 SKALE 的 payment requirement;实际金额和收款地址仍以 accepts 为准:
1 |
import { Wallet } from 'ethers'; |
同一链路用 TypeScript SDK 的程序运行结果:
1 |
payer 0xd0479FA9FD8C678303d477433d24C15e3723CC1C |
结果说明:
content ADC_TS_SDK_X402_OK是上游模型按提示词返回的固定字符串,说明付费重试后请求真实进入了模型 API。payer是本地签名钱包地址,私钥没有发送给 Ace Data Cloud。- SDK 完成了 402 解析、
X-Payment签名和原请求重试;业务代码仍按普通 SDK 调用方式写。
这段代码背后发生了四步:
- SDK 发送一次普通 API 请求,不带
Authorization。 - Gateway 返回
402 Payment Required和accepts。 createX402PaymentHandler选择network = 'skale'的 payment requirement 并签出X-Payment。- SDK 用同一个请求体重试,Gateway 调用 Facilitator 验证并结算后放行到上游 API。
查看公开发现文档
Ace Data Cloud 提供 X402 discovery 文档:
1 |
curl https://platform.acedata.cloud/.well-known/x402 |
返回结构为:
1 |
{ |
Discovery 接口程序输出:
1 |
discovery_version 1 |
结果说明:
has_chat True表示 discovery 文档中包含 OpenAI-compatible chat 资源。- discovery 文档用于发现资源;实际支付金额仍以 API 请求返回的 402
accepts为准。
注意 discovery 文档位于 platform.acedata.cloud,而实际 API 请求位于 api.acedata.cloud。
查看 Facilitator 支持能力
Ace Data Cloud 的生产 Facilitator 地址为:
1 |
https://facilitator.acedata.cloud |
可以查看它支持哪些网络和 scheme:
1 |
curl https://facilitator.acedata.cloud/supported |
返回的 kinds 会列出 Facilitator 支持的能力,例如 base/exact、base/upto、skale/exact、skale/upto、solana/exact,以及测试网络能力。实际调用时仍以 API 返回的 accepts 为准。
Facilitator /supported 程序输出:
1 |
kinds ['base/exact', 'base/upto', 'skale/exact', 'skale/upto', 'solana/exact', 'solana-devnet/exact'] |
结果说明:
/supported说明 Facilitator 具备这些网络和 scheme 的验证、结算能力。- 具体 API 是否允许某个网络,仍以该 API 的 402
accepts为准。