/v1.
Toegang krijgen
Toegang wordt per project verleend. Je hebt alle vier nodig:Een actief lidmaatschap, Silver of hoger
Een goedgekeurde ontwikkelaarsaanvraag
Geaccepteerde API-ontwikkelaarsvoorwaarden
De scopes die je project nodig heeft
Scopes
Authenticatie
Stuur je geheime sleutel mee als Bearer-token:- IP-allowlist — beperk aanroepen tot specifieke server-IP’s
- Rate limits — plafonds per project die meeschalen met het lidmaatschapsniveau van de houder
Sleutels, rotatie en opslag
- Houd hem uitsluitend serverzijdig — wie hem heeft, kan je gebruikers afschrijven
- Roteer via het tabblad met API-sleutels. De vorige sleutel blijft nog 24 uur werken als overgangsperiode, zodat je zonder downtime kunt uitrollen
- Het webhook-signing-secret roteert apart, met een eigen overlap van 24 uur
- Bij een lek: onmiddellijk roteren
Officiële Node.js-SDK
Het officiële pakket@vetox-bot/vito omhult alle negen endpoints plus de webhookverificatie. Het regelt de Idempotency-Key-header, nieuwe pogingen met exponentiële backoff, time-outs en de classificatie van fouten voor je.
Installatie
fetch en node:crypto — en wordt geleverd in zowel ESM als CommonJS, met volledige TypeScript-definities.
Initialisatie
apiKey weg, dan leest de SDK VITO_API_KEY uit de omgeving. Het sleutelformaat wordt bij het aanmaken gecontroleerd, zodat een misvormde sleutel meteen faalt in plaats van je een netwerkronde en een 401 te kosten.
Clientopties
Beschikbare methoden
data-veld rechtstreeks terug — je hoeft success of data nooit zelf uit te pakken. Alle methoden accepteren daarnaast opties per aanroep: { timeoutMs, maxRetries, signal, headers }, en de schrijfmethoden bovendien { idempotencyKey }.Gebruiksvoorbeelden
De sleutel controleren bij het opstarten
Een saldo uitlezen
Een gebruiker afschrijven (een artikel verkopen)
Een gebruiker bijschrijven
Door transacties bladeren
Idempotentie en nieuwe pogingen
De SDK stuurt bij elke schrijfactie (deduct, credit, transfer) een Idempotency-Key-header mee. Geef je er geen op, dan genereert hij de sleutel één keer per aanroep en stuurt exact dezelfde sleutel bij elke nieuwe poging opnieuw, zodat een herhaalde poging de bewerking nooit twee keer kan verrekenen.
Geef je eigen sleutel mee wanneer dezelfde logische bewerking opnieuw kan worden gestart vanuit een nieuw proces — een taakrunner, een herlevering uit een wachtrij of een geplande run:
auth.rotateKey() is bewust uitgesloten — een nieuwe poging maakt daar een tweede sleutel aan en maakt de sleutel uit de eerste poging ongeldig.Webhooks verifiëren met de SDK
constructEvent controleert het replay-venster van 5 minuten, vergelijkt in constante tijd met elke h1-handtekening in de header — het werkt dus automatisch tijdens de overlap van 24 uur bij een rotatie — en parseert daarna de payload en geeft de getypeerde gebeurtenis terug.
Gebruik in een Next.js-routehandler (App Router) de variant die de ruwe body zelf leest:
event.eventId voordat je een neveneffect uitvoert.Foutafhandeling
Alles wat de SDK gooit erft vanVitoError en draagt code, status, type, requestId en retryable.
Een aanroep annuleren
VitoConnectionError met de code VITO_SDK_ABORTED.
Een gebruiker afschrijven
Je app roept POST /v1/deduct aan
guildId van herkomst en de artikelgegevens.Vito geeft een confirmUrl terug
De gebruiker keurt goed met zijn pincode
vetox.io.Vito verrekent en meldt
Je app verifieert en rondt af
Requestparameters — /v1/deduct
Een gebruiker bijschrijven
POST /v1/add schrijft Vito bij een gebruiker bij uit je eigen saldo — voor beloningen of terugbetalingen. Dezelfde velden als /deduct, behalve guildId en product.
credit:create en voldoende saldo, anders geeft de aanroep 402 VITO_INSUFFICIENT_OWNER_FUNDS terug.Kosten
Elke afschrijving wordt aan jou uitbetaald minus de platformkosten — hetzelfde schema als Vito-overboekingen in de app, op basis van jouw lidmaatschapsniveau:/v1/add zijn dat altijd.Webhooks
Voeg op het tabblad met instellingen een of meerhttps-callback-URL’s toe. Vito stuurt een ondertekende POST zodra een bevestiging een eindtoestand bereikt.
De handtekening verifiëren
Elke aflevering draagt eenX-Vito-Signature-header:
X-Vito-Event-Id als deduplicatiesleutel, want een nieuwe poging stuurt hetzelfde id opnieuw:
<ts>:<rawBody> met je signing secret en vergelijk in constante tijd.
Gebeurtenissen
Vijf gebeurtenistypen, allemaal met dezelfde payloadstructuur.data.status bevat de uitkomst.
Foutcodes
Elk antwoord zit in een envelope. Een succes bevatdata, een fout bevat error — nooit allebei:
Rate limits
Idempotency-Key-header mee om herhaalde pogingen veilig te dedupliceren.Endpoints
Limieten
- Bevestigingen verlopen na 10 minuten — beschouw niet-bevestigde verzoeken als afgebroken
amountmoet een positief geheel getal zijnmetadatais beperkt tot 10 sleutels- Limieten per transactie en per dag worden door het Vetox-team ingesteld en staan alleen-lezen op het tabblad met instellingen
Beveiligingschecklist
Houd secrets serverzijdig
Houd secrets serverzijdig
Verifieer elke webhook
Verifieer elke webhook
Verreken alleen bij completed
Verreken alleen bij completed
/deduct-antwoord — de afschrijving staat pas vast bij confirmation.completed.Minimale rechten
Minimale rechten
Problemen oplossen
Elke aanroep geeft niet-geautoriseerd
Elke aanroep geeft niet-geautoriseerd
Ik ben mijn sleutel kwijt
Ik ben mijn sleutel kwijt
Webhook-handtekeningen falen na rotatie
Webhook-handtekeningen falen na rotatie
Een afschrijving wordt nooit afgerond
Een afschrijving wordt nooit afgerond
Er komen geen webhooks binnen
Er komen geen webhooks binnen
Er kwam minder Vito binnen dan ik afschreef
Er kwam minder Vito binnen dan ik afschreef
402 VITO_INSUFFICIENT_OWNER_FUNDS
402 VITO_INSUFFICIENT_OWNER_FUNDS
/v1/add wordt uit je eigen saldo gefinancierd, niet uit het niets gemaakt. Vul aan.