Limieten & foutcodes
De API gebruikt standaard HTTP-statuscodes. De foutbody volgt het formaat van de client die je gebruikt, zodat de OpenAI- en Anthropic-SDK’s hem ongewijzigd kunnen lezen.
Foutformaat
Endpoints in OpenAI-formaat geven een object error terug met message, type en code. Endpoints in Anthropic-formaat geven "type": "error" terug met een object error dat type en message bevat. Fouten die midden in een stream optreden, worden verstuurd als event met dezelfde vorm.
402
{
"error": {
"message": "GeraiPoints tidak cukup, silakan top up",
"type": "insufficient_quota",
"code": "insufficient_quota"
}
}De inhoud van
message is in het Indonesisch en kan veranderen. Controleer in je programmalogica de HTTP-statuscode en type/code, niet de tekst van het bericht.Statuscodes
| Status | type / code | Betekenis | Wat te doen |
|---|---|---|---|
| 400 | invalid_request_error | Ongeldige request: de body is geen JSON, model is leeg, of messages ontbreekt of is leeg. Komt ook voor als de base URL fout is, waardoor het pad /v1/v1/… wordt. | Controleer de body en de base URL. |
| 401 | authentication_error | API-key niet meegestuurd, onjuist of ingetrokken — of de key wordt op het verkeerde pad gebruikt (bansos-key op een betaald endpoint, of andersom). | Controleer de key en de base URL — Authenticatie. |
| 402 | insufficient_quota | Niet genoeg GeraiPoints voor deze request. | Waardeer GeraiPoints op en verstuur opnieuw. |
| 403 | permission_error | Het model staat niet op de allowlist van deze key, of het is een model voor een plan dat je nog niet hebt. | Voeg het model toe aan de allowlist van de key, of gebruik een andere key. |
| 404 | model_not_found | Onbekend model-id of model tijdelijk niet opengesteld. Namen met een prefix zoals gp/… of openai/… geven ook 404. | Kopieer het exacte id uit de modellenlijst. |
| 413 | — | De request-body is te groot om door de server te worden geaccepteerd. | Vat de gespreksgeschiedenis samen of verklein de bijlagen. |
| 429 | rate_limit_error | Te veel requests: de capaciteit van het model is vol, of de limiet van het Unlimited-plan/Bansos is overschreden. | Wacht zoals aangegeven in Retry-After (indien aanwezig) en probeer het daarna opnieuw met een pauze. |
| 502 | api_error | De modeldienst is druk of heeft problemen; de request wordt niet gefactureerd. | Probeer het na een paar seconden opnieuw, of gebruik een ander model. |
| 503 | api_error | Het model is in onderhoud of tijdelijk niet beschikbaar; de request wordt niet gefactureerd. | Probeer het later opnieuw of gebruik een ander model. |
Gebruikslimieten
| Soort | Limiet |
|---|---|
| Betaalde key (gk-) | Geen vaste rate limit per key; het gebruik wordt begrensd door je GeraiPoints-saldo. Een 429 komt alleen voor als de capaciteit van het model vol is. |
| Unlimited-plan | Limiet op requests per minuut en gelijktijdige requests per account. Een 429-antwoord bevat Retry-After en x-ratelimit-*. Details op de Unlimited-pagina. |
| Gratis tier (Bansos) | Quotum aan requests per dag en een limiet per minuut. Een 429-antwoord bevat Retry-After en x-ratelimit-*. Resterend quotum op de Bansos-pagina. |
| Grootte & antwoord | Een te grote body wordt geweigerd met 413. De lengte van het antwoord (max_tokens) kan automatisch worden verlaagd als je saldo niet volstaat voor de gevraagde waarde. |
| API-key | Maximaal 20 actieve keys per account; allowlist van maximaal 64 modellen per key. |
| Klantsleutels | Limieten gelden vóór verwerking: een verzoek dat de resterende limiet zou overschrijden, wordt geweigerd. Eenmalige limiet op → 402 KEY_BATAS_HABIS (verhoog de limiet om tegoed toe te voegen); dag-/maandlimiet bereikt → 429 KEY_BATAS_HARIAN / KEY_BATAS_BULANAN met Retry-After. Gepauzeerde sleutel → 403 KEY_DIJEDA. -unli- en bansos-modellen werken niet met klantsleutels. |
Correct opnieuw proberen
- Probeer alleen opnieuw bij 429, 502 en 503, met steeds langere pauzes (bijv. 1, 2, 4, 8 seconden) en maximaal 2–3 keer.
- Probeer 400, 401, 402, 403 en 404 niet opnieuw — herstel eerst de request; anders blijft het resultaat hetzelfde.
- Respecteer de header
Retry-Afterals die aanwezig is. - Elke nieuwe poging is een nieuwe request die wordt gefactureerd. Ligt de oorzaak bij een timeout in je app, verhoog dan die timeout — zie Instellingen agentic tools.