DOKUMENTACJA API V2

GenderAPI.io V2: odpowiedzi JSON i pewność

Poznaj pola data i meta w GenderAPI.io V2: płeć, powody wyników nieznanych, pewność i confidence_kind, informacje o dopasowaniu w zbiorze danych, wyniki AI, tryb dostępu i metadane rozliczeń.

Poznaj strukturę odpowiedzi JSON

Pojedyncze prognozy GenderAPI.io V2 zwracają obiekt data z wynikiem i obiekt meta z informacjami o zapytaniu, dostępie i rozliczeniu. Odczytuj data.gender i data.confidence razem z data.confidence_kind i data.source. Poniższy przykład ze zbioru danych to prawdziwa odpowiedź pobrana 1 października 2026 r. z użyciem klucza API; zastąpiono jedynie saldo konta. Nie przedstawia zmierzonej dokładności produktu, a zapytanie na żywo może zwrócić inny wynik. Zapytania z kluczem API zwracają access.mode: api_key oraz null w polach limitu dotyczących wyłącznie próby; zapytania w ramach próby dla adresu IP zwracają ip_trial wraz z limitem próby i czasem jego odnowienia.

Poglądowa odpowiedź JSON
{
  "data": {
    "input": {
      "type": "name",
      "value": "Krzysztof",
      "country": "PL"
    },
    "name": "krzysztof",
    "gender": "male",
    "country": "PL",
    "confidence": 0.9928131416837782,
    "confidence_kind": "observed_frequency",
    "sample_count": 974,
    "source": "dataset",
    "result_status": "identified",
    "reason": null,
    "country_source": "dataset",
    "match": {
      "name": "krzysztof",
      "method": "normalized",
      "scope": "country",
      "country": "PL"
    }
  },
  "meta": {
    "request_id": "a03ce9f1-da34-4c69-9dac-363e861f9ade",
    "duration_ms": 11,
    "access": {
      "mode": "api_key",
      "reason": null
    },
    "usage": {
      "charged_credits": 1,
      "remaining_credits": 49999,
      "billing_status": "confirmed",
      "resets_at": null,
      "limit": null,
      "period_seconds": null
    }
  }
}

Pola odpowiedzi z prognozą

PoleTypDopuszcza nullPrzykładOpis
data.inputobjectNie{"type":"name","value":"Krzysztof","country":"PL"}Typ danych wejściowych, wartość i kraj. forceToGenderize jest dołączane, gdy ma wartość true.
data.namestringTak"krzysztof"Dopasowane lub wyodrębnione imię; null, gdy nie jest dostępne.
data.genderstringTak"male"male, female lub JSON null. To wynik wnioskowania, a nie zweryfikowana tożsamość osoby.
data.result_statusstringNie"identified"identified, gdy zwrócono płeć; w przeciwnym razie unknown.
data.reasonstringTaknullnull dla wyników identified. Powody wyniku nieznanego: not_found, no_name_candidate, ambiguous lub insufficient_evidence.
data.confidencenumberTak0.95Wynik w skali 0–1 lub null. Gdy płeć ma wartość null, pewność również jest null.
data.confidence_kindstringTak"observed_frequency"observed_frequency: liczba wystąpień dominującej płci podzielona przez sumę w wybranym wierszu zbioru danych. model_reported: wynik AI, a nie skalibrowane prawdopodobieństwo. null, gdy wartość jest niedostępna.
data.sample_countintegerTak1200Wielkość próby w zbiorze danych lub null. AI nie wymyśla liczby próbek.
data.sourcestringNie"dataset"dataset, ai lub none.
data.countrystringTak"PL"Powiązanie z krajem pochodzące z dataset lub ai_association albo null. Nie określa obywatelstwa, miejsca zamieszkania ani pochodzenia etnicznego.
data.country_sourcestringTak"dataset"Źródło powiązania z krajem: dataset, ai_association lub null.
data.matchobjectNie{"name":"krzysztof","method":"normalized","scope":"country","country":"PL"}Dopasowane imię ze zbioru danych, metoda (normalized, token, substring lub model_inference), zakres country lub global oraz dopasowany kraj. Niedostępne informacje o dopasowaniu mają wartość null.

Zwracane pola wejściowe

PoleTypDopuszcza nullPrzykładOpis
data.input.typestringNie"name"Kategoria danych wejściowych: name, email lub username.
data.input.valuestringNie"Krzysztof"Przesłana wartość do prognozy.
data.input.countrystringTak"PL"Przesłany kontekst kraju; null, jeśli pominięty.
data.input.forceToGenderizebooleanNietrueObecne tylko przy włączonym trybie pseudonimu; w przeciwnym razie pomijane.

Pola dopasowania w zbiorze danych

PoleTypDopuszcza nullPrzykładOpis
data.match.namestringTak"krzysztof"Wybrany kandydat ze zbioru danych; null, jeśli nie wybrano wiersza.
data.match.methodstringTak"normalized"normalized, token, substring lub model_inference; null, gdy wartość jest niedostępna.
data.match.scopestringTak"country"country lub global przy wyszukiwaniu w zbiorze danych; null dla AI lub przy braku informacji o dopasowaniu.
data.match.countrystringTak"PL"Kraj wybranego wiersza zbioru danych; null dla wierszy globalnych lub AI.

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.

Udany wynik nieznany

HTTP 200 oznacza, że operacja została zakończona; nie gwarantuje ustalenia płci. Zachowaj JSON null zamiast zamieniać go na male, female, pusty ciąg znaków lub zerową pewność. Sprawdzaj data.result_status i data.reason niezależnie od błędów HTTP.

