Godkend GenderAPI v2 med din eksisterende API nøgle. Lær Bearer overskrifter, GET forespørgselsnøgler, IP prøveadgang og JSON anmodninger.
Autentificering og den gratis prøveperiode
Send Authorization: Bearer YOUR_API_KEY fra din server. Udskift YOUR_API_KEY med din eksisterende GenderAPI nøgle. Begge versioner deler din balance; der kræves intet separat v2-abonnement eller nøgle.
Alle POST-anmodninger kræver Content-Type: application/json. Brug din eksisterende Bearer API nøgle. Hver anmodning behandles uafhængigt; gentagne anmodninger bruger normal fakturering.
Kun GET /gender accepterer også nøgleforespørgselsparameteren. Foretrække autorisationsoverskriften til integrationer, fordi URL'er kan gemmes i browserhistorik og logfiler. Læg ikke private nøgler i frontend-koden.
Hvis en API-nøgle mangler, har et ugyldigt format eller ikke genkendes, bruger anmodningen IP-prøveversionen, der er delt med v1. Dette gælder ikke for genkendte nøgler, der er deaktiveret, udløbet eller begrænset. Tjek adgangstilstanden i meta.access.mode: api_key, ip_trial eller unauthenticated. Forsøgsårsagen er api_key_missing, api_key_invalid eller api_key_not_found. En ugyldig nøgle kan derfor stadig modtage et vellykket prøvesvar. Bekræft adgangstilstanden i produktionen.
Prøvekreditter nulstilles efter en 24-timers periode, ikke nødvendigvis ved midnat. Brug /usage til at læse resets_at. Folk bag den samme offentlige IP deler denne godtgørelse.
Kopiér din API-nøgle fra din GenderAPI-konto. Erstat YOUR_API_KEY nedenfor med den nøgle, og kør derefter dit valgte eksempel i den samme terminalsession. Disse kommandoer indstiller kun en miljøvariabel for den session; den offentliggjorte pladsholder er ikke en arbejdsnøgle.
For en applikation eller implementering skal du konfigurere GENDERAPI_API_KEY som en hemmelighed på serversiden. Eksemplerne indlæser ikke automatisk en .env-fil. Hold nøglen væk fra browserpakker, kildekontrol og offentlige webadresser.
macOS / Linux-terminal
export GENDERAPI_API_KEY='YOUR_API_KEY'
Windows PowerShell
$env:GENDERAPI_API_KEY = 'YOUR_API_KEY'
Bekræft adgang uden at bruge kreditter
Ring til GET /usage med Bearer-headeren. En gyldig kontonøgle producerer meta.access.mode: api_key. Hvis resultatet siger ip_trial, skal du kontrollere den kopierede nøgle, før du kører forudsigelser. Denne anmodning er gratis, inklusive for en konto uden resterende kreditter.
Vælg et programmeringssprog.Indstil din API nøgle, kør derefter eksemplet på din server.
Denne saldoaflæsning koster ingen kreditter. Det tæller stadig med for anmodningssatsgrænser.
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 response = await fetch("https://api.genderapi.io/api/v2/usage", { method: "GET", headers: { Authorization: `Bearer ${apiKey}`, }, 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")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/usage", method="GET", headers={ "Authorization": "Bearer " + api_key, },)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"); 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/usage")) .timeout(Duration.ofSeconds(30)) .header("Authorization", "Bearer " + apiKey) .GET() .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.Get, "https://api.genderapi.io/api/v2/usage");request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);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") request, err := http.NewRequest("GET", "https://api.genderapi.io/api/v2/usage", nil) if err != nil { return err } request.Header.Set("Authorization", "Bearer " + apiKey) 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