NeuVerbinde jeden Agenten mit UberLLM: ein Schlüssel, alle Modelle, zum Listenpreis oder günstiger.
UberLLM

Zahlung pro Anfrage (x402)

Ein Agent mit einer Krypto-Wallet kann UberLLM mit keinem Konto und keinem API key nutzen. Es zahlt für jede Anfrage in USDC auf Base, unter Verwendung des offenen x402 Zahlungsstandards (Version 2).

Dies funktioniert für Chat: POST /v1/chat/completions und POST /v1/messages. Bilder, Video, Musik und Sprache benötigen weiterhin einen key.

Um zu überprüfen, ob Pay-per-Request aktiviert ist, öffnen Sie api.uberllm.dev/x402. Es zeigt das Netzwerk, den USDC contract und die Wallet, die bezahlt wird. Wenn es "404 not found" antwortet, ist Pay-per-Request deaktiviert. Verwenden Sie stattdessen einen key (Quickstart).

So funktioniert's

  1. Senden Sie die Anfrage ohne Schlüssel. Die Antwort ist HTTP 402 Payment Required. Der PAYMENT-REQUIRED Header (base64 JSON, auch im Body) gibt an, wie viel die Anfrage höchstens kosten darf und welche Zahlungsmethoden akzeptiert werden.
  2. Ihre Wallet signiert eine dieser Optionen. Senden Sie dieselbe Anfrage erneut mit der Signatur im PAYMENT-SIGNATURE Header.
  3. UberLLM prüft die Zahlung, antwortet und zieht dann die Zahlung ein. Eine normale (nicht-streaming) Antwort enthält die Quittung im PAYMENT-RESPONSE Header, die die On-Chain-Transaktion beinhaltet.

Jede Signatur bezahlt eine Anfrage. Um eine weitere Anfrage zu stellen, signieren Sie erneut.

Was Sie bezahlen

Die 402 gibt den maximalen Betrag an, den die Anfrage kosten kann. Das ist Ihr Prompt plus max_tokens Output, auf dem teuersten Weg, den die Anfrage nehmen kann. Stellen Sie max_tokens ein, um das Angebot niedrig zu halten.

Es gibt zwei Zahlungsarten:

  • upto (zuerst angeboten). Sie unterzeichnen das Angebot als Obergrenze. Nach der Antwort werden nur die tatsächlichen Kosten abgebucht, aufgerundet auf den nächsten Millionstel Dollar. Die erste Zahlung erfordert eine einmalige USDC-Genehmigung. Wo der Zahlungsdienst es unterstützt, benötigt diese Genehmigung kein Gas.
  • exact. Der volle angebotene Betrag wird abgebucht, auch wenn die Anfrage weniger verbraucht hat. Nichts wird zurückerstattet. Wählen Sie exact nur, wenn Ihr Wallet upto nicht kann.

Ihnen wird niemals mehr berechnet als der Betrag, den Sie unterzeichnet haben. Wenn nichts geliefert wird (kein Modell verfügbar, ein Fehler bevor die Antwort beginnt), wird nichts abgebucht.

Probieren Sie es mit curl aus

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 ist in USDC Basiseinheiten: 1,000,000 ist $1. Signieren Sie einen Eintrag von accepts mit Ihrer Wallet. Senden Sie dann dieselbe Anfrage erneut mit -H 'PAYMENT-SIGNATURE: <base64 payment>'.

Vom Code aus

Eine x402 Client-Bibliothek übernimmt das 402, Signing und die Wiederholung für Sie. In 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());

Um nur die tatsächlichen Kosten zu bezahlen, registrieren Sie auch UptoEvmScheme von @x402/evm/upto/client. Bibliotheken für Go und Python sind gelistet unter x402.org.

Gut zu wissen

  • Streaming funktioniert. Mit "stream": true wird die Antwort wie gewohnt gestreamt. Die Zahlung wird am Ende des Streams eingezogen. Es gibt keinen PAYMENT-RESPONSE header, da die headers bereits gesendet wurden. Ihre wallet zeigt die Übertragung.
  • Eine wallet, maximal 4 bezahlte requests gleichzeitig.
  • Wenn eine Zahlung nach der Antwort nicht eingezogen werden kann (zum Beispiel, weil die wallet in der Zwischenzeit geleert wurde), wird eine normale Antwort zurückgehalten und Sie erhalten 402 payment_failed. Diese wallet kann dann 24 Stunden lang keine Zahlungen tätigen.
  • Version 1 x402 (X-PAYMENT header) wird nicht akzeptiert. Verwenden Sie einen Version 2 client.
  • Viele requests? Ein Konto mit Prepaid-Guthaben ist einfacher und hat keinen on-chain Schritt: hier anmelden.

Fehler

HTTP Bedeutung Maßnahme
402 + PAYMENT-REQUIRED keine Zahlung, oder die Zahlung wurde abgelehnt (das error Feld gibt den Grund an) unterschreiben Sie eines von accepts und versuchen Sie es erneut
402 payment_failed die Antwort war bereit, aber die Zahlung konnte nicht eingezogen werden laden Sie das Wallet auf; dieses Wallet kann in 24 Stunden wieder zahlen
400 invalid_payment PAYMENT-SIGNATURE ist keine base64 x402 v2 Zahlung korrigieren Sie den Client
429 rate_limited 4 bezahlte Anfragen laufen bereits von diesem Wallet warten Sie, bis eine abgeschlossen ist
503 service_unavailable der Zahlungsdienst ist kurzzeitig nicht verfügbar versuchen Sie es in einer Minute erneut