Voraussetzungen
- Eine EVM-Wallet auf Base, die vom Agenten kontrolliert wird (Private Key in einer Umgebungsvariablen oder einem Secret Manager).
- Ein kleiner Betrag ETH auf Base für Gas (Staking sind zwei Transaktionen:
approveund dannstake). - Ein beliebiger Nicht-Null-Betrag VVV zum Staken. Der Mint-Endpoint erfordert lediglich, dass die Wallet ein Nicht-Null-sVVV-Guthaben hat, sodass 1 VVV ausreicht, um einen Schlüssel zu erstellen. Siehe Bezahlung für Inferenz für die Voraussetzungen, um bezahlte Endpoints tatsächlich aufzurufen.
Schritte
1
2
VVV bei Venice staken
Staken Sie das VVV im Venice Staking Smart Contract unter 
Wenn die zweite Transaktion bestätigt ist, sinkt das VVV-Guthaben der Wallet, und ihr sVVV-Guthaben steigt um denselben Betrag. Der Mint-Endpoint liest das sVVV-Guthaben, um zu bestätigen, dass die Wallet gestaked ist.
0x321b7ff75154472B18EDb199033fF4D116F340Ff. Das sind zwei Transaktionen:approve(spender, amount)auf dem VVV-Token, wobeispenderder Staking-Contract ist.stake(amount)auf dem Staking-Contract.

3
Eine Challenge für die Wallet anfordern
Rufen Sie Die Antwort enthält Die Challenge läuft 15 Minuten nach Ausstellung ab und ist einmalig verwendbar — sie wird beim ersten damit erstellten Schlüssel verbraucht. Fordern Sie für jeden Schlüssel eine neue an.
GET /api/v1/api_keys/generate_web3_key?address=<wallet address> auf, um eine kurzlebige EIP-4361-Challenge (Sign-In with Ethereum) zu erhalten. Der Endpoint ist unauthentifiziert, aber die Challenge ist an die übergebene Adresse gebunden und kann nur von dieser Wallet eingelöst werden.message, nonce und expiresAt:4
Die Challenge mit der Staking-Wallet signieren
Signieren Sie den
message-String unverändert mit der Wallet, die das gestakte VVV hält. Dies ist ein standardmäßiger personal_sign. Sowohl ethers.Wallet.signMessage(message) als auch account.signMessage({ message }) in viem erzeugen die korrekte Signatur.Formatieren, umbrechen oder regenerieren Sie die Nachricht nicht. Venice verifiziert die Signatur über exakt die ausgestellten Bytes und prüft domain, URI, Chain ID, Statement und Adresse darin zusätzlich unabhängig.5
Den API-Schlüssel erstellen
POSTen Sie die Adresse, die Signatur und die Nachricht zusammen mit dem gewünschten Schlüsseltyp an denselben Endpoint.address, signature, message, apiKeyType (INFERENCE oder ADMIN).Optionale Felder: description, expiresAt, consumptionLimit (begrenzt die Gesamtausgaben dieses Schlüssels, denominiert in usd, vcu oder diem).Bei Erfolg enthält die Antwort den erstellten apiKey-String. Speichern Sie ihn im Secret-Store des Agenten und verwenden Sie ihn als normales Bearer-Token (Authorization: Bearer <key>).End-to-End-Beispiel
Das folgende Beispiel verwendet eine echte Wallet aus einer Umgebungsvariablen statt einer zufällig generierten. Eine zufällige Wallet hat kein gestaktes VVV, und der Mint wird mit dem FehlerWallet has no staked VVV on Base abgelehnt.
Fehlerreferenz
Der Endpoint gibt spezifische, umsetzbare Fehlermeldungen zurück. Mappen Sie diese im Agenten, damit er entscheiden kann, ob er es erneut versucht, eine neue Challenge anfordert oder abbricht.Warum die Challenge wallet-gebunden und einmalig verwendbar ist
Die Challenge ist eine menschenlesbare EIP-4361-Nachricht statt eines undurchsichtigen Tokens und bietet drei Schutzmechanismen, die relevant werden, falls eine Wallet jemals außerhalb Ihres eigenen Agenten zur Signatur aufgefordert wird:- Adressbindung. Die Challenge nennt die Wallet, für die sie ausgestellt wurde. Eine von einer Partei erhaltene Challenge kann nicht von einer anderen Wallet signiert und eingelöst werden.
- Einmal-Nonce. Venice verfolgt die Nonce serverseitig und verbraucht sie beim ersten erfolgreichen Erstellen. Eine Signatur erstellt genau einen Schlüssel, eine abgefangene Signatur kann also nicht für weitere Schlüssel wiederverwendet werden.
- Lesbares Statement. Die Nachricht sagt klar, dass die Signatur die Erstellung eines Venice-API-Schlüssels autorisiert, sodass eine Wallet-Oberfläche wie MetaMask dem Signierenden zeigt, was er genehmigt, statt eines Binär-Blobs.
Bezahlung für Inferenz
Einen Schlüssel zu erstellen und damit bezahlte Endpoints aufrufen zu können sind zwei verschiedene Dinge. Ein frisch erstellter Schlüssel authentifiziert sich korrekt, kann aber keine bezahlten Endpoints (z. B./chat/completions) aufrufen, bis das Konto der Wallet ein verfügbares Guthaben hat.
Der erstellte Schlüssel kann vom Benutzerkonto in dieser Prioritätsreihenfolge ausgeben: DIEM, dann gebündelte Credits, dann USD.
Wenn der Agent einen vollständig krypto-nativen, headless Finanzierungspfad benötigt, sind die saubersten Optionen:
- Mehr VVV staken, sodass die tägliche DIEM-Zuteilung die Ausgaben des Agenten abdeckt. Der erstellte Schlüssel verwendet dies automatisch.
- Verwenden Sie den x402-Wallet-Flow anstelle des API-Schlüssels. Bei x402 signiert der Agent pro Anfrage eine Sign-In-With-X-Nachricht, lädt direkt mit USDC auf Base oder Solana über
POST /api/v1/x402/top-upauf und bezahlt pro Anfrage. Das x402-USDC-Guthaben ist wallet-gebunden, nicht benutzerbezogen, sodass es nicht als Guthaben für den erstellten Bearer-Schlüssel angezeigt wird, aber es ermöglicht es derselben Wallet, programmatisch für Inferenz zu bezahlen.
Verwandte Ressourcen
Krypto und Agenten
Verwenden Sie Venice sowohl als Modellanbieter als auch als Blockchain-RPC-Schicht für autonome Agenten.
x402-Wallet-Authentifizierung
Bezahlen Sie pro Anfrage mit USDC auf Base oder Solana, ohne API-Schlüssel.
Web3 API Key Endpoint generieren
Endpoint-Referenz für den Mint-Endpoint.
Standard-API-Schlüssel-Leitfaden
Für Nutzer, die einen Schlüssel über das Dashboard erstellen möchten.