Api.Airforce
PROBLEEMOPLOSSING

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"}]
  }'
ℹ️
Snelle zelftest: Geen terminal bij de hand? Plak hetzelfde model + prompt in de Playground vanuit het Dashboard — zelfde effect, geen installatie nodig.

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.

400Jouw kantBad Request — misvormd JSON, ontbrekend verplicht veld, onbekende parameter. Herstel de request-body.
401Jouw kantUnauthorized — ontbrekende of ongeldige API-sleutel. Controleer of de Authorization-header het voorvoegsel "Bearer " bevat.
402Jouw kantPayment Required — plan uitgeput of Pay-as-you-go-saldo leeg. Abonneer of vul bij.
403Jouw kantForbidden — je plan of sleutelspecifieke toestemming staat dit model of endpoint niet toe.
404Jouw kantNot Found — onbekend endpoint of model-ID. Controleer het URL-pad en de spelling van het model.
413Jouw kantPayload Too Large — invoer overschrijdt het contextvenster van het model. Verkort de prompt.
429Jouw kantToo Many Requests — snelheidslimiet bereikt (RPM, RPD of dagelijks tokenplafond). Vertraag of upgrade.
500Onze kantInternal Server Error — een bug aan onze kant. Meld het als het langer dan een minuut aanhoudt.
502Onze kantBad Gateway — backend midden in een herstart (we deployen een paar keer per dag). Wacht 5–10 seconden en probeer opnieuw.
503Onze kantService Unavailable — elke upstream-provider voor dat model is tegelijkertijd uitgevallen. Meld het als het langer dan een paar minuten aanhoudt.
💡
Vuistregel: 4xx-codes betekenen dat je client iets deed wat de server afwees. 5xx-codes betekenen dat wij er niet in zijn geslaagd een geldig verzoek te verwerken. De JSON-foutbody in de respons noemt gewoonlijk het veld dat de controle heeft getriggerd.

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.
ℹ️
Hoe effectief te rapporteren: Tickets die met deze details binnenkomen krijgen bij de eerste poging een echt antwoord. Tickets zonder deze details vereisen bijna altijd heen-en-weer communicatie voordat we kunnen helpen.

Vraag het in #support op Discord

Vastgelopen bij het instellen of wil je een gratis sleutel? Vraag het de community op onze Discord.

Word lid van onze Discord