Felkoder
Felkoder
Alla API-fel returnerar ett konsekvent JSON-format:
{
"error": "Not Found",
"message": "Resume not found",
"statusCode": 404
}HTTP-statuskoder
| Kod | Namn | Beskrivning |
|---|---|---|
200 | OK | Förfrågan lyckades |
201 | Created | Resurs skapad framgångsrikt |
400 | Bad Request | Ogiltig förfrågningskropp eller parametrar |
401 | Unauthorized | Saknad eller ogiltig API-nyckel |
402 | Payment Required | Inga krediter kvar. Köp fler eller vänta på månadsåterställning |
403 | Forbidden | Åtgärden är inte tillåten (t.ex. BYOK utan prenumeration) |
404 | Not Found | Resursen finns inte |
413 | Payload Too Large | Filuppladdningen överskrider gränsen på 10 MB |
422 | Unprocessable Entity | Giltig JSON men semantiskt ogiltig (t.ex. jobbeskrivning för kort) |
429 | Too Many Requests | Hastighetsbegränsning överskriden. Försök igen efter Retry-After-headervärdet |
500 | Internal Server Error | Något gick fel på vår sida |
Vanliga felscenarier
Saknad API-nyckel
{
"error": "Unauthorized",
"message": "Missing x-api-key header",
"statusCode": 401
}Lösning: Lägg till din API-nyckel i x-api-key-headern.
Ogiltig API-nyckel
{
"error": "Unauthorized",
"message": "Invalid API key",
"statusCode": 401
}Lösning: Kontrollera din nyckel på console.laddro.com. Nyckeln kan ha blivit återkallad.
Inga krediter
{
"error": "Payment Required",
"message": "No credits remaining. Purchase credits at console.laddro.com",
"statusCode": 402
}Lösning: Köp ett kreditpaket eller vänta på att din månatliga gratiskvot återställs.
BYOK utan aktiv prenumeration
{
"error": "Forbidden",
"message": "BYOK requires an active recurring Laddro subscription",
"statusCode": 403
}Lösning: Prenumerera på laddro.com med en löpande plan.
Ogiltig leverantörsnyckel
{
"error": "Unprocessable Entity",
"message": "API key validation failed for provider 'anthropic': invalid_api_key",
"statusCode": 422
}Lösning: Dubbelkolla din leverantörs API-nyckel. API:et validerar nycklar med ett testanrop innan de sparas.
Strategi för omförsök
För 429- och 5xx-fel, implementera exponentiell 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))
}
}
}