新着どんなエージェントもUberLLMにつなぐだけ。1つのキーで全モデル、定価以下で。
UberLLM

リクエストごとの支払い (x402)

暗号資産ウォレットを持つエージェントは、アカウントも API キーも不要で UberLLM を利用できます。各リクエストの支払いは、オープンな x402 支払い標準 (バージョン 2) を使用して、Base 上の USDC で行われます。

これはチャットに適用されます: POST /v1/chat/completions および POST /v1/messages。画像、動画、音楽、音声には引き続きキーが必要です。

リクエストごとの支払いが有効になっているか確認するには、api.uberllm.dev/x402 を開いてください。ネットワーク、USDC コントラクト、支払いを受け取るウォレットが表示されます。「404 not found」と表示された場合、リクエストごとの支払いは無効です。代わりにキーを使用してください (クイックスタート)。

仕組み

  1. キーなしでリクエストを送信します。応答はHTTP 402 Payment Requiredです。PAYMENT-REQUIRED ヘッダーには (base64 JSON 形式で、ボディにも含まれています)、リクエストの最大費用と、利用可能な支払い方法が記載されています。
  2. ウォレットでいずれかのオプションに署名します。同じリクエストを再度、PAYMENT-SIGNATURE ヘッダーに署名を含めて送信します。
  3. UberLLM は支払いを確認し、応答を返し、その後支払いを回収します。通常の (ストリーミングではない) 応答には、PAYMENT-RESPONSE ヘッダーにレシートが含まれており、これにはオンチェーン取引が含まれます。

各署名は1つのリクエストの支払いとなります。別のリクエストを行うには、再度署名してください。

お支払いについて

402 は、リクエストにかかる最大費用を見積もります。これは、お客様のプロンプトと max_tokens の出力、そしてリクエストがたどる可能性のある最も高価なルートに基づいています。見積もりを低く抑えるには、max_tokens を設定してください。

お支払い方法は2種類あります。

  • upto (最初に提示されます)。お客様は見積もりを上限として承認します。回答後、実際の費用のみが、1ドルの100万分の1の位に切り上げて請求されます。初回のお支払いには、1回限りのUSDC承認が必要です。支払いサービスが対応している場合、その承認にガスは不要です。
  • 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ベース単位です: 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-RESPONSEヘッダーはありません。ウォレットに送金が表示されます。
  • 1つのウォレットにつき、同時に最大4件の有料リクエスト。
  • 回答後に支払いを回収できない場合(例えば、その間にウォレットが空になった場合など)、通常の回答は保留され、402 payment_failedを受け取ります。そのウォレットはその後24時間支払いができません。
  • バージョン1 x402(X-PAYMENTヘッダー)は受け付けられません。バージョン2のクライアントを使用してください。
  • リクエストが多いですか?プリペイドクレジット付きのアカウントはよりシンプルで、オンチェーンのステップがありません:サインアップ。

エラー

HTTP 意味 対応
402 + PAYMENT-REQUIRED 支払いがありません、または支払いが拒否されました (errorフィールドに理由が記載されています) acceptsのいずれかに署名し、再試行してください
402 payment_failed 回答は準備できましたが、支払いを回収できませんでした ウォレットに資金を補充してください。そのウォレットは24時間後に再度支払うことができます
400 invalid_payment PAYMENT-SIGNATUREはbase64 x402 v2の支払いではありません クライアントを修正してください
429 rate_limited このウォレットから4件の支払い済みリクエストがすでに実行中です いずれか1つが完了するまでお待ちください
503 service_unavailable 支払いサービスが一時的に停止しています 1分後に再試行してください