GenderAPI.io V2 · Anleitung

Geschlecht anhand eines Benutzernamens oder Spitznamens bestimmen

Werten Sie einen Benutzernamen mit GenderAPI.io V2 aus. Testen Sie den gewöhnlichen Namensabgleich oder die optionale Spitznamen-Auswertung, verstehen Sie die Kosten von 1 oder 2 Credits und behalten Sie unbekannte Ergebnisse bei.

Zuletzt aktualisiert:

V2-API testen

Benutzernamen analysieren

Datensatz + KI

Senden Sie einen Wert und prüfen Sie die vollständige Antwort, einschließlich unbekannter Ergebnisse und verbrauchter Credits.

Immer KI (Standard): 2 Credits, auch bei einem unbekannten Ergebnis. Fallback: 1 Credit, einschließlich KI-Fallback und unbekannter Ergebnisse. Aus, nur Datensatz (ohne KI): 1 Credit pro abgeschlossener Anfrage, auch bei einem unbekannten Ergebnis. Mit Spitznamen-Auswertung: 1 Credit, wenn der Datensatz das Ergebnis liefert, oder insgesamt 2, wenn KI eingesetzt wird, auch bei einem unbekannten Ergebnis.

Der gesendete Wert (der Benutzername) geht an GenderAPI.io und wird im Modus Immer KI (Standard) oder bei nötigem KI-Fallback an den konfigurierten KI-Dienst weitergegeben, im Modus Aus jedoch nicht. Details zur Datenverarbeitung.

Kein API-Schlüssel gespeichert. Der gemeinsame IP-Testzugang ist verfügbar, solange er noch Credits hat.

Die folgende Antwort ist eine echte Antwort vom 1. Oktober 2026. Klicken Sie auf Analysieren, um eine Anfrage zu senden.

Echte V2-Antwort · abgerufen am 1. Oktober 2026
NameFelix
GeschlechtMännlich
Konfidenz98 %
QuelleKI-Modell
Verbrauchte Credits2

Diese echte Antwort wurde am 1. Oktober 2026 abgerufen; nur das Kontoguthaben wurde ersetzt. Live-Werte können abweichen. Eine Vorhersage ist keine bestätigte Identität.

Namenshinweise und Spitznamen-Bedeutungen sind verschieden

Verwenden Sie type: username für einen Benutzernamen oder Spitznamen. Ein optionales führendes @ wird für den Abgleich mit dem Datensatz entfernt. Die Extraktion von Kandidaten berücksichtigt Trennzeichen und Ziffern und kann begrenzte Teilstrings prüfen. Der Spitznamenmodus behält den Abgleich ganzer Bestandteile bei, fügt aber keine solchen Teilstring-Kandidaten hinzu. Der ausgewählte gespeicherte Eintrag hat unter den verfügbaren Kandidaten die größte Gesamtzahl; das belegt nicht den echten Namen der Person hinter dem Konto.

Der gewöhnliche KI-Fallback sucht nach einem erkennbaren Vornamen. forceToGenderize erlaubt zusätzlich eine Zuordnung über einen persönlichen Spitznamen, wenn sich kein echter Name extrahieren lässt. Beide Wege können unknown zurückgeben; eine Marke, eine Figur oder ein gemeinsam genutztes Konto steht nicht unbedingt für eine einzelne Person.

BeispieleingabeVorgehenWas Sie prüfen sollten
@alice.smithBeginnen Sie mit dem gewöhnlichen fallback, der zuerst den Datensatz prüft.Prüfen Sie den ausgewählten Namen und die Abgleichsmethode; gehen Sie nicht davon aus, dass der erste Bestandteil gewählt wurde.
robert89Die Ziffern können bei der Extraktion der Kandidaten entfernt werden.Ein passender Name ist eine Zuordnung, keine bestätigte Identität.
prensesAktivieren Sie forceToGenderize, um bei fehlendem Ergebnis einen KI-Versuch anhand des Spitznamens zu erlauben.gender kann ungleich null sein, während name null ist. KI-Werte sind model_reported.
team_supportBehandeln Sie Funktions- oder gemeinsam genutzte Konten als möglicherweise nicht personenbezogen.Behalten Sie unknown bei und weisen Sie einem gemeinsam genutzten Konto keine individuelle Identität zu.

Die Spitznamen-Auswertung in Ihrer Integration testen

Diese Anfrage aktiviert die Spitznamen-Auswertung. Zuerst wird der Datensatz geprüft. Liefert er kein Geschlecht, kann die KI die Bedeutung des Alias nutzen. Lassen Sie forceToGenderize für eine gewöhnliche Abfrage weg; Einzelanfragen nutzen standardmäßig trotzdem den gewöhnlichen KI-Fallback.

Der Länderkontext TR wird für dieses Beispiel angegeben. Verwenden Sie relevanten Kontext aus Ihrer Anwendung und prüfen Sie data.match.scope; ein angegebenes Land garantiert keinen länderspezifischen Eintrag. Es belegt weder Nationalität noch Wohnsitz.

