Voordat je een bug meldt
De meeste "bugs" zijn configuratieproblemen die je in 60 seconden kunt oplossen — doorloop eerst deze checklist.
Als iets niet werkt, is de snelste manier om te achterhalen of het aan jouw kant of onze kant ligt, hetzelfde verzoek vanuit een ander hulpmiddel uit te voeren.
Ongeveer 9 van de 10 meldingen van "kapotte API" blijken te gaan om een verkeerd geconfigureerde basis-URL, een verlopen API-sleutel, een verkeerde modelnaam, of een request-body-indeling uit een tutorial die drie SDK-versies achterloopt.
Snelle zelftest
Kopieer dit curl-commando naar een terminal. Vervang YOUR_KEY door je API-sleutel uit het Dashboard en voer het uit. Als je een normale aanvulling terugkrijgt, zijn je API-sleutel, je netwerk en onze backend allemaal gezond — als er iets fout gaat, zit het probleem in je clientcode of -omgeving.
cURL
curl https://api.airforce/v1/chat/completions \
-H "Authorization: Bearer sk-air-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"messages": [{"role": "user", "content": "ping"}]
}'Stap-voor-stap checklist
Is je API-sleutel geldig?
Open Dashboard → API Keys en controleer of de sleutel overeenkomt met wat je code gebruikt. Een veelvoorkomende valkuil is witruimte vóór het voorvoegsel "sk-air-" door kopiëren en plakken.
Symptoom: 401 Unauthorized.
Is de basis-URL correct?
De basis-URL moet https://api.airforce/v1 zijn — niet http, en het achtervoegsel /v1 is verplicht. Tutorials die dateren van vóór het v1-pad van OpenAI laten dit soms weg.
Symptoom: 404 Not Found, of curl blijft hangen.
Is de modelnaam correct gespeld?
Model-ID's zijn hoofdlettergevoelig. Bezoek de Models-pagina of roep GET /v1/models aan om het exacte ID te bevestigen. Een typefout of een verouderd model retourneert een duidelijke fout in plaats van "werkend maar verkeerd".
Symptoom: 400 unknown_model of 404 model_not_found.
Is de request-body correct gevormd?
Chat-aanvullingen gebruiken een messages-array. Afbeeldingen gebruiken prompt + n. Audio-TTS gebruikt input + voice. Een chat-vormige body sturen naar /v1/images/generations retourneert 400 — makkelijk over het hoofd te zien bij het kopiëren van fragmenten tussen documenten.
Symptoom: 400 met het betreffende veld vermeld in de responsebody.
Heb je een snelheidslimiet of quotumplafond bereikt?
429 = te veel verzoeken deze minuut. 402 = je plan of saldo is uitgeput. Beide zijn zichtbaar op het Dashboard. Gratis-laag-verzoeken hebben aparte limieten ten opzichte van betaald-plan-verzoeken, dus een betaald model kan prima antwoorden terwijl een gratis model de snelheidslimiet bereikt.
Symptoom: 429 Too Many Requests of 402 Payment Required.
Is het model momenteel beschikbaar?
Controleer de Models-pagina — provideruitval wordt weergegeven als "degraded" of "major outage". Als één model niet werkt terwijl andere wel werken, is het een probleem aan de providerkant waar wij omheen routeren, geen clientfout.
Symptoom: een specifiek model retourneert 5xx terwijl andere wel werken.
Wat HTTP-statuscodes betekenen
Elke foutrespons bevat een standaard HTTP-statuscode. Weten wat elk ervan je vertelt, bespaart een ticket.
| 400 | Jouw kant | Bad Request — misvormd JSON, ontbrekend verplicht veld, onbekende parameter. Herstel de request-body. |
| 401 | Jouw kant | Unauthorized — ontbrekende of ongeldige API-sleutel. Controleer of de Authorization-header het voorvoegsel "Bearer " bevat. |
| 402 | Jouw kant | Payment Required — plan uitgeput of Pay-as-you-go-saldo leeg. Abonneer of vul bij. |
| 403 | Jouw kant | Forbidden — je plan of sleutelspecifieke toestemming staat dit model of endpoint niet toe. |
| 404 | Jouw kant | Not Found — onbekend endpoint of model-ID. Controleer het URL-pad en de spelling van het model. |
| 413 | Jouw kant | Payload Too Large — invoer overschrijdt het contextvenster van het model. Verkort de prompt. |
| 429 | Jouw kant | Too Many Requests — snelheidslimiet bereikt (RPM, RPD of dagelijks tokenplafond). Vertraag of upgrade. |
| 500 | Onze kant | Internal Server Error — een bug aan onze kant. Meld het als het langer dan een minuut aanhoudt. |
| 502 | Onze kant | Bad Gateway — backend midden in een herstart (we deployen een paar keer per dag). Wacht 5–10 seconden en probeer opnieuw. |
| 503 | Onze kant | Service Unavailable — elke upstream-provider voor dat model is tegelijkertijd uitgevallen. Meld het als het langer dan een paar minuten aanhoudt. |
Wanneer het echt een bug is
Als de curl-zelftest hierboven slaagt maar exact hetzelfde verzoek vanuit je code niet, ligt het probleem in je client (of de bibliotheek die deze gebruikt). Als de zelftest zelf mislukt met een 5xx, of een 4xx retourneert met een bericht dat niet overeenkomt met hoe je verzoek eruitziet, is dat het melden waard.
Hoe effectief te rapporteren
Open een supportticket vanuit het Dashboard of post in #support op Discord. Voeg toe:
- De volledige HTTP-statuscode en de responsebody (ook de cf-ray-responsheader, indien aanwezig).
- Geschatte tijdstempel in UTC.
- Modelnaam en welk endpoint je hebt aangeroepen.
- Een minimale cURL die het reproduceert (maskeer je echte API-sleutel!).
- Of de bovenstaande zelftest werkt voor jou op dezelfde sleutel.
Vastgelopen bij het instellen of wil je een gratis sleutel? Vraag het de community op onze Discord.
Word lid van onze Discord