Auth par wallet
Authentifiez-vous avec un payload Sign-In-With-X signé dans l’en-tête
SIGN-IN-WITH-X.Payer en USDC
Maintenez un solde dépensable avec de l’USDC sur Base ou Solana.
DIEM d'abord
Si le wallet est lié à un compte Venice avec un solde DIEM, ce solde est dépensé en premier.
Qu’est-ce que X402 ?
X402 est un standard de paiement ouvert qui permet aux applications et aux agents de payer pour des services de manière programmatique en utilisant des cryptomonnaies. Venice implémente X402 afin que les wallets puissent s’authentifier et payer l’inférence directement avec de l’USDC sur Base ou Solana.Prérequis
- Un wallet sur Base ou Solana
- Du token natif pour le gas sur la chaîne choisie, comme de l’ETH sur Base ou du SOL sur Solana
- De l’USDC sur la chaîne choisie (ou un solde existant adossé à du DIEM via un compte Venice lié)
Démarrage rapide
Le SDKvenice-x402-client fournit des helpers pour l’auth par wallet, les recharges et le suivi de solde.
X-Balance-Remaining.
Avec des outils compatibles OpenAI
Si vous utilisez un outil qui accepte unfetch personnalisé, utilisez createAuthFetch pour ajouter l’auth par wallet à n’importe quelle requête :
Helpers disponibles
Le SDK inclut des helpers de première classe pour les routes Venice x402 les plus courantes. Pour tout ce qui n’est pas couvert, utilisezrequest() ou createAuthFetch() directement.
Flux manuel
Si vous n’utilisez pas le SDK ou si vous avez besoin de comprendre le protocole sous-jacent, voici le flux étape par étape. Pour un nouveau wallet, partez du principe que vous devez d’abord recharger, sauf s’il dispose déjà d’un solde DIEM dépensable.Étape 1 : Créer l’en-tête SIGN-IN-WITH-X
Venice attend une preuve sign-in-with-x x402 dans l’en-têteSIGN-IN-WITH-X : un JSON encodé en Base64 contenant les champs du message signé (domain, address, uri, version, chainId, type, nonce, issuedAt, ainsi que les champs facultatifs expirationTime, notBefore, statement et resources) plus la signature. Venice reconstruit le message signé à partir de ces champs. Les portefeuilles EVM signent un message SIWE EIP-4361 sur Base et définissent type sur eip191, y compris les portefeuilles de smart contract. Les portefeuilles Solana signent le message de connexion Solana avec Ed25519. Dans le JSON, chainId est l’identifiant CAIP-2 (eip155:8453), tandis que la ligne Chain ID du message signé contient la référence nue (8453). L’ancien nom d’en-tête X-Sign-In-With-X est toujours accepté, tout comme les anciens payloads qui envoient le message signé lui-même.
Chaque message signé ne peut être utilisé qu’une seule fois. Signez un nouveau message avec un nonce frais pour chaque requête, soit le vôtre, soit le nonce du dernier challenge 402, et envoyez-le dans les 5 minutes suivant son heure issuedAt. Réutiliser un message renvoie 401 (nonce déjà utilisé), tout comme un message émis il y a plus de 5 minutes.
Pour Solana, définissez chainId à solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, incluez type: "ed25519" dans le payload JSON encodé et fournissez la signature Ed25519 en base58 ou base64. Le message signé commence par <domain> wants you to sign in with your Solana account:, suivi de l’adresse du wallet et des champs standards URI, Version, Chain ID, Nonce, Issued At et Expiration Time (optionnel).
createSiwxHeader() immédiatement avant chaque requête. Dans les exemples curl ci-dessous, X402_AUTH doit être un en-tête nouvellement signé pour chaque appel.
Étape 2 : Vérifier le solde
Avant de faire une requête payante, vérifiez que le wallet dispose d’un solde dépensable :canConsume: si le wallet peut faire des requêtes payantesbalanceUsd: le solde dépensable actuelminimumTopUpUsdetsuggestedTopUpUsd: indications pour les rechargesdiemBalanceUsd: le solde adossé à du DIEM, le cas échéant
walletAddress accepte une adresse EVM (0x...) ou une adresse Solana en base58.
Étape 3 : Recharger
Rechargez avec de l’USDC sur Base ou Solana :402 Payment Required avec un en-tête PAYMENT-REQUIRED contenant un tableau accepts. Chaque entrée décrit une option de paiement acceptée, notamment network, asset, payTo et amount. Choisissez l’option Base ou Solana avec laquelle vous voulez payer, utilisez ces détails exacts pour construire un en-tête PAYMENT-SIGNATURE et réessayez la même route. Les anciens noms d’en-tête X-402-Payment et X-PAYMENT sont toujours acceptés.
Construction de l’en-tête PAYMENT-SIGNATURE pour Base
Le script suivant crée un paiement x402 signé sur Base et envoie la requête de recharge. Nécessite les paquets npmx402 et viem.
En production, utilisez la dernière réponse
PAYMENT-REQUIRED / accepts comme source de vérité au lieu de coder en dur ces valeurs. Pour les recharges Solana, construisez le paiement à partir de l’entrée Solana renvoyée dans accepts. Les entrées Solana utilisent network: "solana", le mint USDC comme asset, et peuvent inclure des métadonnées spécifiques au réseau comme extra.feePayer.Étape 4 : Faire une requête
Une fois que le wallet dispose d’un solde dépensable, appelez n’importe quel endpoint pris en charge avec un en-têteSIGN-IN-WITH-X nouvellement signé :
X-Balance-Remaining.
Étape 5 : Inspecter les transactions (facultatif)
Consultez l’historique des transactions du wallet :TOP_UP, CHARGE et REFUND.
Le paramètre de chemin walletAddress accepte une adresse EVM (0x...) ou une adresse Solana en base58.
Routes prises en charge
Routes d’inférence payantes
Les routes Venice publiques payantes suivantes prennent actuellement en charge l’authentification par wallet x402.Route de recharge
Routes wallet uniquement
Ces routes utilisentSIGN-IN-WITH-X pour l’identité mais ne facturent pas le solde.
Erreurs
Pour les agents
Le flux est identique. Stockez les clés privées dans des variables d’environnement ou un gestionnaire de secrets, signez un nouveau message Sign-In-With-X pour chaque requête, et vérifiez le solde avant les requêtes pour éviter des allers-retours402 inutiles.
Ressources connexes
SDK client x402
Client x402 officiel Venice pour Node.js/TypeScript.
Tarification API
Consultez la tarification des modèles et la manière dont Venice facture l’usage.
Chat Completions
Une route payante courante pour l’accès basé sur wallet.
Spécification API
Documentation de référence et accès au spec brut.