Wählen Sie eine Programmiersprache. Richten Sie Ihren API-Schlüssel ein, und führen Sie dann das Beispiel auf Ihrem Server aus.

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.

Anleitung zu Fehlern und Wiederholungen →
cURL
curl --silent --show-error --fail-with-body --max-time 30 \
  --request POST 'https://api.genderapi.io/api/v2/gender' \
  --header "Authorization: Bearer ${GENDERAPI_API_KEY:?Set GENDERAPI_API_KEY}" \
  --header 'Content-Type: application/json' \
  --data '{
  "type": "username",
  "value": "prenses",
  "country": "TR",
  "forceToGenderize": true
}'

cURL 7.76+ in einer POSIX-Shell. Im Terminal ausführen. Dokumentation der Laufzeitumgebung

JavaScript / Node.js
// 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": "username",
  "value": "prenses",
  "country": "TR",
  "forceToGenderize": true
};

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+; integriertes fetch. Als example.mjs speichern und node example.mjs ausführen. Dokumentation der Laufzeitumgebung

Python
import json
import os
import sys
import urllib.error
import urllib.request

api_key = os.environ.get("GENDERAPI_API_KEY")
if not api_key:
    raise RuntimeError("Set GENDERAPI_API_KEY")
body = json.loads("{\"type\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}")

class NoRedirect(urllib.request.HTTPRedirectHandler):
    def redirect_request(self, req, fp, code, msg, headers, newurl):
        return None

request = 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+; Standardbibliothek. Als example.py speichern und python3 example.py ausführen. Dokumentation der Laufzeitumgebung

PHP
<?php
$apiKey = getenv('GENDERAPI_API_KEY');
if (!$apiKey) {
    throw new RuntimeException('Set GENDERAPI_API_KEY');
}
$body = json_decode('{"type":"username","value":"prenses","country":"TR","forceToGenderize":true}', true, 512, JSON_THROW_ON_ERROR);

$ch = curl_init('https://api.genderapi.io/api/v2/gender');
curl_setopt_array($ch, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_FOLLOWLOCATION => false,
    CURLOPT_TIMEOUT => 30,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer ' . $apiKey,
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode($body, JSON_THROW_ON_ERROR),
]);
$raw = curl_exec($ch);
if ($raw === false) {
    throw new RuntimeException(curl_error($ch));
}
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE) ?: '';
curl_close($ch);
if (strpos($contentType, 'json') === false) {
    throw new RuntimeException("HTTP $status: expected a JSON response");
}
$result = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
$output = json_encode($result, JSON_PRETTY_PRINT | JSON_THROW_ON_ERROR) . PHP_EOL;
if ($status < 200 || $status >= 300) {
    fwrite(STDERR, $output); // Preserve the Problem Details body.
    exit(1);
}
echo $output;
// For batches, inspect every item; HTTP 200 can contain item errors.

PHP 8+ mit der cURL-Erweiterung. Als example.php speichern und php example.php ausführen. Dokumentation der Laufzeitumgebung

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\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}";
        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\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}", 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 main

