accepts 裡有什麼、PAYMENT-SIGNATURE 又是怎樣讓同一個 API 請求變成已支付請求的。
準備工作
你需要準備:
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
acedatacloud-x402 中。
乾淨臨時環境的安裝和導入檢查輸出:
- npm 包和 PyPI 包都是真實發布包,不是文檔裡的佔位名稱。
acedatacloud-x402[cli]會安裝 CLI,approve-permit2子命令可用於upto場景的 Permit2 授權。
第一次請求會返回 402
你可以先用curl 看看未支付請求返回什麼。下面示例不會產生扣費,因為它沒有攜帶 PAYMENT-SIGNATURE:
accepts 陣列,常見結構如下:
PAYMENT-REQUIRED 響應頭中,便於客戶端不解析 body 就讀取支付要求。
生產 API 未支付請求的程序輸出摘要如下:
- 第一次請求沒有攜帶
Authorization或PAYMENT-SIGNATURE,所以返回 HTTP 402,不會產生扣費。 accepts是本次請求唯一可信的簽名依據,包含可選網路、scheme、金額上限、收款地址和資產地址。network是 CAIP-2 標識,客戶端選網時必須按 CAIP-2 字符串匹配。- 這次
gpt-4o-mini最小聊天請求的上限金額是95215atomic USDC,也就是0.095215USDC。 - 每次請求都應該讀取當次 402 響應,不要把示例金額硬編碼進業務代碼。
用 SDK 完成支付重試
下面是最小 TypeScript 示例。它指定network: 'skale',handler 會從本次 402 響應中選擇 SKALE 的 payment requirement;實際金額和收款地址仍以 accepts 為準:
content ADC_TS_SDK_X402_OK是模型按提示詞返回的固定字符串,說明付費重試後請求真實進入了模型 API。payer是本地簽名錢包地址,私鑰沒有發送給 Ace Data Cloud。- SDK 完成了 402 解析、
PAYMENT-SIGNATURE簽名和原請求重試;業務代碼仍按普通 SDK 調用方式寫。
- SDK 發送一次普通 API 請求,不帶
Authorization。 - Gateway 返回
402 Payment Required和accepts。 createX402PaymentHandler選擇network = 'skale'的 payment requirement 並簽出PAYMENT-SIGNATURE。- SDK 用同一個請求體重試,Gateway 調用 Facilitator 驗證並結算後放行到目標 API。
查看 Facilitator 支持能力
X402 API 不依賴資源目錄。客戶端直接調用已知 API,並以該請求實時返回的402 Payment Required 和 accepts 作為唯一價格與簽名依據。
Facilitator 的能力聲明位於:
/supported、/verify、/settle 和當前啟用的支付網絡,不列出 API 資源。
Ace Data Cloud 的生產 Facilitator 地址為:
kinds 會列出 Facilitator 支持的網絡和 scheme。實際調用時仍以 API 返回的 accepts 為準。
Facilitator /supported 輸出:
/supported說明 Facilitator 具備這些網絡和 scheme 的驗證、結算能力。- Base、SKALE 和 Solana 都支持
exact;upto目前只在 Base 上提供。 - 具體 API 是否允許某個網絡,仍以該 API 的 402
accepts為準。

