Wallet auth
Autenticati con un payload Sign-In-With-X firmato nell’header
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-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.
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 SIGN-IN-WITH-X
Venice si aspetta una prova sign-in-with-x x402 nell’headerSIGN-IN-WITH-X: JSON codificato in Base64 con i campi del messaggio firmato (domain, address, uri, version, chainId, type, nonce, issuedAt e i campi opzionali expirationTime, notBefore, statement e resources) più la signature. Venice ricostruisce il messaggio firmato a partire da quei campi. I wallet EVM firmano un messaggio SIWE EIP-4361 su Base e impostano type su eip191, inclusi gli smart contract wallet. I wallet Solana firmano il messaggio di accesso Solana con Ed25519. Nel JSON, chainId è l’identificatore CAIP-2 (eip155:8453), mentre la riga Chain ID del messaggio firmato contiene il riferimento semplice (8453). Il nome di header legacy X-Sign-In-With-X è ancora accettato, così come i payload più vecchi che inviano direttamente il message firmato.
Ogni messaggio firmato può essere usato una sola volta. Firma un nuovo messaggio con un nonce nuovo per ogni richiesta, il tuo oppure il nonce dell’ultima challenge 402, e invialo entro 5 minuti dal suo orario issuedAt. Il riutilizzo di un messaggio restituisce 401 (nonce già usato), così come un messaggio emesso più di 5 minuti prima.
Per Solana, imposta chainId 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.
createSiwxHeader() immediatamente prima di ogni richiesta. Negli esempi curl seguenti, X402_AUTH deve essere un header appena firmato per ogni chiamata.
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 PAYMENT-SIGNATURE e riprova la stessa route. I nomi di header legacy X-402-Payment e X-PAYMENT sono ancora accettati.
Costruire l’header PAYMENT-SIGNATURE 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 un headerSIGN-IN-WITH-X appena firmato:
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.Route di ricarica
Route solo wallet
Queste route usanoSIGN-IN-WITH-X per l’identità ma non addebitano il saldo.
Errori
Per gli agenti
Il flusso è lo stesso. Memorizza le chiavi private in variabili d’ambiente o in un secret manager, firma un nuovo messaggio Sign-In-With-X per ogni richiesta 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.