Prérequis
- Un portefeuille EVM sur Base contrôlé par l’agent (clé privée dans une variable d’environnement ou un gestionnaire de secrets).
- Une petite quantité d’ETH sur Base pour les frais de gas (le staking est constitué de deux transactions :
approvepuisstake). - Une quantité non nulle de VVV à staker. L’endpoint de création requiert seulement que le portefeuille ait un solde sVVV non nul, donc 1 VVV suffit pour générer une clé. Voir Payer pour l’inférence pour ce dont vous avez réellement besoin pour appeler les endpoints payants.
Étapes
1
2
Staker du VVV avec Venice
Stakez le VVV dans le Smart Contract de Staking Venice à l’adresse 
Lorsque la deuxième transaction est confirmée, le solde VVV du portefeuille diminue et son solde sVVV augmente du même montant. L’endpoint de création lit le solde sVVV pour confirmer que le portefeuille est staké.
0x321b7ff75154472B18EDb199033fF4D116F340Ff. Il s’agit de deux transactions :approve(spender, amount)sur le token VVV, oùspenderest le contrat de staking.stake(amount)sur le contrat de staking.

3
Demander un challenge pour le portefeuille
Appelez La réponse contient Le challenge expire 15 minutes après son émission et est à usage unique : il est consommé à la première clé créée avec lui. Demandez-en un nouveau pour chaque clé.
GET /api/v1/api_keys/generate_web3_key?address=<wallet address> pour obtenir un challenge EIP-4361 (Sign-In with Ethereum) à courte durée de vie. L’endpoint n’est pas authentifié, mais le challenge est lié à l’adresse transmise et ne peut être utilisé que par ce portefeuille.message, nonce et expiresAt :4
Signer le challenge avec le portefeuille de staking
Signez la chaîne
message telle quelle avec le portefeuille qui détient le VVV staké. Il s’agit d’un personal_sign standard. À la fois ethers.Wallet.signMessage(message) et account.signMessage({ message }) de viem produisent la signature correcte.Ne reformatez pas, ne recoupez pas et ne régénérez pas le message. Venice vérifie la signature sur les octets exacts qu’il a émis et revérifie indépendamment le domain, l’URI, le Chain ID, la déclaration et l’adresse qu’il contient.5
Créer la clé API
Faites un Champs requis :
POST de l’adresse, de la signature et du message au même endpoint, avec le type de clé que vous souhaitez.address, signature, message, apiKeyType (INFERENCE ou ADMIN).Champs optionnels : description, expiresAt, consumptionLimit (plafonne la dépense totale sur cette clé, libellée en usd, vcu ou diem).En cas de succès, la réponse contient la chaîne apiKey créée. Stockez-la dans le secret store de l’agent et utilisez-la comme un token Bearer normal (Authorization: Bearer <key>).Exemple de bout en bout
L’exemple ci-dessous utilise un vrai portefeuille depuis une variable d’environnement plutôt qu’un portefeuille généré aléatoirement. Un portefeuille aléatoire n’a pas de VVV staké et la création sera rejetée avec l’erreurWallet has no staked VVV on Base.
Référence des erreurs
L’endpoint renvoie des messages d’erreur spécifiques et exploitables. Mappez-les dans l’agent pour qu’il puisse décider de réessayer, demander un nouveau challenge ou s’arrêter.Pourquoi le challenge est lié au portefeuille et à usage unique
Le challenge est un message EIP-4361 lisible par un humain plutôt qu’un token opaque, et il apporte trois protections qui comptent si un portefeuille est un jour invité à en signer un en dehors de votre propre agent :- Liaison à l’adresse. Le challenge nomme le portefeuille pour lequel il a été émis. Un challenge obtenu par une partie ne peut pas être signé ni utilisé par un autre portefeuille.
- Nonce à usage unique. Venice suit le nonce côté serveur et le consomme à la première création réussie. Une signature ne crée qu’une seule clé, une signature interceptée ne peut donc pas être rejouée pour en obtenir d’autres.
- Déclaration lisible. Le message indique clairement que signer autorise la création d’une clé API Venice, si bien qu’une interface de portefeuille comme MetaMask montre au signataire ce qu’il approuve au lieu d’un blob binaire.
Payer pour l’inférence
Générer une clé et pouvoir appeler des endpoints payants avec elle sont deux choses distinctes. Une clé fraîchement créée s’authentifie correctement mais ne peut pas appeler les endpoints payants (comme/chat/completions) tant que le compte du portefeuille n’a pas un solde dépensable.
La clé créée peut dépenser depuis le compte utilisateur dans cet ordre de priorité : DIEM, puis crédits groupés, puis USD.
Si l’agent a besoin d’un chemin de financement entièrement crypto-natif et headless, les options les plus propres sont :
- Staker plus de VVV pour que l’allocation quotidienne de DIEM couvre la dépense de l’agent. La clé créée le récupère automatiquement.
- Utiliser le flux portefeuille x402 au lieu de la clé API. Avec x402, l’agent signe un message Sign-In-With-X par requête, recharge directement avec de l’USDC sur Base ou Solana via
POST /api/v1/x402/top-up, et paie par requête. Le solde USDC x402 est lié au portefeuille, pas à l’utilisateur, donc il n’apparaît pas comme solde pour la clé Bearer créée, mais cela permet au même portefeuille de payer l’inférence de manière programmatique.
Ressources connexes
Crypto et agents
Utilisez Venice à la fois comme fournisseur de modèle et comme couche RPC blockchain pour les agents autonomes.
Authentification par portefeuille x402
Payez par requête avec de l’USDC sur Base ou Solana, sans clé API requise.
Endpoint de génération de clé API Web3
Référence de l’endpoint pour l’endpoint de création.
Guide de clé API standard
Pour les utilisateurs qui préfèrent générer une clé depuis le tableau de bord.