Fejlkoder
Fejlkoder
Alle API-fejl returnerer et konsistent JSON-format:
{ "error": "Not Found", "message": "Resume not found", "statusCode": 404 }HTTP-statuskoder
| Kode | Navn | Beskrivelse |
|---|---|---|
200 | OK | Forespørgslen lykkedes |
201 | Created | Ressource oprettet |
400 | Bad Request | Ugyldig forespørgselskrop eller parametre |
401 | Unauthorized | Manglende eller ugyldig API-nøgle |
402 | Payment Required | Ingen kreditter tilbage. Køb flere eller vent på månedlig nulstilling |
403 | Forbidden | Handlingen er ikke tilladt (f.eks. BYOK uden abonnement) |
404 | Not Found | Ressourcen findes ikke |
413 | Payload Too Large | Filupload overskrider grænsen på 10 MB |
422 | Unprocessable Entity | Gyldig JSON men semantisk ugyldig (f.eks. for kort jobbeskrivelse) |
429 | Too Many Requests | Hastighedsbegrænsning overskredet. Prøv igen efter Retry-After-headerværdien |
500 | Internal Server Error | Noget gik galt på vores side |
Almindelige fejlscenarier
Manglende API-nøgle
{ "error": "Unauthorized", "message": "Missing x-api-key header", "statusCode": 401 }Løsning: Tilføj din API-nøgle til x-api-key-headeren.
Ugyldig API-nøgle
{ "error": "Unauthorized", "message": "Invalid API key", "statusCode": 401 }Løsning: Tjek din nøgle på console.laddro.com. Nøglen kan være blevet tilbagekaldt.
Ingen kreditter
{ "error": "Payment Required", "message": "No credits remaining. Purchase credits at console.laddro.com", "statusCode": 402 }Løsning: Køb en kreditpakke eller vent på, at din månedlige gratiskvote nulstilles.
BYOK uden aktivt abonnement
{ "error": "Forbidden", "message": "BYOK requires an active recurring Laddro subscription", "statusCode": 403 }Løsning: Abonner på laddro.com med en løbende plan.
Ugyldig udbydernøgle
{ "error": "Unprocessable Entity", "message": "API key validation failed for provider 'anthropic': invalid_api_key", "statusCode": 422 }Løsning: Dobbelttjek udbyderens API-nøgle. API'et validerer nøgler med et testkald, inden de gemmes.
Strategi for genforsøg
For 429- og 5xx-fejl, implementer eksponentiel backoff:
async function withRetry(fn: () => Promise<Response>, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fn()
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '1')
await new Promise(r => setTimeout(r, retryAfter * 1000))
continue
}
return response
} catch (error) {
if (i === maxRetries - 1) throw error
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000))
}
}
}