Senden Sie type und value an GenderAPI.io V2. Vergleichen Sie GET-Query-Parameter mit POST-JSON, einschließlich country, KI-Modi und forceToGenderize.
POST-JSON-Parameter
Parameter
Typ
Erforderlich
Standardwert
Beschreibung
Parametertype
Typstring
ErforderlichJa
Standardwert—
BeschreibungEingabekategorie: name, email oder username.
Parametervalue
Typstring
ErforderlichJa
Standardwert—
BeschreibungErforderlich. 1–254 Zeichen; nicht leer und ohne Steuerzeichen. E-Mail-Werte müssen eine gültige E-Mail-Syntax haben.
Parametercountry
Typstring
ErforderlichNein
Standardwert—
BeschreibungOptionaler ISO-3166-1-Alpha-2-Code in Großbuchstaben, zum Beispiel TR oder US. Eine länderspezifische Abfrage kann auf den globalen Datensatz zurückgreifen.
ParameterforceToGenderize
Typboolean
ErforderlichNein
Standardwertfalse
BeschreibungZuerst den Datensatz prüfen, bei fehlendem Ergebnis KI mit Spitznamen-Auswertung. Unterstützt für name, email und username.
Parameteroptions
Typobject
ErforderlichNein
Standardwert—
BeschreibungObjekt für die KI-Optionen der jeweiligen Eingabe.
Parameteroptions.ai_mode
Typstring
ErforderlichNein
Standardwertfallback
BeschreibungErlaubte Werte: off, fallback, always. Bei forceToGenderize: true dieses Feld weglassen oder fallback verwenden.
Parameterid
Typstring
ErforderlichNein
Standardwert—
BeschreibungOptionale Kennung mit 1–64 Zeichen im POST-JSON. Wird neben dem jeweiligen Batch-Ergebnis zurückgegeben und muss innerhalb eines Batches eindeutig sein. Bei Einzelvorhersagen akzeptiert, aber nicht zurückgegeben. In GET-Queries nicht unterstützt.
Ein Strich (—) bedeutet, dass kein Standardwert festgelegt ist. Lassen Sie ungenutzte optionale Eingaben weg; senden Sie nicht null. Antwortbeispiele dienen der Veranschaulichung und sind keine Standardwerte. „Kann null sein“ bedeutet, dass das Feld JSON null enthalten kann; ein weggelassenes Feld wird gesondert beschrieben.
Lassen Sie ungenutzte optionale Felder weg; senden Sie anstelle von country oder options weder null noch leere Zeichenketten. JSON-Booleans müssen true oder false sein, keine Zeichenketten. UTF-8-Text wird unterstützt; Namen müssen nicht in ASCII transliteriert werden.
GET-Query-Parameter
Parameter
Typ
Erforderlich
Standardwert
Beschreibung
Parametertype
Typstring
ErforderlichNein
Standardwertname
BeschreibungEingabekategorie: name, email oder username.
Parametervalue
Typstring
ErforderlichJa
Standardwert—
BeschreibungErforderlich. 1–254 Zeichen; nicht leer und ohne Steuerzeichen. E-Mail-Werte müssen eine gültige E-Mail-Syntax haben.
Parametercountry
Typstring
ErforderlichNein
Standardwert—
BeschreibungOptionaler ISO-3166-1-Alpha-2-Code in Großbuchstaben, zum Beispiel TR oder US. Eine länderspezifische Abfrage kann auf den globalen Datensatz zurückgreifen.
ParameterforceToGenderize
Typboolean
ErforderlichNein
Standardwertfalse
BeschreibungZuerst den Datensatz prüfen, bei fehlendem Ergebnis KI mit Spitznamen-Auswertung. Unterstützt für name, email und username.
Parameterai_mode
Typstring
ErforderlichNein
Standardwertfallback
BeschreibungErlaubte Werte: off, fallback, always. Bei forceToGenderize: true dieses Feld weglassen oder fallback verwenden.
Parameterkey
Typstring
ErforderlichNein
Standardwert—
BeschreibungVorhandener API-Schlüssel für GET-Anfragen. Bevorzugen Sie den Authorization-Header; fehlende oder unbekannte Schlüssel nutzen den IP-Testzugang.
GET verwendet type, value, country, forceToGenderize und ai_mode direkt im Query-String, dazu optional key. Kodieren Sie Werte mit dem URL-Parameter-Encoder Ihres HTTP-Clients; aus @ wird zum Beispiel %40. Senden Sie für Booleans in GET true oder false. Unbekannte Felder und ungültige Werte werden abgelehnt.
Vor dem Absenden der Anfrage
Senden Sie Vorhersageanfragen an GenderAPI.io V2 per POST https://api.genderapi.io/api/v2/gender, mit type und value im JSON-Body. Verwenden Sie Ihren vorhandenen GenderAPI.io-Schlüssel in Authorization: Bearer YOUR_API_KEY und Content-Type: application/json. Lesen Sie das Ergebnis aus data und die Angaben zu Zugang und Abrechnung aus meta. Jede Anfrage wird unabhängig verarbeitet.
Wählen Sie im Codebeispiel Ihre Programmiersprache. Setzen Sie GENDERAPI_API_KEY in der Prozessumgebung, bevor Sie es ausführen. Fehlende oder nicht erkannte Schlüssel können den gemeinsamen IP-Testzugang nutzen; prüfen Sie daher bei einer Kontointegration, ob meta.access.mode den Wert api_key hat.
Dieses Beispiel verwendet die gemeinsamen Anfragefelder für eine Namensabfrage. Ändern Sie type und value für eine E-Mail-Adresse oder einen Benutzernamen, oder setzen Sie options.ai_mode und forceToGenderize wie oben beschrieben.
Jede Vorhersageanfrage ist ein neuer kostenpflichtiger Vorgang, auch bei Wiederholungen. Diese Beispiele wiederholen Anfragen nicht automatisch. Prüfen Sie den Abrechnungsstatus, bevor Sie eine weitere Anfrage senden.
Vor der Ausführung: Zugang und Fehlerbehandlung
Führen Sie diese Beispiele auf Ihrem Server aus. Setzen Sie GENDERAPI_API_KEY in der Prozessumgebung auf Ihren vorhandenen API-Schlüssel. Prüfen Sie, ob meta.access.mode den Wert api_key hat: Ein nicht erkannter Schlüssel kann in den IP-Testzugang wechseln.
Bei HTTP-4xx- und -5xx-Antworten im JSON-Format bleibt der Fehlerinhalt erhalten, und das Beispiel endet mit einem Exit-Status ungleich null. Prüfen Sie code, action und meta.usage.billing_status, bevor Sie die Anfrage wiederholen.
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\":\"Anna\",\"country\":\"DE\"}")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\":\"Anna\",\"country\":\"DE\"}"; 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-Client. Als GenderApiExample.java speichern und java GenderApiExample.java ausführen. Dokumentation der Laufzeitumgebung
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\":\"Anna\",\"country\":\"DE\"}", 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.}
Konsolenanwendung mit .NET 8+. Als Program.cs in einem Konsolenprojekt verwenden und dann dotnet run ausführen. Dokumentation der Laufzeitumgebung
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\":\"Anna\",\"country\":\"DE\"}" 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) }}