DOKUMENTACJA API V2

GenderAPI.io V2: błędy, limity i ponawianie zapytań

Obsługuj Problem Details, błędy walidacji, limity częstotliwości zapytań i niepewność rozliczeń w GenderAPI.io V2. Poznaj opłaty za ponowne próby, sprawdzaj każdy błąd przed ponowieniem płatnego zapytania i dowiedz się, kiedy skontaktować się z pomocą techniczną.

Błędy i kody statusu HTTP

Błędy aplikacji używają formatu application/problem+json (RFC 9457). Obsługuj je na podstawie stabilnych pól code i action, a nie tekstu w detail. Przy błędach walidacji pole errors zawiera lokalizacje JSON Pointer wskazujące odpowiednie pola. Kontaktując się z pomocą techniczną, podaj request_id. Błędy połączenia lub serwera proxy mogą zwrócić inną treść; przed analizą JSON sprawdź Content-Type.

Poniższy syntetyczny przykład 422 pokazuje nieprawidłową składnię adresu e-mail wykrytą przed rozliczeniem. Publiczny katalog błędów zawiera wszystkie kody, statusy, wyjaśnienia i sugerowane działania.

Status HTTPTypowe znaczenieNastępny krok
400 / 413 / 415Nieprawidłowy JSON, zbyt duża treść zapytania lub nieobsługiwany typ mediów.Popraw zapytanie.
401 / 403Odmowa dostępu, ograniczenie konta lub niewystarczająca liczba kredytów.Sprawdź code; popraw dostęp, doładuj kredyty lub poczekaj na odnowienie próby.
422Nieprawidłowe dane wejściowe lub niezgodne opcje.Popraw pola wskazane w errors.
404 / 405Nieznana trasa lub nieobsługiwana metoda HTTP.Sprawdź ścieżkę endpointu i nagłówek odpowiedzi Allow.
429Limit częstotliwości zapytań lub współbieżności.Przed wysłaniem kolejnego zapytania odczekaj czas podany w Retry-After.
500Nieoczekiwana awaria serwera.Skontaktuj się z pomocą techniczną, podając request_id; przed ponowną próbą sprawdź rozliczenie.
502 / 503 / 504Błąd dostawcy, zależności lub rozliczeń albo przekroczenie limitu czasu.Sprawdź code, action i billing_status przed ponowną próbą.
Poglądowa odpowiedź JSON
{
  "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
    }
  }
}

Pola odpowiedzi z błędem

PoleTypDopuszcza nullPrzykładOpis
typestringNie"urn:genderapi:problem:validation_error"URI identyfikujący typ problemu.
titlestringNie"validation error"Krótki, czytelny tytuł błędu.
statusintegerNie422Kod statusu HTTP.
detailstringNie"The request does not match the schema."Wyjaśnienie tego konkretnego błędu.
instancestringNie"urn:uuid:550e8400-e29b-41d4-a716-446655440000"Identyfikator nieudanego zapytania.
codestringNie"validation_error"Stabilny kod błędu do odczytu maszynowego.
request_idstringNie"550e8400-e29b-41d4-a716-446655440000"Unikalny identyfikator tej próby HTTP; wysyłany także w X-Request-ID.
documentationstringNie"https://api.genderapi.io/api/v2/errors"Link do katalogu błędów, jeśli został podany.
actionstringNie"correct_request"Sugerowane działanie naprawcze; obecne, jeśli zdefiniowano je w katalogu błędów.
errorsarray<object>Nie[{"pointer":"/value","message":"must NOT have fewer than 1 characters"}]Problemy z walidacją, jeśli są dostępne. Każdy element zawiera pointer i message.
errors[].pointerstringNie"/value"JSON Pointer wskazujący nieprawidłowe dane wejściowe.
errors[].messagestringNie"must NOT have fewer than 1 characters"Wyjaśnienie problemu walidacji.

Metadane dostępu, rozliczenia i zapytania

