Reference til felterne type, value, country, forceToGenderize og ai_mode i GenderAPI V2 samt forskellene mellem GET-parametre og JSON i POST-anmodninger.
Enkelte forudsigelsesparametre
Valgfrie felter bør udelades, når de ikke bruges; send ikke null eller tomme strenge i stedet for country eller options. JSON booleaner skal være true eller false, ikke strenge. UTF-8 tekst er understøttet; navne behøver ikke at blive translittereret til ASCII.
GET bruger type, value, country, forceToGenderize og ai_mode direkte i forespørgselsstrengen plus valgfri key. Indkode værdier med din HTTP-klients URL-parameterkoder; for eksempel bliver @ %40. For GET booleans, send true eller false. Ukendte felter og ugyldige værdier afvises.
JSON felt
Type
Regel
type
string
Påkrævet for POST: name, email eller username. GET er som standard name.
value
string
Påkrævet. 1-254 tegn; ikke-blank, uden kontroltegn. E-mail-værdier skal være gyldig e-mail-syntaks.
country
string
Valgfri ISO 3166-1 alpha-2-kode med store bogstaver, for eksempel TR eller US. Landespecifikt opslag kan falde tilbage til det globale datasæt.
forceToGenderize
boolean
Valgfrit; standarden er false. Søg først i datasættet. Hvis intet køn kan bestemmes, skal du bruge AI til at fortolke kaldenavnet. Understøttet for alle tre inputtyper.
options.ai_mode
string
off, fallback eller always. Standard er fallback for enkelte anmodninger og off for batchvarer.
id
string
Valgfri identifikator med 1–64 tegn i POST JSON-brødteksten. Det skal være unikt inden for en batch og returneres med sit batchresultat. Enkelte anmodninger accepterer denne identifikator, men inkluderer den ikke i svaret. GET-forespørgsler understøtter det ikke.
Før du sender anmodningen
Send JSON til POST https://api.genderapi.io/api/v2/gender. Brug din eksisterende API nøgle i Authorization: Bearer YOUR_API_KEY og Content-Type: application/json. Hver anmodning behandles uafhængigt.
Vælg dit sprog i kodeeksemplet. Indstil GENDERAPI_API_KEY i procesmiljøet, før du kører det. Manglende eller ikke-genkendte nøgler kan bruge den delte IP-prøveversion, så bekræft, at meta.access.mode er api_key, når du integrerer en konto.
Dette eksempel bruger de delte anmodningsfelter til et navneopslag. Skift type og value for en e-mail eller brugernavn, eller indstil options.ai_mode og forceToGenderize som beskrevet ovenfor.
Vælg et programmeringssprog.Indstil din API nøgle, kør derefter eksemplet på din server.
Hver forudsigelsesanmodning er en ny fakturerbar operation, inklusive genforsøg. Disse eksempler forsøger ikke automatisk igen. Tjek faktureringsstatus, før du sender endnu en anmodning.
Før du kører: adgang og fejlhåndtering
Kør disse eksempler på din server. Indstil GENDERAPI_API_KEY i procesmiljøet til din eksisterende API nøgle. Bekræft, at meta.access.mode er api_key: en ikke-genkendt nøgle kan falde tilbage til IP-prøveversionen.
HTTP 4xx og 5xx JSON-svar bevarer fejlteksten og returnerer en udgangsstatus, der ikke er nul. Tjek code, action og meta.usage.billing_status, før du prøver igen.
// Server-side Node.js. Save as example.mjs.const apiKey = process.env.GENDERAPI_API_KEY;if (!apiKey) throw new Error("Set GENDERAPI_API_KEY");const body = { "type": "name", "value": "Onur", "country": "TR"};const response = await fetch("https://api.genderapi.io/api/v2/gender", { method: "POST", headers: { Authorization: `Bearer ${apiKey}`, "Content-Type": "application/json", }, body: JSON.stringify(body), signal: AbortSignal.timeout(30_000), redirect: "error",});const raw = await response.text();if (!(response.headers.get("content-type") ?? "").includes("json")) { throw new Error(`HTTP ${response.status}: expected JSON; request ID ${response.headers.get("x-request-id")}`);}const result = JSON.parse(raw); // Also accepts application/problem+json.if (!response.ok) { console.error(`HTTP ${response.status}`, result); process.exitCode = 1; // A retry is a new operation; inspect billing first.} else { console.log(JSON.stringify(result, null, 2)); // For batches, inspect every item: HTTP 200 may contain item errors.}
Node.js 22+; indbygget apport. Gem som example.mjs og kør node example.mjs. Kørselsdokumentation
Python
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\":\"Onur\",\"country\":\"TR\"}")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.
Python 3.10+; standard bibliotek. Gem som example.py og kør python3 example.py. Kørselsdokumentation
PHP 8+ med cURL-udvidelsen. Gem som example.php og kør php example.php. Kørselsdokumentation
Java
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\":\"Onur\",\"country\":\"TR\"}"; 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+; standard HTTP klient. Gem som GenderApiExample.java og kør java GenderApiExample.java. Kørselsdokumentation
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\":\"Onur\",\"country\":\"TR\"}", 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.}
.NET 8+ konsolapplikation. Brug som Program.cs i et konsolprojekt, og kør derefter dotnet run. Kørselsdokumentation
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\":\"Onur\",\"country\":\"TR\"}" 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) }}
Go 1,22+; standard bibliotek. Gem som main.go og kør go run main.go. Kørselsdokumentation