Zo werkt het
MarkdownWat er met een verzoek gebeurt tussen je programma en het model.
Volledige gids
Je verstuurt een verzoek naar Ailoot API zoals je het rechtstreeks naar OpenAI, Anthropic of Google zou sturen. Ailoot controleert de sleutel en het saldo, geeft het verzoek aan het model door, retourneert het antwoord in hetzelfde formaat en schrijft het daadwerkelijke verbruik af.
Eén sleutel — drie formaten
Het formaat wordt door het verzoekpad bepaald, niet door het model. Je kunt hetzelfde Claude-model via OpenAI Chat, OpenAI Responses of Anthropic Messages aanroepen — het antwoord volgt het formaat van het aangeroepen pad.
| Formaat | Pad | Wie het gebruikt |
|---|---|---|
| OpenAI Chat Completions | /v1/chat/completions | OpenAI SDK, de meeste chats en editors, n8n, LangChain |
| OpenAI Responses | /v1/responses | Codex CLI, OpenAI Agents SDK, nieuwere SDK-versies |
| Anthropic Messages | /v1/messages | Claude Code, Anthropic SDK, Zed, Cline |
| Gemini | /v1beta/models/{model}:generateContent | Gemini CLI, Google GenAI SDK |
Geldzaken: reservering en één afschrijving
- Vóór het versturen van een nieuw tekstverzoek reserveert Ailoot een bedrag op basis van een schatting van de invoer en een typisch antwoord, rekening houdend met de limiet (
max_tokens) en de voorwaarden van het exacte model. Past de reservering niet binnen het vrije saldo of de sleutellimiet, dan kan de meegestuurde limiet alleen worden verlaagd bij een model en methode die die limiet daadwerkelijk naleven, en nooit onder 256 tokens en het ingestelde minimum voor het antwoord. Voor afbeeldingen, video en audio als output blijft de volledige reservering voor de kosten van het resultaat gelden. - Na het antwoord volgt één afschrijving voor het daadwerkelijke verbruik. De ongebruikte reservering wordt direct aan het saldo teruggegeven.
- Is het antwoord duurder dan de reservering, dan wordt het verschil van het vrije saldo afgeschreven. Het saldo wordt nooit negatief.
- Als er onvoldoende saldo is voor zelfs de minimale reservering, wordt het verzoek niet verstuurd: je krijgt een duidelijke fout 402 en er wordt niets afgeschreven.
- Een fout zonder resultaat wordt niet in rekening gebracht.
Meer informatie en een rekenvoorbeeld staan op de pagina Reservering en afschrijving.
Fouten met een Request ID
Elk antwoord krijgt een verzoek-ID: in de header X-Request-ID en in de foutmelding. Fouten komen in het JSON-formaat van de aangeroepen API, zodat SDK’s ze herkennen. Als er iets misgaat, stuur de Request ID dan naar support — zo vinden we het verzoek binnen een minuut terug.
{
"code": "API_KEY_REQUIRED",
"error": {
"code": "invalid_api_key",
"message": "No API key was sent with the request. Nothing was charged. Please check that the full key is sent in the Authorization header as \"Bearer <key>\". Request ID: 3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6.",
"param": null,
"reason": "invalid_api_key",
"request_id": "3b28d3de-5b02-4d07-9f3c-4b9a7d0e68d6",
"type": "invalid_request_error"
},
"message": "No API key was sent with the request. Nothing was charged. …"
}Streams en timeouts
Gestreamde antwoorden (stream: true) gebruiken Server-Sent Events. Ailoot levert het betaalde tekstantwoord na de kostenberekening. Met stream: true blijft het formaat dus gestreamd (SSE), maar komt de tekst als één blok binnen wanneer het model klaar is, niet woord voor woord. Duurt het voorbereiden van het antwoord langer dan ongeveer 15 seconden, dan sturen Chat Completions-, Responses- en Messages-streams eerst statusregels : ping (ongeveer elke 10 seconden), daarna de regel : ailoot-charged-usd … met het afgeschreven bedrag en de gegevens zelf. SDK’s slaan die regels over.
Het Gemini-formaat bevat geen statusregels: het antwoord van :streamGenerateContent komt na de berekening in zijn geheel binnen. Houd voor redeneermodellen voldoende marge in de clienttimeout: meerdere minuten is normaal.
Antwoordheaders
X-Request-ID wordt met elk antwoord meegestuurd. De andere headers voegt Ailoot aan betaalde tekstantwoorden toe:
| Header | Inhoud |
|---|---|
X-Request-ID | Verzoek-ID — support vraagt hierom |
X-Ailoot-Charged-USD | Het voor dit verzoek afgeschreven bedrag in dollars |
X-Ailoot-Output-Tokens | Het aantal betaalde antwoordtokens |
X-Ailoot-Max-Tokens-Capped | De verlaagde antwoordlimiet omdat het saldo onvoldoende was voor de volledige reservering |
X-Ailoot-Notice-Code, X-Ailoot-Notice | Uitleg wanneer het antwoord de lengtelimiet heeft bereikt |
Als de stream al met statusregels is begonnen, komen deze gegevens vóór de data in een commentaarregel, niet in een header.
Promptcache
Als het model caching ondersteunt, kan een opnieuw verstuurd lang voorvoegsel (systeeminstructie, documenten) goedkoper zijn. De prijzen voor cachelezen en -schrijven staan op de modelkaart in de catalogus. De ontwikkelaar van het model bepaalt of er een cachehit is; Ailoot garandeert die niet.