/v1.
Ottenere l’accesso
L’accesso viene concesso per progetto. Servono tutti e quattro i requisiti:Un abbonamento attivo, Silver o superiore
Una richiesta da sviluppatore approvata
I Termini per sviluppatori dell'API accettati
Gli scope di cui il progetto ha bisogno
Scope
Autenticazione
Invia la tua chiave segreta come token Bearer:- Allowlist di IP — limita le chiamate a IP di server specifici
- Limiti di frequenza — tetti per progetto che crescono con il livello di abbonamento del titolare
Chiavi, rotazione e conservazione
- Tienila solo lato server — chiunque la possieda può addebitare i tuoi utenti
- Ruota dalla scheda delle chiavi API. La chiave precedente resta valida per un periodo di tolleranza di 24 ore, così puoi rilasciare senza interruzioni
- Il segreto di firma dei webhook si ruota separatamente, con una sovrapposizione di 24 ore propria
- In caso di fuga, ruota subito
SDK ufficiale per Node.js
Il pacchetto ufficiale@vetox-bot/vito incapsula tutti e nove gli endpoint e la verifica dei webhook. Gestisce al posto tuo l’header Idempotency-Key, i nuovi tentativi con backoff esponenziale, i timeout e la classificazione degli errori.
Installazione
fetch integrato e node:crypto — e viene distribuito sia in ESM sia in CommonJS, con definizioni TypeScript complete.
Inizializzazione
apiKey, l’SDK legge VITO_API_KEY dall’ambiente. Il formato della chiave viene validato alla costruzione, così una chiave malformata fallisce subito invece di costarti un round trip e un 401.
Opzioni del client
Metodi disponibili
data già estratto: non devi mai spacchettare success o data da solo. Tutti accettano inoltre opzioni per singola chiamata: { timeoutMs, maxRetries, signal, headers }, e i metodi di scrittura accettano anche { idempotencyKey }.Esempi d’uso
Verificare la chiave all’avvio
Leggere un saldo
Addebitare un utente (vendere un articolo)
Accreditare un utente
Scorrere le transazioni
Idempotenza e nuovi tentativi
L’SDK invia un headerIdempotency-Key su ogni scrittura (deduct, credit, transfer). Se non ne fornisci uno, lo genera una sola volta per chiamata e rimanda esattamente la stessa chiave a ogni nuovo tentativo, così un tentativo non può mai liquidare l’operazione due volte.
Fornisci una tua chiave quando la stessa operazione logica può essere ritentata da un nuovo processo — un job runner, una riconsegna da coda o un’esecuzione pianificata:
auth.rotateKey() è escluso di proposito: un nuovo tentativo genera una seconda chiave e invalida quella restituita dal primo.Verificare i webhook con l’SDK
constructEvent controlla la finestra di replay di 5 minuti, confronta a tempo costante con ogni firma h1 nell’header — quindi funziona automaticamente durante la sovrapposizione di 24 ore di una rotazione — poi analizza il payload e restituisce l’evento tipizzato.
In un route handler di Next.js (App Router) usa la variante che legge da sé il corpo grezzo:
event.eventId prima di eseguire qualunque effetto collaterale.Gestione degli errori
Tutto ciò che l’SDK solleva eredita daVitoError e porta code, status, type, requestId e retryable.
Annullare una chiamata
VitoConnectionError con il codice VITO_SDK_ABORTED.
Addebitare un utente
La tua app chiama POST /v1/deduct
guildId di origine e i dettagli dell’articolo.Vito restituisce una confirmUrl
L'utente approva con il suo PIN
vetox.io.Vito liquida e notifica
La tua app verifica e completa
Parametri della richiesta — /v1/deduct
Accreditare un utente
POST /v1/add accredita Vito a un utente dal tuo saldo — per premi o rimborsi. Stessi campi di /deduct tranne guildId e product.
credit:create e saldo sufficiente, altrimenti la chiamata restituisce 402 VITO_INSUFFICIENT_OWNER_FUNDS.Commissioni
Ogni addebito ti viene liquidato al netto della commissione della piattaforma, secondo lo stesso schema dei trasferimenti Vito nell’app e in base al tuo livello di abbonamento:/v1/add lo sono sempre.Webhook
Aggiungi uno o più URL di callbackhttps nella scheda delle impostazioni. Vito invia un POST firmato ogni volta che una conferma raggiunge uno stato finale.
Verificare la firma
Ogni consegna porta un headerX-Vito-Signature:
X-Vito-Event-Id come chiave di deduplicazione, perché un nuovo tentativo rimanda lo stesso id:
<ts>:<rawBody> con il tuo segreto di firma e confronta a tempo costante.
Eventi
Cinque tipi di evento, tutti con la stessa struttura di payload.data.status porta l’esito.
Codici di errore
Ogni risposta è incapsulata. Un successo portadata, un errore porta error, mai entrambi:
Limiti di frequenza
Idempotency-Key per deduplicare i tentativi in sicurezza.Endpoint
Limiti
- Le conferme scadono dopo 10 minuti — considera abbandonate le richieste non confermate
amountdeve essere un intero positivometadataè limitato a 10 chiavi- I tetti per transazione e giornalieri sono fissati dal team Vetox e appaiono in sola lettura nella scheda delle impostazioni
Checklist di sicurezza
Tieni i segreti lato server
Tieni i segreti lato server
Verifica ogni webhook
Verifica ogni webhook
Liquida solo su completed
Liquida solo su completed
/deduct: l’addebito è definitivo solo con confirmation.completed.Privilegio minimo
Privilegio minimo
Risoluzione dei problemi
Ogni chiamata restituisce non autorizzato
Ogni chiamata restituisce non autorizzato
Ho perso la mia chiave
Ho perso la mia chiave
Le firme dei webhook falliscono dopo la rotazione
Le firme dei webhook falliscono dopo la rotazione
Un addebito non si completa mai
Un addebito non si completa mai
Non arriva nessun webhook
Non arriva nessun webhook
Sono arrivati meno Vito di quelli addebitati
Sono arrivati meno Vito di quelli addebitati
402 VITO_INSUFFICIENT_OWNER_FUNDS
402 VITO_INSUFFICIENT_OWNER_FUNDS
/v1/add è finanziato dal tuo saldo, non creato dal nulla. Ricarica.