Chyby a stavové kódy HTTP
Chyby aplikace používají application/problem+json (RFC 9457). Rozhodujte se podle stabilních polí code a action, ne podle textu v detail. Chyby validace obsahují v errors umístění ve formátu JSON Pointer. Při kontaktu s podporou uveďte request_id. Selhání proxy nebo přenosu může vrátit jiné tělo, proto před parsováním JSON zkontrolujte Content-Type.
Následující syntetický příklad 422 ukazuje neplatnou syntaxi e-mailu před účtováním. Veřejný katalog chyb uvádí každý kód, stav, vysvětlení a doporučený postup.
| Stav HTTP | Obvyklý význam | Další krok |
|---|---|---|
| 400 / 413 / 415 | Chybný JSON, příliš velké tělo nebo nepodporovaný typ média. | Opravte požadavek. |
| 401 / 403 | Přístup zamítnut, omezení účtu nebo nedostatek kreditů. | Zkontrolujte code; opravte přístup, nebo doplňte kredity / počkejte na obnovení zkušebního režimu. |
| 422 | Neplatný vstup nebo neslučitelné možnosti. | Opravte pole uvedená v errors. |
| 404 / 405 | Neznámá cesta nebo nepodporovaná metoda HTTP. | Zkontrolujte cestu k endpointu a hlavičku odpovědi Allow. |
| 429 | Limit počtu požadavků nebo souběžných operací. | Před odesláním dalšího požadavku počkejte po dobu uvedenou v Retry-After. |
| 500 | Neočekávané selhání serveru. | Kontaktujte podporu a uveďte request_id; před opakováním zkontrolujte účtování. |
| 502 / 503 / 504 | Selhání poskytovatele, závislosti, účtování nebo vypršení časového limitu. | Před opakováním zkontrolujte code, action a billing_status. |
{
"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
}
}
}Pole chybové odpovědi
| Pole | Typ | Může být null | Příklad | Popis |
|---|---|---|---|---|
type | string | Ne | "urn:genderapi:problem:validation_error" | URI, které identifikuje typ problému. |
title | string | Ne | "validation error" | Krátký srozumitelný název chyby. |
status | integer | Ne | 422 | Stavový kód HTTP. |
detail | string | Ne | "The request does not match the schema." | Vysvětlení tohoto konkrétního selhání. |
instance | string | Ne | "urn:uuid:550e8400-e29b-41d4-a716-446655440000" | Identifikátor neúspěšného požadavku. |
code | string | Ne | "validation_error" | Stabilní strojově čitelný kód chyby. |
request_id | string | Ne | "550e8400-e29b-41d4-a716-446655440000" | Jedinečný identifikátor tohoto pokusu HTTP; posílá se také v X-Request-ID. |
documentation | string | Ne | "https://api.genderapi.io/api/v2/errors" | Odkaz na katalog chyb, pokud je uveden. |
action | string | Ne | "correct_request" | Doporučený postup nápravy; uvádí se, pokud je definován v katalogu chyb. |
errors | array<object> | Ne | [{"pointer":"/value","message":"must NOT have fewer than 1 characters"}] | Problémy s validací, pokud jsou k dispozici. Každá položka obsahuje pointer a message. |
errors[].pointer | string | Ne | "/value" | JSON Pointer označující neplatný vstup. |
errors[].message | string | Ne | "must NOT have fewer than 1 characters" | Vysvětlení problému s validací. |
Metadata přístupu, účtování a požadavku
| Pole | Typ | Může být null | Příklad | Popis |
|---|---|---|---|---|
meta.request_id | string | Ne | "550e8400-e29b-41d4-a716-446655440000" | Jedinečný identifikátor tohoto pokusu HTTP; posílá se také v X-Request-ID. |
meta.duration_ms | integer | Ne | 42 | Doba zpracování požadavku v milisekundách. |
meta.access.mode | string | Ne | "api_key" | api_key, ip_trial nebo unauthenticated. U placeného účtu ověřte api_key. |
meta.access.reason | string | Ano | null | Důvod přechodu na zkušební režim: api_key_missing, api_key_invalid nebo api_key_not_found; jinak null. |
meta.usage.charged_credits | integer | Ano | 1 | Čistý počet odečtených kreditů. Nula před odečtením nebo po úplném potvrzeném vrácení; null, pokud účtování není potvrzeno. |
meta.usage.remaining_credits | integer | Ano | 99 | Zůstatek po dokončení operace. Může být záporný; null, pokud není k dispozici nebo účtování není potvrzeno. |
meta.usage.billing_status | string | Ne | "confirmed" | not_charged, confirmed nebo unconfirmed. Zkontrolujte před opakováním neúspěšného odhadu. |
meta.usage.resets_at | string | Ano | "2026-09-27T12:00:00.000Z" | Čas obnovení zkušebního režimu podle IP v UTC (ISO 8601); null u účtů s API klíčem nebo pokud není znám. |
meta.usage.limit | integer | Ano | 10 | Limit kreditů zkušebního režimu podle IP; null u účtů s API klíčem. |
meta.usage.period_seconds | integer | Ano | 86400 | Délka období zkušebního režimu podle IP v sekundách; null u účtů s API klíčem. |
Opakování požadavků a účtování
Každý požadavek na odhad je nová operace, i když znovu posíláte totožný požadavek. Na každý požadavek se vztahují běžná pravidla pro kredity. Ochrana proti duplicitním požadavkům neexistuje, proto se po ztrátě spojení nebo při neznámém výsledku vyhněte automatickému opakování.
U odpovědi 429 počkejte před dalším požadavkem po dobu uvedenou v Retry-After. U selhání odhadu nejprve zkontrolujte code, action a meta.usage.billing_status. U billing_reconciliation_required nebo nepotvrzeného účtování kontaktujte před opakováním podporu a uveďte request_id.
Částečně úspěšná dávka může vrátit HTTP 200. Zkontrolujte každou položku a po potvrzení účtování znovu odešlete jen neúspěšné položky; opětovně odeslané úspěšné položky by se naúčtovaly znovu.
X-Request-ID a meta.request_id identifikují aktuální pokus HTTP. Aktuální zůstatek zjistíte přes /usage. HEAD nespouští zpoplatněný odhad. Odpovědi s odhady a údaji o účtu se neukládají do mezipaměti.
Klienti by měli tolerovat nově přidaná pole odpovědi a zachovávat hodnoty null, když informace nejsou k dispozici.
Limity požadavků
Zpracovávejte HTTP 429 a Retry-After a nepředpokládejte, že požadavky budou při těchto horních mezích vždy přijaty. Kapacita služby je sdílená. Uvedené hodnoty jsou aktuální výchozí nastavení služby. Odpovědi při překročení limitu obsahují X-RateLimit-Limit, X-RateLimit-Remaining a X-RateLimit-Reset (sekundy v čase Unix). Retry-After je prodleva v sekundách. Tyto hlavičky popisují limity počtu požadavků, ne zbývající kredity. I bezplatné zjištění zůstatku přes /usage se započítává do limitů počtu požadavků.
| Limit | Hodnota |
|---|---|
| Tělo požadavku JSON | Nejvýše 64 KiB |
| Hodnota pro odhad | 1–254 znaků |
| Dávka | 50 položek s API klíčem; 10 ve zkušebním režimu podle IP |
| Limit pro účet | 120 požadavků za minutu |
| Limit pro IP adresu | 600 požadavků za minutu |
| Souběžné operace | 2 na účet; 16 v celé službě |