按次请求付费 (x402)
持有加密钱包的代理可以使用 UberLLM,无需账户,也无需 API key。它按每次请求付费,使用 Base 上的 USDC,并遵循开放的 x402 支付标准(版本 2)。
这适用于聊天功能:POST /v1/chat/completions 和 POST /v1/messages。图像、视频、音乐和语音功能仍需要 API key。
要检查按次请求付费功能是否已开启,请打开 api.uberllm.dev/x402。它会显示网络、USDC 合约以及收款钱包。如果它返回“404 not found”,则按次请求付费功能已关闭。请改用 API key(快速入门)。
工作原理
- 发送不带密钥的请求。响应是 HTTP 402 Payment Required。
PAYMENT-REQUIREDheader(base64 JSON,也在响应体中)说明了该请求最多可以花费多少,以及接受哪些支付方式。 - 您的钱包签署其中一个选项。再次发送相同的请求,并在
PAYMENT-SIGNATUREheader 中附带签名。 - UberLLM 检查支付,然后响应,并收取费用。一个正常的(非 streaming)响应会在
PAYMENT-RESPONSEheader 中附带收据,其中包含链上交易。
每个签名支付一次请求。要进行另一次请求,请再次签名。
您的费用
402 报价是请求可能产生的最高费用。这包括您的提示词加上 max_tokens 的输出,按请求可能采取的最昂贵的路径计算。设置 max_tokens 可以降低报价。
有两种支付方式:
upto(优先推荐)。您签署的报价将作为费用上限。收到回复后,只收取实际费用,并向上取整到美元的百万分之一。首次支付需要一次性 USDC 授权。如果支付服务支持,该授权无需 gas 费。exact。将收取全部报价金额,即使请求实际花费较少。不予退款。仅当您的钱包无法支持upto时,才选择exact。
您支付的金额绝不会超过您签署的金额。如果未提供任何服务(例如没有可用模型,或在回复开始前出现错误),则不收取任何费用。
尝试使用 curl
curl -i https://api.uberllm.dev/v1/chat/completions \
-H 'content-type: application/json' \
-d '{"model":"deepseek/deepseek-v4-flash","max_tokens":200,"messages":[{"role":"user","content":"Hello"}]}'
# HTTP/1.1 402 Payment Required
# PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6Mi…
#
# {"x402Version":2,"error":"PAYMENT-SIGNATURE header is required",
# "accepts":[{"scheme":"upto","network":"eip155:8453","amount":"…","asset":"0x8335…2913","payTo":"0x…",…},
# {"scheme":"exact",…}]}
amount 的单位是 USDC base units:1,000,000 是 $1。使用您的钱包签署 accepts 的一个条目。然后使用 -H 'PAYMENT-SIGNATURE: <base64 payment>' 再次发送相同的请求。
从代码
一个 x402 客户端库为您处理 402, 签名和重试。在 JavaScript 中:
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const account = privateKeyToAccount(process.env.WALLET_PRIVATE_KEY as `0x${string}`);
const pay = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(account) }],
});
const res = await pay("https://api.uberllm.dev/v1/chat/completions", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({
model: "deepseek/deepseek-v4-flash",
max_tokens: 200,
messages: [{ role: "user", content: "Hello" }],
}),
});
console.log(await res.json());
为了只支付实际成本,还需要从 @x402/evm/upto/client 注册 UptoEvmScheme。Go 和 Python 的库列在 x402.org。
须知
- 流式传输正常工作。 使用
"stream": true,答案会像往常一样流式传输。付款在流式传输结束时收取。没有PAYMENT-RESPONSEheader,因为 header 已经发送。您的钱包会显示转账记录。 - 一个钱包,一次最多 4 个付费请求。
- 如果答案发送后无法收取付款(例如,钱包在此期间被清空),正常答案将被保留,您会收到
402 payment_failed。该钱包随后 24 小时内无法支付。 - 版本 1 x402(
X-PAYMENTheader)不被接受。请使用版本 2 客户端。 - 请求量大?预付费账户更简单,并且没有 on-chain 步骤: 注册。
错误
| HTTP | 含义 | 操作 |
|---|---|---|
402 + PAYMENT-REQUIRED |
未付款,或付款被拒绝 (error 字段说明了原因) |
签署 accepts 中的一个,然后重试 |
402 payment_failed |
答案已准备好,但无法收取款项 | 为钱包充值;该钱包可在 24 小时后再次付款 |
400 invalid_payment |
PAYMENT-SIGNATURE 不是 base64 x402 v2 付款 |
修复客户端 |
429 rate_limited |
4 个已付款请求已从此钱包运行 | 等待其中一个完成 |
503 service_unavailable |
付款服务暂时中断 | 一分钟后重试 |