PoleTypDopuszcza nullPrzykładOpis
meta.request_idstringNie"550e8400-e29b-41d4-a716-446655440000"Unikalny identyfikator tej próby HTTP; wysyłany także w X-Request-ID.
meta.duration_msintegerNie42Czas przetwarzania zapytania w milisekundach.
meta.access.modestringNie"api_key"api_key, ip_trial lub unauthenticated. Korzystając z płatnego konta, sprawdź api_key.
meta.access.reasonstringTaknullPowód przejścia na próbę: api_key_missing, api_key_invalid lub api_key_not_found; w pozostałych przypadkach null.
meta.usage.charged_creditsintegerTak1Liczba pobranych kredytów netto. Zero przed pobraniem lub po potwierdzonym pełnym zwrocie; null, gdy rozliczenie jest niepotwierdzone.
meta.usage.remaining_creditsintegerTak99Saldo po zakończeniu operacji. Może być ujemne; null, gdy saldo jest niedostępne lub rozliczenie jest niepotwierdzone.
meta.usage.billing_statusstringNie"confirmed"not_charged, confirmed lub unconfirmed. Sprawdź to pole przed ponowieniem nieudanej prognozy.
meta.usage.resets_atstringTak"2026-09-27T12:00:00.000Z"Czas odnowienia próby dla adresu IP w UTC (ISO 8601); null dla kont z kluczem API lub gdy nie jest znany.
meta.usage.limitintegerTak10Limit kredytów próby dla adresu IP; null dla kont z kluczem API.
meta.usage.period_secondsintegerTak86400Okres próby dla adresu IP w sekundach; null dla kont z kluczem API.

Ponawianie zapytań i rozliczenia

Każde zapytanie o prognozę to nowa operacja, także wtedy, gdy ponownie wysyłasz identyczne zapytanie. Do każdego zapytania stosuje się zwykłe zasady naliczania kredytów. Nie ma ochrony przed zduplikowanymi zapytaniami, więc unikaj automatycznego ponawiania po utracie połączenia lub przy nieznanym wyniku operacji.

Po odpowiedzi 429 odczekaj czas podany w Retry-After, zanim wyślesz kolejne zapytanie. W przypadku nieudanych prognoz najpierw sprawdź code, action i meta.usage.billing_status. W przypadku billing_reconciliation_required lub niepotwierdzonego rozliczenia (unconfirmed) skontaktuj się z pomocą techniczną, podając request_id, zanim ponowisz zapytanie.

Partia zakończona częściowym powodzeniem może zwrócić HTTP 200. Sprawdź każdy element i po potwierdzeniu rozliczenia prześlij ponownie tylko nieudane elementy; ponownie przesłane udane elementy zostałyby rozliczone jeszcze raz.

X-Request-ID i meta.request_id identyfikują bieżącą próbę HTTP. Aktualne saldo odczytasz w /usage. HEAD nie uruchamia płatnej prognozy. Odpowiedzi z prognozami i danymi konta nie mogą być buforowane.

Aplikacje klienckie powinny tolerować nowe, dodatkowe pola odpowiedzi i zachowywać wartości null, gdy informacje są niedostępne.

Limity zapytań

Obsługuj HTTP 429 i Retry-After, zamiast zakładać, że zapytania zawsze będą akceptowane aż do tych progów. Przepustowość usługi jest współdzielona. Podane wartości to bieżące ustawienia domyślne usługi. Odpowiedzi związane z limitem częstotliwości zapytań zawierają X-RateLimit-Limit, X-RateLimit-Remaining i X-RateLimit-Reset (sekundy uniksowe). Retry-After to opóźnienie w sekundach. Te nagłówki opisują limity zapytań, a nie pozostałe kredyty. Nawet bezpłatny odczyt /usage wlicza się do limitów częstotliwości zapytań.

LimitWartość
Treść zapytania JSONmaksymalnie 64 KiB
Wartość wejściowa prognozy1–254 znaki
Partia50 elementów z kluczem API; 10 w ramach próby dla adresu IP
Częstotliwość zapytań na konto120 zapytań na minutę
Częstotliwość zapytań na adres IP600 zapytań na minutę
Operacje równoczesne2 na konto; 16 w całej usłudze