Přehled polí type, value, country, forceToGenderize a ai_mode v GenderAPI.io V2 a rozdílů mezi dotazem GET a tělem JSON u POST.
Parametry JSON pro POST
Parametr
Typ
Povinné
Výchozí hodnota
Popis
Parametrtype
Typstring
PovinnéAno
Výchozí hodnota—
PopisKategorie vstupu: name, email nebo username.
Parametrvalue
Typstring
PovinnéAno
Výchozí hodnota—
PopisPovinné. 1–254 znaků; nesmí být prázdné ani obsahovat řídicí znaky. E-mailové hodnoty musí mít platnou syntaxi e-mailové adresy.
Parametrcountry
Typstring
PovinnéNe
Výchozí hodnota—
PopisVolitelný kód ISO 3166-1 alpha-2 velkými písmeny, například TR nebo US. Vyhledávání pro konkrétní zemi může přejít na globální datovou sadu.
ParametrforceToGenderize
Typboolean
PovinnéNe
Výchozí hodnotafalse
PopisNejprve se prohledá datová sada, a pokud nepřinese výsledek, použije se AI s analýzou přezdívek. Podporováno pro name, email a username.
Parametroptions
Typobject
PovinnéNe
Výchozí hodnota—
PopisObjekt s možnostmi AI pro daný vstup.
Parametroptions.ai_mode
Typstring
PovinnéNe
Výchozí hodnotafallback
PopisPovolené hodnoty: off, fallback, always. Při forceToGenderize: true toto pole vynechte nebo použijte fallback.
Parametrid
Typstring
PovinnéNe
Výchozí hodnota—
PopisVolitelný identifikátor o délce 1–64 znaků v těle JSON u POST. Vrací se u každého výsledku dávky; v rámci dávky musí být jedinečný. U jednotlivých odhadů se přijme, ale v odpovědi se nevrací. V dotazech GET není podporován.
Pomlčka (—) znamená, že není nastavena žádná výchozí hodnota. Nepoužité volitelné vstupy vynechte; neposílejte null. Příklady odpovědí jsou ilustrativní, nejde o výchozí hodnoty. „Může být null“ znamená, že pole může obsahovat JSON null; vynechané pole je popsáno zvlášť.
Nepoužitá volitelná pole vynechte; místo country nebo options neposílejte null ani prázdné řetězce. Logické hodnoty JSON musí být true nebo false, ne řetězce. Text v UTF-8 je podporován; jména není nutné přepisovat do ASCII.
Parametry dotazu GET
Parametr
Typ
Povinné
Výchozí hodnota
Popis
Parametrtype
Typstring
PovinnéNe
Výchozí hodnotaname
PopisKategorie vstupu: name, email nebo username.
Parametrvalue
Typstring
PovinnéAno
Výchozí hodnota—
PopisPovinné. 1–254 znaků; nesmí být prázdné ani obsahovat řídicí znaky. E-mailové hodnoty musí mít platnou syntaxi e-mailové adresy.
Parametrcountry
Typstring
PovinnéNe
Výchozí hodnota—
PopisVolitelný kód ISO 3166-1 alpha-2 velkými písmeny, například TR nebo US. Vyhledávání pro konkrétní zemi může přejít na globální datovou sadu.
ParametrforceToGenderize
Typboolean
PovinnéNe
Výchozí hodnotafalse
PopisNejprve se prohledá datová sada, a pokud nepřinese výsledek, použije se AI s analýzou přezdívek. Podporováno pro name, email a username.
Parametrai_mode
Typstring
PovinnéNe
Výchozí hodnotafallback
PopisPovolené hodnoty: off, fallback, always. Při forceToGenderize: true toto pole vynechte nebo použijte fallback.
Parametrkey
Typstring
PovinnéNe
Výchozí hodnota—
PopisStávající API klíč pro požadavky GET. Dávejte přednost hlavičce Authorization; chybějící nebo neznámé klíče používají zkušební režim podle IP.
GET přijímá type, value, country, forceToGenderize a ai_mode přímo v řetězci dotazu a navíc volitelný key. Hodnoty kódujte kodérem parametrů URL svého HTTP klienta; například @ se změní na %40. Logické hodnoty v GET posílejte jako true nebo false. Neznámá pole a neplatné hodnoty jsou odmítnuty.
Před odesláním požadavku
Posílejte JSON na POST https://api.genderapi.io/api/v2/gender. Použijte svůj stávající API klíč v Authorization: Bearer YOUR_API_KEY a Content-Type: application/json. Každý požadavek se zpracovává samostatně.
V příkladu kódu vyberte programovací jazyk. Před spuštěním nastavte GENDERAPI_API_KEY v prostředí procesu. Chybějící nebo nerozpoznané klíče mohou použít sdílený zkušební režim podle IP, proto při integraci účtu ověřte, že meta.access.mode je api_key.
Tento příklad používá společná pole požadavku pro vyhledání jména. Pro e-mail nebo uživatelské jméno změňte type a value, případně nastavte options.ai_mode a forceToGenderize podle popisu výše.
Vyberte programovací jazyk.Nastavte API klíč, potom spusťte příklad na svém serveru.
Každý požadavek na odhad je nová zpoplatněná operace, včetně opakování. Tyto příklady požadavky automaticky neopakují. Před odesláním dalšího požadavku zkontrolujte stav účtování.
Před spuštěním: přístup a zpracování chyb
Tyto příklady spouštějte na svém serveru. V prostředí procesu nastavte GENDERAPI_API_KEY na svůj stávající API klíč. Ověřte, že meta.access.mode je api_key: nerozpoznaný klíč může přejít na zkušební režim podle IP.
U odpovědí JSON s HTTP 4xx a 5xx příklady zachovají tělo chyby a skončí s nenulovým návratovým kódem. Před opakováním požadavku zkontrolujte code, action a meta.usage.billing_status.
import jsonimport osimport sysimport urllib.errorimport urllib.requestapi_key = os.environ.get("GENDERAPI_API_KEY")if not api_key: raise RuntimeError("Set GENDERAPI_API_KEY")body = json.loads("{\"type\":\"name\",\"value\":\"Tomáš\",\"country\":\"CZ\"}")class NoRedirect(urllib.request.HTTPRedirectHandler): def redirect_request(self, req, fp, code, msg, headers, newurl): return Nonerequest = urllib.request.Request( "https://api.genderapi.io/api/v2/gender", method="POST", data=json.dumps(body).encode("utf-8"), headers={ "Authorization": "Bearer " + api_key, "Content-Type": "application/json", },)opener = urllib.request.build_opener(NoRedirect())try: response = opener.open(request, timeout=30)except urllib.error.HTTPError as error: response = error # Keep the Problem Details body on non-2xx responses.with response: status = response.status raw = response.read().decode("utf-8") if "json" not in response.headers.get("Content-Type", ""): raise RuntimeError(f"HTTP {status}: expected a JSON response") result = json.loads(raw)print(json.dumps(result, indent=2), file=sys.stderr if status >= 300 else sys.stdout)if not 200 <= status < 300: sys.exit(1) # Inspect code, action and billing before retrying.# For batches, inspect every item even when HTTP status is 200.
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.nio.charset.StandardCharsets;import java.time.Duration;public class GenderApiExample { private static String requiredEnv(String name) { String value = System.getenv(name); if (value == null || value.isBlank()) throw new IllegalStateException("Set " + name); return value; } public static void main(String[] args) throws Exception { String apiKey = requiredEnv("GENDERAPI_API_KEY"); String body = "{\"type\":\"name\",\"value\":\"Tomáš\",\"country\":\"CZ\"}"; HttpClient client = HttpClient.newBuilder() .connectTimeout(Duration.ofSeconds(10)) .followRedirects(HttpClient.Redirect.NEVER) .build(); HttpRequest request = HttpRequest.newBuilder(URI.create("https://api.genderapi.io/api/v2/gender")) .timeout(Duration.ofSeconds(30)) .header("Authorization", "Bearer " + apiKey) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(body, StandardCharsets.UTF_8)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8)); if (!response.headers().firstValue("content-type").orElse("").contains("json")) { throw new IllegalStateException("HTTP " + response.statusCode() + ": expected JSON"); } // JSON text; parse with your application's JSON library when integrating. if (response.statusCode() < 200 || response.statusCode() >= 300) { System.err.println(response.body()); // Includes Problem Details. System.exit(1); } System.out.println(response.body()); // For batches, inspect each item's data or error, including on HTTP 200. }}
Java 17+; standardní HTTP klient. Uložte jako GenderApiExample.java a spusťte java GenderApiExample.java. Dokumentace běhového prostředí
C# / .NET
using System;using System.Net.Http;using System.Net.Http.Headers;using System.Text;using System.Text.Json;string RequiredEnv(string name) => !string.IsNullOrWhiteSpace(Environment.GetEnvironmentVariable(name)) ? Environment.GetEnvironmentVariable(name)! : throw new InvalidOperationException($"Set {name}");var apiKey = RequiredEnv("GENDERAPI_API_KEY");using var handler = new HttpClientHandler { AllowAutoRedirect = false };using var client = new HttpClient(handler) { Timeout = TimeSpan.FromSeconds(30) };using var request = new HttpRequestMessage(HttpMethod.Post, "https://api.genderapi.io/api/v2/gender");request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);request.Content = new StringContent("{\"type\":\"name\",\"value\":\"Tomáš\",\"country\":\"CZ\"}", Encoding.UTF8, "application/json");using var response = await client.SendAsync(request);var raw = await response.Content.ReadAsStringAsync();if (!(response.Content.Headers.ContentType?.MediaType?.Contains("json") ?? false)) throw new InvalidOperationException($"HTTP {(int)response.StatusCode}: expected JSON");using var result = JsonDocument.Parse(raw);if (!response.IsSuccessStatusCode){ Console.Error.WriteLine(result.RootElement); // Preserve Problem Details. Environment.ExitCode = 1;}else{ Console.WriteLine(result.RootElement); // For batches, inspect every item even on HTTP 200.}
Konzolová aplikace .NET 8+. Použijte jako Program.cs v konzolovém projektu a potom spusťte dotnet run. Dokumentace běhového prostředí
Go
package mainimport ( "encoding/json" "fmt" "io" "net/http" "os" "strings" "time")func requiredEnv(name string) string { value := os.Getenv(name) if value == "" { panic("Set " + name) } return value}func run() error { apiKey := requiredEnv("GENDERAPI_API_KEY") body := "{\"type\":\"name\",\"value\":\"Tomáš\",\"country\":\"CZ\"}" request, err := http.NewRequest("POST", "https://api.genderapi.io/api/v2/gender", strings.NewReader(body)) if err != nil { return err } request.Header.Set("Authorization", "Bearer " + apiKey) request.Header.Set("Content-Type", "application/json") client := &http.Client{ Timeout: 30 * time.Second, CheckRedirect: func(req *http.Request, via []*http.Request) error { return http.ErrUseLastResponse }, } response, err := client.Do(request) if err != nil { return err } defer response.Body.Close() raw, err := io.ReadAll(response.Body) if err != nil { return err } if !strings.Contains(response.Header.Get("Content-Type"), "json") || !json.Valid(raw) { return fmt.Errorf("HTTP %d: expected a JSON response", response.StatusCode) } if response.StatusCode < 200 || response.StatusCode >= 300 { return fmt.Errorf("HTTP %d: %s", response.StatusCode, raw) } fmt.Println(string(raw)) // For batches, inspect every item even on HTTP 200. return nil}func main() { if err := run(); err != nil { fmt.Fprintln(os.Stderr, err) // Keep Problem Details for error handling. os.Exit(1) }}