Ten prawdziwy przykład korzystający tylko ze zbioru danych, pobrany 1 października 2026 r., zwraca source: none i reason: not_found, a mimo to kosztuje 1 kredyt. Wiersz zbioru danych z remisem może zwrócić reason: ambiguous z zachowanym sample_count. Nieznany wynik AI ma source: ai i reason: insufficient_evidence.

Poglądowa odpowiedź JSON
{
  "data": {
    "input": {
      "type": "name",
      "value": "zzzxxyy",
      "country": null
    },
    "name": null,
    "gender": null,
    "country": null,
    "confidence": null,
    "confidence_kind": null,
    "sample_count": null,
    "source": "none",
    "result_status": "unknown",
    "reason": "not_found",
    "country_source": null,
    "match": {
      "name": null,
      "method": null,
      "scope": null,
      "country": null
    }
  },
  "meta": {
    "request_id": "54fdcd4e-f8bc-4224-918f-3a5732e08b9c",
    "duration_ms": 10,
    "access": {
      "mode": "api_key",
      "reason": null
    },
    "usage": {
      "charged_credits": 1,
      "remaining_credits": 49999,
      "billing_status": "confirmed",
      "resets_at": null,
      "limit": null,
      "period_seconds": null
    }
  }
}

Interpretuj pewność i informacje o dopasowaniu

Pewność 0.9 jest wyrażona w skali 0–1. Dla observed_frequency oznacza liczbę wystąpień dominującej płci podzieloną przez sumę w wybranym wierszu zbioru danych; nie jest to zmierzona kompleksowa dokładność produktu. Wynik model_reported pochodzi od AI i nie jest kalibrowany względem częstości w zbiorze danych.

Dobierz progi w swojej aplikacji na podstawie własnych danych ewaluacyjnych i confidence_kind. Nie porównuj bezpośrednio wyników zbioru danych i AI, jakby mierzyły to samo. W wynikach AI match.name, match.scope i match.country mają wartość null, ponieważ nie wybrano żadnego wiersza zbioru danych; match.method ma wartość model_inference.

W przypadku imienia i nazwiska wynik ze zbioru danych może pochodzić z jednego składnika, a nie z całego ciągu. data.input zachowuje przesłaną wartość; data.name opisuje zwrócone imię, a data.match opisuje kandydata i zakres wyszukiwania.

Zdecyduj, co Twoja aplikacja ma zrobić dalej

Najpierw obsłuż błędy zapytania i elementów, a potem sprawdź result_status. W przypadku pojedynczej prognozy odczytaj data; w partii zastosuj tę samą decyzję do data każdego udanego elementu. Zachowuj wyniki unknown w aplikacji zamiast wymuszać etykietę male lub female.

WynikCo oznaczaZalecane postępowanie
identified; gender: male lub femaleInferencja zwróciła płeć na podstawie zbioru danych lub AI.Zastosuj regułę ocenioną dla danego confidence_kind; zachowaj source i informacje o dopasowaniu.
unknown; reason: not_foundŻaden zapisany rekord zbioru danych nie pasuje do wyodrębnionych kandydatów.Pozostaw gender jako null. Celowe zapytanie z innymi opcjami AI to nowa, płatna operacja.
unknown; reason: no_name_candidateAnaliza danych wejściowych nie dała żadnego użytecznego kandydata imienia.Zachowaj null; sprawdź typ i wartość danych wejściowych, zanim wybierzesz dodatkową inferencję.
unknown; reason: ambiguousWybrany wiersz zbioru danych ma równą liczbę wystąpień męskich i żeńskich; sample_count może nadal być obecne.Nie rozstrzygaj remisu samodzielnie i nie zamieniaj pewności null na zero.
unknown; reason: insufficient_evidenceAI zakończyła pracę bez wystarczających przesłanek do zwrócenia płci.Traktuj to jako zakończony wynik unknown, a nie awarię dostawcy ani kandydata do automatycznej ponownej próby.
Problem Details lub error elementuWykonanie się nie powiodło, na przykład z powodu ai_upstream_error lub prediction_timeout.Zachowaj kod błędu i identyfikator zapytania, sprawdź rozliczenie i postępuj zgodnie ze wskazówkami dotyczącymi ponownych prób.

Dobierz progi na podstawie własnej oceny

Nie istnieje uniwersalny próg pewności, który sprawia, że prognoza jest poprawna. Oceniaj observed_frequency i model_reported osobno, na reprezentatywnych przykładach z Twojego przypadku użycia, oznaczonych niezależnie. Częstość w zbiorze danych i wynik zgłoszony przez AI to różne sygnały, nawet jeśli oba wynoszą akurat 0.9. Mierz, jak często Twoja reguła udziela odpowiedzi i jak często udzielone odpowiedzi są poprawne; dla pozostałych przypadków zachowaj ścieżkę unknown lub ręcznej weryfikacji.

Jeśli na przykład result_status to identified, ale confidence_kind to model_reported, zastosuj regułę ocenioną dla AI zamiast progu dla zbioru danych. Jeśli użyto forceToGenderize, name: null razem z gender o wartości innej niż null jest poprawne: alias może zostać zinterpretowany bez wyodrębnienia prawdziwego imienia. Aby ustalić, czy inferencja udzieliła odpowiedzi, sprawdzaj gender i result_status, a nie tylko name. Wynik pozostaje oszacowaniem, a nie weryfikacją tożsamości osoby.

Powiązane przewodniki