Wallet auth
Autenticati con un payload Sign-In-With-X firmato nell’header
X-Sign-In-With-X.Paga con USDC
Mantieni il saldo spendibile con USDC su Base o Solana.
DIEM prima
Se il wallet è collegato a un account Venice con saldo DIEM, viene speso per primo.
Cos’è X402?
X402 è uno standard di pagamento aperto che consente ad applicazioni e agenti di pagare i servizi in modo programmatico usando criptovalute. Venice implementa X402 in modo che i wallet possano autenticarsi e pagare l’inferenza direttamente con USDC su Base o Solana.Prerequisiti
- Un wallet su Base o Solana
- Token nativo per il gas sulla chain selezionata, come ETH su Base o SOL su Solana
- USDC sulla chain selezionata (o saldo DIEM esistente da un account Venice collegato)
Avvio rapido
L’SDKvenice-x402-client fornisce helper per autenticazione wallet, ricariche e tracking del saldo.
X-Sign-In-With-X per ogni richiesta e traccia automaticamente il saldo dagli header di risposta X-Balance-Remaining.
Con strumenti compatibili con OpenAI
Se stai usando uno strumento che accetta unfetch personalizzato, usa createAuthFetch per aggiungere l’autenticazione wallet a qualsiasi richiesta:
Helper disponibili
L’SDK include helper di prima classe per le route Venice x402 più comuni. Per tutto ciò che non è coperto, usarequest() o createAuthFetch() direttamente.
| Categoria | Metodi |
|---|---|
| Chat | chat(), chatStream() |
| Responses | responses.create(), responses.stream() |
| Immagini | images.generate(), images.generations(), images.upscale(), images.edit(), images.multiEdit(), images.backgroundRemove() |
| Audio | audio.speech(), audio.transcribe(), audio.queue(), audio.retrieve(), audio.complete() |
| Video | video.queue(), video.retrieve(), video.generate(), video.complete(), video.transcribe() |
| Embeddings | embeddings() |
| Modelli | models() |
| Wallet | getBalance(), getTransactions(), topUp() |
Flusso manuale
Se non stai usando l’SDK o hai bisogno di capire il protocollo sottostante, ecco il flusso passo dopo passo. Per un nuovo wallet, assumi di dover prima ricaricare a meno che non abbia già saldo DIEM spendibile.Step 1: crea l’header X-Sign-In-With-X
Venice si aspetta un payload JSON codificato in Base64 contenente un messaggio Sign-In-With-X firmato. I wallet EVM firmano un messaggio SIWE EIP-4361 su Base. I wallet Solana firmano il messaggio Solana SIWX con Ed25519. Genera un nuovo nonce e timestamp per ogni flusso di richiesta. Per Solana, impostachainId su solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, includi type: "ed25519" nel payload JSON codificato e fornisci la firma Ed25519 come base58 o base64. Il messaggio firmato inizia con <domain> wants you to sign in with your Solana account:, seguito dall’indirizzo del wallet e dai campi standard URI, Version, Chain ID, Nonce, Issued At e dal campo opzionale Expiration Time.
Step 2: controlla il saldo
Prima di fare una richiesta a pagamento, verifica che il wallet abbia saldo spendibile:canConsume: se il wallet può fare richieste a pagamentobalanceUsd: saldo spendibile correnteminimumTopUpUsdesuggestedTopUpUsd: linee guida per le ricarichediemBalanceUsd: saldo basato su DIEM, se presente
walletAddress accetta sia un indirizzo EVM (0x...) sia un indirizzo Solana base58.
Step 3: ricarica
Ricarica con USDC su Base o Solana:402 Payment Required con un header PAYMENT-REQUIRED contenente un array accepts. Ogni voce descrive un’opzione di pagamento accettata, inclusi network, asset, payTo e amount. Scegli l’opzione Base o Solana con cui vuoi pagare, usa questi dettagli esatti per costruire un header X-402-Payment e riprova la stessa route.
Costruire l’header X-402-Payment per Base
Lo script seguente crea un pagamento x402 firmato su Base e invia la richiesta di ricarica. Richiede i pacchetti npmx402 e viem.
Usa l’ultima risposta
PAYMENT-REQUIRED / accepts come fonte di verità in produzione invece di hardcodare questi valori. Per le ricariche Solana, costruisci il pagamento dalla voce Solana restituita in accepts. Le voci Solana usano network: "solana", il mint USDC come asset e possono includere metadati specifici della rete come extra.feePayer.Step 4: fai una richiesta
Una volta che il wallet ha saldo spendibile, chiama qualsiasi endpoint supportato con l’headerX-Sign-In-With-X:
X-Balance-Remaining.
Step 5: ispeziona le transazioni (opzionale)
Esamina lo storico delle transazioni del wallet:TOP_UP, CHARGE e REFUND.
Il parametro di path walletAddress accetta sia un indirizzo EVM (0x...) sia un indirizzo Solana base58.
Route supportate
Route di inferenza a pagamento
Le seguenti route pubbliche a pagamento di Venice supportano attualmente l’autenticazione tramite wallet x402.| Categoria | Endpoint |
|---|---|
| Chat | POST /api/v1/chat/completions, POST /api/v1/responses |
| Image | POST /api/v1/image/generate, POST /api/v1/images/generations, POST /api/v1/image/upscale, POST /api/v1/image/edit, POST /api/v1/image/multi-edit, POST /api/v1/image/background-remove |
| Embeddings | POST /api/v1/embeddings |
| Audio | POST /api/v1/audio/speech, POST /api/v1/audio/transcriptions, POST /api/v1/audio/complete, POST /api/v1/audio/queue, POST /api/v1/audio/retrieve |
| Video | POST /api/v1/video/complete, POST /api/v1/video/queue, POST /api/v1/video/retrieve, POST /api/v1/video/transcriptions |
Route di ricarica
| Endpoint | Auth | Scopo |
|---|---|---|
POST /api/v1/x402/top-up | Richiesta iniziale: nessuna. Retry: X-402-Payment | Aggiungi crediti USDC al saldo spendibile del wallet usando un’opzione di pagamento Base o Solana accettata |
Route solo wallet
Queste route usanoX-Sign-In-With-X per l’identità ma non addebitano il saldo.
| Endpoint | Scopo |
|---|---|
GET /api/v1/x402/balance/{walletAddress} | Controlla il saldo spendibile per un indirizzo wallet EVM o Solana |
GET /api/v1/x402/transactions/{walletAddress} | Visualizza lo storico delle transazioni per un indirizzo wallet EVM o Solana |
Errori
| Stato | Causa probabile | Cosa fare |
|---|---|---|
401 | Payload Sign-In-With-X malformato o scaduto | Ricostruisci X-Sign-In-With-X con un nuovo nonce e timestamp |
402 su una route a pagamento | Saldo spendibile insufficiente | Ricarica e ritenta |
402 su /x402/top-up | Atteso. Questo è il flusso di avvio del pagamento. | Usa i dettagli di pagamento restituiti per costruire X-402-Payment e ritenta |
403 su balance o transactions | Mismatch del wallet | Assicurati che il wallet autenticato corrisponda al parametro di path walletAddress |
400 su top-up | Header di pagamento malformato | Ricostruisci dall’ultima risposta 402 |
Per gli agenti
Il flusso è lo stesso. Memorizza le chiavi private in variabili d’ambiente o in un secret manager e controlla il saldo prima delle richieste per evitare round-trip402 non necessari.
Risorse correlate
x402 Client SDK
Client x402 ufficiale Venice per Node.js/TypeScript.
Prezzi dell'API
Controlla i prezzi dei modelli e come Venice fattura l’utilizzo.
Chat Completions
Una route a pagamento comune per l’accesso basato su wallet.
Specifica dell'API
Documentazione di riferimento e accesso alla spec raw.