import (
    "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\":\"username\",\"value\":\"prenses\",\"country\":\"TR\",\"forceToGenderize\":true}"
    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+; Standardbibliothek. Als main.go speichern und go run main.go ausführen. Dokumentation der Laufzeitumgebung

Ergebnis und Belege gemeinsam aufbewahren

Eine abgeleitete Zuordnung ist nicht das Geschlecht, das eine Person selbst angibt. Bewahren Sie die ursprüngliche Eingabe, die zurückgegebenen Belege und alle Angaben der Person selbst getrennt auf. Ein unbekanntes Ergebnis ist ein gültiges Ergebnis; es sollte in Ihrer Anwendung nicht zu einer geratenen Kategorie werden.

FeldVerwendung
data.gender / data.result_statusVerwenden Sie male oder female nur bei identified. Behalten Sie bei einem unbekannten Ergebnis den nativen JSON-Wert null bei.
data.name / data.matchPrüfen Sie den zurückgegebenen Namen und den ausgewählten Kandidaten. Ein Treffer über einen Teilstring belegt nicht, dass die Eingabe zu einer Person mit diesem Vornamen gehört.
data.confidence / data.confidence_kindDie Konfidenz liegt auf einer Skala von 0–1 oder ist null. observed_frequency beruht auf gespeicherten Häufigkeiten; model_reported ist ein KI-Wert. Bewerten Sie Schwellenwerte für jede Art getrennt.
data.source / data.sample_countUnterscheiden Sie dataset, ai und none. KI-Ergebnisse haben keine gespeicherte Stichprobengröße. Eine Stichprobengröße ist kein gemessener Genauigkeitswert.
meta.access.modePrüfen Sie bei einer Kontointegration, ob api_key gemeldet wird. Fehlende oder nicht erkannte Schlüssel können stattdessen den gemeinsamen IP-Testzugang nutzen.
meta.usageLesen Sie charged_credits und billing_status. Ein erfolgreiches unbekanntes Ergebnis ist kostenpflichtig. Eine verlorene Antwort belegt nicht, dass die Anfrage kostenlos war.

Festlegen, wann KI eingesetzt wird

forceToGenderize ist für Namen, E-Mail-Adressen und Benutzernamen optional. Ist es aktiviert, lassen Sie ai_mode weg oder verwenden Sie fallback; off und always sind damit unvereinbar und liefern 422. Ein positives Anfangsguthaben genügt, um eine Anfrage zu starten, auch wenn die endgültige Abbuchung das Guthaben unter null senkt.

Der Spitznamenmodus kann ein Geschlecht zusammen mit name: null zurückgeben. Er kann auch ein unbekanntes Ergebnis liefern. Weder der gewöhnliche KI-Fallback noch die Spitznamen-Auswertung garantieren eine richtige Antwort oder einen Wert ungleich null.

AnfrageoptionVerhaltenCredits für eine erfolgreiche Abfrage
options.ai_mode: offNur den Datensatz verwenden.1, auch bei einem unbekannten Ergebnis
options.ai_mode: fallbackZuerst den Datensatz prüfen, dann gewöhnliche KI, wenn kein Geschlecht zurückgegeben wird. Das ist der Standard für Einzelanfragen.Insgesamt 1, einschließlich KI-Fallback
options.ai_mode: alwaysDirekt KI verwenden.2
forceToGenderize: trueZuerst den Datensatz prüfen, dann KI einen persönlichen Spitznamen oder Alias auswerten lassen, auch ohne echten Vornamen.1 für ein im Datensatz aufgelöstes Ergebnis; insgesamt 2, wenn KI eingesetzt wird

Beim Verarbeiten einer Liste das Ergebnis jedes Benutzernamens behalten

Verwenden Sie POST /api/v2/gender/batch für Listen von Benutzernamen oder für gemischte Listen aus Namen, E-Mail-Adressen und Benutzernamen. Das Maximum liegt bei 50 Einträgen mit API-Schlüssel oder 10 im IP-Testzugang. Jeder Eintrag hat eigene Länder- und KI-Optionen; optionale IDs müssen innerhalb des Batches eindeutig sein.

Standardmäßig nutzt ein Batch nur den Datensatz. Aktivieren Sie fallback pro Eintrag, wenn gewöhnliche KI gewünscht ist, oder setzen Sie forceToGenderize pro Eintrag für die Spitznamen-Auswertung. Prüfen Sie data oder error in jedem Ergebnis und verwenden Sie id oder index, um die Zuordnung zur ursprünglichen Zeile zu erhalten. Erfolgreiche unbekannte Einträge sind kostenpflichtig.

Wissen, was Sie senden

Die Live-Demo sendet den eingegebenen Wert erst dann an GenderAPI.io, wenn Sie ihn absenden. Wird KI eingesetzt, gehen der übermittelte type, der value und der Länderkontext an den konfigurierten Inferenzdienst. Für eine Vorhersage nur mit dem Datensatz verwenden Sie in Ihrer Integration options.ai_mode: off ohne forceToGenderize.

Die Datenschutzerklärung, der Auftragsverarbeitungsvertrag und das Verzeichnis der Unterauftragsverarbeiter beschreiben die veröffentlichten Verarbeitungsbedingungen. Ein Ergebnis ist eine abgeleitete Zuordnung; Angaben der Person selbst haben Vorrang. Nutzen Sie es nicht als Grundlage für folgenreiche Entscheidungen über eine Person.

Häufig gestellte Fragen

Muss ein Benutzername einen echten Vornamen enthalten?

Die gewöhnliche KI-Vorhersage benötigt einen verwertbaren Vornamen. Mit forceToGenderize kann die API außerdem eine Zuordnung über einen Spitznamen versuchen, wenn die Datensatzabfrage kein Ergebnis liefert. Dieser Modus benötigt keinen echten Vornamen und kann name: null zurückgeben.

Garantiert forceToGenderize ein Geschlecht?

Nein. Es erlaubt die Spitznamen-Auswertung, doch das endgültige Ergebnis kann trotzdem unbekannt sein. Behalten Sie den nativen JSON-Wert null bei und prüfen Sie result_status und reason.

Prüft die API das Profil in sozialen Medien?

Dieser Endpunkt wertet den übermittelten Wert aus. Er ruft weder Profil noch Beiträge oder Fotos des Kontos ab, um festzustellen, wem es gehört.

Kann ich forceToGenderize auch für Namen oder E-Mail-Adressen verwenden?

Ja. Es ist für Eingaben vom Typ name, email und username optional. Zuerst wird der Datensatz verwendet, bei fehlendem Ergebnis dann KI mit Spitznamen-Auswertung: 1 Credit für ein im Datensatz aufgelöstes Ergebnis oder insgesamt 2, wenn KI eingesetzt wird.

Weiter testen

GenderAPI-Schlüssel verwenden

Fügen Sie den API-Schlüssel aus Ihrem GenderAPI-Konto ein, um weiterzutesten, wenn die geteilten Credits des 24-Stunden-IP-Testzugangs aufgebraucht sind. Das Speichern sendet keine Anfrage; senden Sie die Anfrage anschließend erneut.

Wird nur in diesem Browser-Tab gespeichert und beim Schließen des Tabs gelöscht.