Felkoder
Referens för alla felkoder och HTTP-statuskoder som returneras av TIC Identity API.
HTTP-statuskoder
| Status |
Betydelse |
Åtgärd |
200 |
OK |
Anropet lyckades |
202 |
Accepted |
Session väntar på användare (polla igen) |
400 |
Bad Request |
Kontrollera request-parametrar |
401 |
Unauthorized |
Kontrollera API-nyckeln |
403 |
Forbidden |
API-nyckeln saknar behörighet |
404 |
Not Found |
Resursen finns inte (session, etc.) |
410 |
Gone |
Sessionen misslyckades eller avbröts |
429 |
Too Many Requests |
Rate limit eller månadsgräns överskriden |
500 |
Internal Server Error |
Kontakta support om det upprepas |
API-felkoder
Fel returneras i formatet:
{
"error": "error_code",
"message": "Beskrivning av felet"
}
Autentisering
| Felkod |
Beskrivning |
invalid_api_key |
API-nyckeln är ogiltig eller saknas |
api_key_disabled |
API-nyckeln har inaktiverats |
tenant_inactive |
Tenant är inte aktiv |
Session
| Felkod |
Beskrivning |
session_not_found |
Sessionen finns inte eller har gått ut |
session_expired |
Sessionen har gått ut |
already_extended |
Sessionen har redan förlängts |
qr_not_available |
QR-kod är inte tillgänglig för denna session |
Validering
| Felkod |
Beskrivning |
provider_not_enabled |
Identitetsleverantören är inte aktiverad för tenant |
invalid_callback_url |
Callback-URL:en är inte godkänd |
invalid_webhook_url |
Webhook-URL:en är inte godkänd |
missing_visible_data |
userVisibleData krävs för signering |
Användningsgränser
| Felkod |
Beskrivning |
limit_exceeded |
Månadsgräns för autentiseringar överskriden |
Berikning
| Felkod |
Beskrivning |
enrichment_not_enabled |
Berikning är inte aktiverat för tenant |
no_valid_types |
Ingen av de begärda typerna är konfigurerade |
session_not_completed |
Sessionen är inte slutförd |
no_personal_number |
Sessionen saknar personnummer |
url_expired |
Beriknings-URL:en har gått ut (30 min) |
BankID hintCode
När en BankID-session misslyckas eller väntar returneras en hintCode
som indikerar orsaken. Använd dessa för att visa lämpligt meddelande.
Väntande (status: pending)
| hintCode |
Betydelse |
Åtgärd |
outstandingTransaction |
Väntar på användaren att starta BankID |
Visa QR-kod och "Starta BankID-appen" |
noClient |
Ingen BankID-klient svarar |
Visa "Starta BankID-appen" |
started |
BankID-appen har startats, söker efter BankID |
Visa "Söker efter BankID..." |
userSign |
Användaren identifierar sig |
Visa "Skriv in din säkerhetskod..." |
userMrtd |
Användaren skannar ID-handling |
Visa "Fotografera din ID-handling..." |
Misslyckade (status: failed)
| hintCode |
Betydelse |
Åtgärd |
userCancel |
Användaren avbröt |
Visa "Åtgärden avbröts" |
cancelled |
Sessionen avbröts |
Visa "Åtgärden avbröts. Försök igen." |
expiredTransaction |
Sessionen gick ut |
Visa "BankID-appen svarar inte..." |
certificateErr |
Ogiltigt eller spärrat BankID |
Visa "Ditt BankID är för gammalt..." |
startFailed |
Kunde inte starta BankID |
Visa "Misslyckades att läsa av QR-koden..." |
alreadyInProgress |
Pågående session för personnumret |
Visa "En identifiering pågår redan..." |
Best practices
-
Logga fel: Logga alltid
error och message
för felsökning.
-
Visa användarvänliga meddelanden: Översätt felkoder till
förståeliga meddelanden för slutanvändare.
-
Hantera 429: Implementera exponentiell backoff vid rate limiting.
-
Retry-logik: 500-fel kan vara tillfälliga - prova igen med backoff.
-
Timeout: Sätt rimliga timeouts (10-30 sekunder) på anrop.
Exempel på felhantering
try {
const result = await client.auth.poll(sessionId);
if (result.status === 'complete') {
// Lyckad autentisering
handleSuccess(result.user);
}
} catch (error) {
if (error.status === 410) {
// Session misslyckades
const message = getSwedishMessage(error.hintCode);
showError(message);
} else if (error.status === 429) {
// Rate limited
showError('För många förfrågningar. Försök igen om en stund.');
} else if (error.status >= 500) {
// Server error - retry
await delay(2000);
return retry();
} else {
// Övriga fel
console.error('API error:', error);
showError('Något gick fel. Försök igen.');
}
}