Feil og HTTP-statuskoder
Applikasjonsfeil bruker application/problem+json (RFC 9457). Bygg logikken på de stabile feltene code og action, ikke på den lesbare teksten i detail. Valideringsfeil inneholder plasseringer som JSON Pointer i errors. Oppgi request_id når du kontakter kundestøtte. Feil i proxy eller transport kan returnere et annet innhold, så sjekk Content-Type før du tolker JSON.
Det syntetiske 422-eksemplet nedenfor viser ugyldig e-postsyntaks før belastning. Den offentlige feilkatalogen viser hver kode, status, forklaring og anbefalt handling.
| HTTP-status | Vanlig betydning | Neste steg |
|---|---|---|
| 400 / 413 / 415 | Ugyldig JSON, for stort innhold eller medietype som ikke støttes. | Rett forespørselen. |
| 401 / 403 | Tilgang avvist, kontobegrensning eller for få kreditter. | Sjekk code; rett tilgangen, eller fyll på kreditter / vent på tilbakestillingen av IP-prøveperioden. |
| 422 | Ugyldige inndata eller alternativer som ikke kan kombineres. | Rett feltene som er oppgitt i errors. |
| 404 / 405 | Ukjent rute eller HTTP-metode som ikke støttes. | Kontroller stien til endepunktet og svar-headeren Allow. |
| 429 | Grense for antall forespørsler eller samtidige operasjoner. | Vent i tiden som er angitt i Retry-After, før du sender en ny forespørsel. |
| 500 | Uventet serverfeil. | Kontakt kundestøtte med request_id; sjekk belastningen før du prøver på nytt. |
| 502 / 503 / 504 | Feil hos leverandør, i en avhengighet, ved belastning eller tidsavbrudd. | Sjekk code, action og billing_status før du prøver på nytt. |
{
"type": "urn:genderapi:problem:validation_error",
"title": "validation error",
"status": 422,
"detail": "A valid email address is required.",
"instance": "urn:uuid:11111111-1111-4111-8111-111111111111",
"code": "validation_error",
"request_id": "11111111-1111-4111-8111-111111111111",
"documentation": "https://api.genderapi.io/api/v2/errors",
"action": "correct_request",
"errors": [
{
"pointer": "/value",
"message": "Invalid email address."
}
],
"meta": {
"request_id": "11111111-1111-4111-8111-111111111111",
"duration_ms": 12,
"access": {
"mode": "ip_trial",
"reason": "api_key_missing"
},
"usage": {
"charged_credits": 0,
"remaining_credits": null,
"billing_status": "not_charged",
"resets_at": "2026-09-26T12:00:00.000Z",
"limit": 10,
"period_seconds": 86400
}
}
}Felt i feilsvaret
| Felt | Type | Kan være null | Eksempel | Beskrivelse |
|---|---|---|---|---|
type | string | Nei | "urn:genderapi:problem:validation_error" | URI som identifiserer problemtypen. |
title | string | Nei | "validation error" | Kort, lesbar tittel på feilen. |
status | integer | Nei | 422 | HTTP-statuskode. |
detail | string | Nei | "The request does not match the schema." | Forklaring på denne konkrete feilen. |
instance | string | Nei | "urn:uuid:550e8400-e29b-41d4-a716-446655440000" | ID for den mislykkede forespørselen. |
code | string | Nei | "validation_error" | Stabil, maskinlesbar feilkode. |
request_id | string | Nei | "550e8400-e29b-41d4-a716-446655440000" | Unik ID for dette HTTP-forsøket; sendes også i X-Request-ID. |
documentation | string | Nei | "https://api.genderapi.io/api/v2/errors" | Lenke til feilkatalogen, når den er oppgitt. |
action | string | Nei | "correct_request" | Anbefalt tiltak; finnes når det er definert i feilkatalogen. |
errors | array<object> | Nei | [{"pointer":"/value","message":"must NOT have fewer than 1 characters"}] | Valideringsproblemer, når de er tilgjengelige. Hvert element inneholder pointer og message. |
errors[].pointer | string | Nei | "/value" | JSON Pointer som peker på de ugyldige inndataene. |
errors[].message | string | Nei | "must NOT have fewer than 1 characters" | Forklaring på valideringsproblemet. |
Metadata om tilgang, belastning og forespørsel
| Felt | Type | Kan være null | Eksempel | Beskrivelse |
|---|---|---|---|---|
meta.request_id | string | Nei | "550e8400-e29b-41d4-a716-446655440000" | Unik ID for dette HTTP-forsøket; sendes også i X-Request-ID. |
meta.duration_ms | integer | Nei | 42 | Behandlingstid for forespørselen i millisekunder. |
meta.access.mode | string | Nei | "api_key" | api_key, ip_trial eller unauthenticated. Kontroller at verdien er api_key når du bruker en betalt konto. |
meta.access.reason | string | Ja | null | Årsak til at IP-prøveperioden ble brukt: api_key_missing, api_key_invalid eller api_key_not_found; ellers null. |
meta.usage.charged_credits | integer | Ja | 1 | Netto belastede kreditter. 0 før belastning eller etter en bekreftet full refusjon; null når belastningen ikke er bekreftet. |
meta.usage.remaining_credits | integer | Ja | 99 | Saldo når operasjonen er fullført. Kan være negativ; null når saldoen ikke er tilgjengelig eller belastningen ikke er bekreftet. |
meta.usage.billing_status | string | Nei | "confirmed" | not_charged, confirmed eller unconfirmed. Sjekk dette før du prøver en mislykket prediksjon på nytt. |
meta.usage.resets_at | string | Ja | "2026-09-27T12:00:00.000Z" | Tidspunkt for tilbakestilling av IP-prøveperioden i UTC (ISO 8601); null for kontoer med API-nøkkel eller når tidspunktet er ukjent. |
meta.usage.limit | integer | Ja | 10 | Kvoten i IP-prøveperioden; null for kontoer med API-nøkkel. |
meta.usage.period_seconds | integer | Ja | 86400 | Lengden på IP-prøveperioden i sekunder; null for kontoer med API-nøkkel. |
Nye forsøk og belastning
Hver prediksjonsforespørsel er en ny operasjon, også en identisk forespørsel som sendes på nytt. De vanlige kredittreglene gjelder for hver forespørsel. Det finnes ingen beskyttelse mot dupliserte forespørsler, så unngå automatiske nye forsøk etter brudd i tilkoblingen eller et ukjent utfall.
Ved et 429-svar venter du i tiden som er angitt i Retry-After, før du sender en ny forespørsel. Ved feil i prediksjoner sjekker du først code, action og meta.usage.billing_status. Ved billing_reconciliation_required eller ubekreftet belastning kontakter du kundestøtte med request_id før du prøver på nytt.
En delvis vellykket samleforespørsel kan returnere HTTP 200. Kontroller hvert element, og send bare de mislykkede elementene på nytt etter at belastningen er bekreftet; vellykkede elementer blir belastet igjen hvis de sendes på nytt.
X-Request-ID og meta.request_id identifiserer det gjeldende HTTP-forsøket. Les /usage for gjeldende saldo. HEAD starter ikke en prediksjon som belastes. Svar på prediksjoner og kontoforespørsler kan ikke bufres.
Klienter bør tåle nye felt i svaret og beholde null-verdier når informasjon ikke er tilgjengelig.
Forespørselsgrenser
Håndter HTTP 429 og Retry-After i stedet for å anta at forespørsler alltid godtas opp til disse grensene. Tjenestekapasiteten er delt. Verdiene som vises, er gjeldende standardverdier for tjenesten. Svar når en forespørselsgrense er nådd, inneholder X-RateLimit-Limit, X-RateLimit-Remaining og X-RateLimit-Reset (Unix-sekunder). Retry-After er en ventetid i sekunder. Disse headerne beskriver forespørselsgrenser, ikke gjenværende kreditter. Også den gratis avlesningen via /usage teller mot forespørselsgrensene.
| Grense | Verdi |
|---|---|
| JSON-body i forespørselen | Maksimalt 64 KiB |
| Prediksjonsverdi | 1–254 tegn |
| Samleforespørsel | 50 elementer med API-nøkkel; 10 i IP-prøveperioden |
| Grense per konto | 120 forespørsler per minutt |
| Grense per IP-adresse | 600 forespørsler per minutt |
| Samtidige operasjoner | 2 per konto; 16 for hele tjenesten |