跳转到主要内容
X402 让您通过钱包认证并维护预付的 USDC 余额来使用 Venice 的付费 API 路由。无需 API 密钥或账户。签署一条消息、在 Base 或 Solana 上充值,即可调用任何支持的路由。

钱包认证

在 SIGN-IN-WITH-X 头中使用已签名的 Sign-In-With-X 负载进行身份验证。

使用 USDC 付款

使用 Base 或 Solana 上的 USDC 维护可消费余额。

DIEM 优先

如果钱包链接到有 DIEM 余额的 Venice 账户,会优先消费 DIEM。

什么是 X402?

X402 是一个开放的支付标准,让应用程序和 agent 可以使用加密货币以编程方式支付服务。Venice 实现了 X402,使钱包可以在 Base 或 Solana 上直接使用 USDC 进行推理认证和支付。

前置条件

  • 在 Base 或 Solana 上的钱包
  • 所选链的 gas 原生代币,例如 Base 上的 ETH 或 Solana 上的 SOL
  • 所选链上的 USDC(或来自已链接 Venice 账户的现有 DIEM 支持余额)
考虑为自动化使用专用钱包,而不是您的主资金钱包。

快速开始

venice-x402-client SDK 提供了钱包认证、充值和余额跟踪的辅助函数。
客户端为每个请求生成新的 Sign-In-With-X 头,并自动从 X-Balance-Remaining 响应头跟踪余额。

与 OpenAI 兼容工具配合使用

如果您使用接受自定义 fetch 的工具,使用 createAuthFetch 为任何请求添加钱包认证:

可用辅助函数

SDK 包括最常见 Venice x402 路由的一流辅助函数。对于未覆盖的内容,直接使用 request() 或 createAuthFetch()。

手动流程

如果您不使用 SDK 或需要了解底层协议,下面是逐步流程。对于新钱包,假设您需要先充值,除非它已经有可消费的 DIEM 余额。

步骤 1:创建 SIGN-IN-WITH-X 头

Venice 要求在 SIGN-IN-WITH-X 头中提供 x402 sign-in-with-x 证明:一个 Base64 编码的 JSON,包含已签名消息的字段(domain、address、uri、version、chainId、type、nonce、issuedAt,以及可选的 expirationTime、notBefore、statement 和 resources)和 signature。Venice 会根据这些字段重建已签名消息。EVM 钱包(包括智能合约钱包)在 Base 上签署 EIP-4361 SIWE 消息,并将 type 设为 eip191。Solana 钱包使用 Ed25519 签署 Solana 登录消息。在 JSON 中,chainId 是 CAIP-2 标识符(eip155:8453),而已签名消息中的 Chain ID 行使用不带前缀的引用值(8453)。旧版头名称 X-Sign-In-With-X 仍然被接受,直接发送已签名 message 本身的旧版 payload 也同样被接受。 每条已签名消息只能使用一次。请为每个请求使用新的 nonce 签署一条新消息,nonce 可以是您自己生成的,也可以是最近一次 402 质询中的 nonce,并在其 issuedAt 时间后 5 分钟内发送。重复使用消息会返回 401(nonce 已被使用),签发时间超过 5 分钟的消息也会返回 401。 对于 Solana,将 chainId 设置为 solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp,在编码的 JSON 负载中包含 type: "ed25519",并以 base58 或 base64 提供 Ed25519 签名。已签名消息以 <domain> wants you to sign in with your Solana account: 开头,后跟钱包地址和标准 URI、Version、Chain ID、Nonce、Issued At 和可选的 Expiration Time 字段。
请在每个请求之前立即调用 createSiwxHeader()。在下方的 curl 示例中,每次调用的 X402_AUTH 都必须是新签署的头。

步骤 2:检查余额

在发出付费请求之前,验证钱包是否有可消费余额:
响应包括:
  • canConsume:钱包是否可以发出付费请求
  • balanceUsd:当前可消费余额
  • minimumTopUpUsd 和 suggestedTopUpUsd:充值指引
  • diemBalanceUsd:DIEM 支持余额(如有)
walletAddress 路径参数接受 EVM 地址(0x...)或 Solana base58 地址。

步骤 3:充值

使用 Base 或 Solana 上的 USDC 充值:
首次调用返回 402 Payment Required,带有包含 accepts 数组的 PAYMENT-REQUIRED 头。每个条目描述一个接受的支付选项,包括 network、asset、payTo 和 amount。选择您要支付的 Base 或 Solana 选项,使用这些精确详情构建 PAYMENT-SIGNATURE 头,并重试相同的路由。旧版 X-402-Payment 和 X-PAYMENT 头名称仍然可用。
直接向 payTo 地址发送 USDC 不会为您的余额充值。只有当已签名的 PAYMENT-SIGNATURE 通过 POST /x402/top-up 完成结算时,才会添加额度。仅支持 Base 和 Solana,因此在任何其他链(包括以太坊主网)上发送的 USDC 都不会入账。余额和交易路由读取的是 Venice 账本而非链上数据,因此在普通转账之后它们不会显示任何内容。

为 Base 构建 PAYMENT-SIGNATURE 头

以下脚本在 Base 上创建已签名的 x402 支付并发送充值请求。需要 x402 和 viem npm 包。
在生产环境中,使用最新的 PAYMENT-REQUIRED / accepts 响应作为权威来源,而不是硬编码这些值。对于 Solana 充值,从 accepts 中返回的 Solana 条目构建支付。Solana 条目使用 network: "solana"、USDC mint 作为 asset,并可能包括网络特定元数据,如 extra.feePayer。

步骤 4:发出请求

一旦钱包有可消费余额,使用新签署的 SIGN-IN-WITH-X 头调用任何支持的端点:
成功响应可能包含 X-Balance-Remaining 头。

步骤 5:检查交易(可选)

查看钱包的交易历史:
账本包括 TOP_UP、CHARGE 和 REFUND 等条目。 walletAddress 路径参数接受 EVM 地址(0x...)或 Solana base58 地址。

支持的路由

以下公开付费 Venice 路由当前支持 x402 钱包认证。

充值路由

仅钱包路由

这些路由使用 SIGN-IN-WITH-X 进行身份识别,但不收取余额。

错误


对于 agent

流程相同。将私钥存储在环境变量或机密管理器中,为每个请求签署一条新的 Sign-In-With-X 消息,并在请求之前检查余额,以避免不必要的 402 往返。

x402 客户端 SDK

官方 Venice x402 Node.js/TypeScript 客户端。

API 定价

查看模型定价以及 Venice 如何收取使用费用。

Chat Completions

用于基于钱包访问的常见付费路由。

API 规范

参考文档和原始规范访问。