Reference for felterne type, value, country, forceToGenderize og ai_mode i GenderAPI.io V2 samt forskellene mellem GET-parametre og JSON i POST-forespørgsler.
JSON-parametre i POST
Parameter
Type
Påkrævet
Standard
Beskrivelse
Parametertype
Typestring
PåkrævetJa
Standard—
BeskrivelseInputkategori: name, email eller username.
Parametervalue
Typestring
PåkrævetJa
Standard—
BeskrivelsePåkrævet. 1–254 tegn, ikke tom og uden kontroltegn. E-mailværdier skal have gyldig e-mailsyntaks.
Parametercountry
Typestring
PåkrævetNej
Standard—
BeskrivelseValgfri ISO 3166-1 alpha-2-kode med store bogstaver, for eksempel TR eller US. Et landespecifikt opslag kan falde tilbage til det globale datasæt.
ParameterforceToGenderize
Typeboolean
PåkrævetNej
Standardfalse
BeskrivelsePrøv datasættet først og derefter AI, der tager højde for kaldenavne, hvis der ikke findes et resultat. Understøttes for name, email og username.
Parameteroptions
Typeobject
PåkrævetNej
Standard—
BeskrivelseBeholder til AI-indstillingerne for det enkelte input.
Parameteroptions.ai_mode
Typestring
PåkrævetNej
Standardfallback
BeskrivelseTilladte værdier: off, fallback, always. Med forceToGenderize: true skal du udelade feltet eller bruge fallback.
Parameterid
Typestring
PåkrævetNej
Standard—
BeskrivelseValgfri identifikator på 1–64 tegn i POST-JSON. Returneres sammen med hvert resultat i en batch og skal være unik inden for batchen. Accepteres ved enkelte forudsigelser, men returneres ikke. Understøttes ikke i GET-forespørgsler.
En tankestreg (—) betyder, at der ikke er nogen standardværdi. Udelad valgfrie input, du ikke bruger, og send ikke null. Eksemplerne på svar er illustrative og ikke standardværdier. ”Kan være null” betyder, at feltet kan indeholde JSON null. Et felt, der udelades, beskrives separat.
Udelad valgfrie felter, du ikke bruger. Send ikke null eller tomme strenge i stedet for country eller options. JSON-booleans skal være true eller false, ikke strenge. UTF-8-tekst understøttes, og navne behøver ikke at blive translittereret til ASCII.
Parametre i GET-forespørgsler
Parameter
Type
Påkrævet
Standard
Beskrivelse
Parametertype
Typestring
PåkrævetNej
Standardname
BeskrivelseInputkategori: name, email eller username.
Parametervalue
Typestring
PåkrævetJa
Standard—
BeskrivelsePåkrævet. 1–254 tegn, ikke tom og uden kontroltegn. E-mailværdier skal have gyldig e-mailsyntaks.
Parametercountry
Typestring
PåkrævetNej
Standard—
BeskrivelseValgfri ISO 3166-1 alpha-2-kode med store bogstaver, for eksempel TR eller US. Et landespecifikt opslag kan falde tilbage til det globale datasæt.
ParameterforceToGenderize
Typeboolean
PåkrævetNej
Standardfalse
BeskrivelsePrøv datasættet først og derefter AI, der tager højde for kaldenavne, hvis der ikke findes et resultat. Understøttes for name, email og username.
Parameterai_mode
Typestring
PåkrævetNej
Standardfallback
BeskrivelseTilladte værdier: off, fallback, always. Med forceToGenderize: true skal du udelade feltet eller bruge fallback.
Parameterkey
Typestring
PåkrævetNej
Standard—
BeskrivelseEksisterende API-nøgle til GET-forespørgsler. Foretræk Authorization-headeren. Manglende eller ukendte nøgler bruger IP-prøveadgangen.
GET bruger type, value, country, forceToGenderize og ai_mode direkte i forespørgselsstrengen samt den valgfrie key. Kod værdierne med din HTTP-klients encoder til URL-parametre, så @ for eksempel bliver til %40. Send true eller false for booleans i GET. Ukendte felter og ugyldige værdier afvises.
Før du sender forespørgslen
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 forespørgsel behandles uafhængigt.
Vælg dit programmeringssprog i kodeeksemplet. Sæt GENDERAPI_API_KEY i procesmiljøet, før du kører det. Manglende eller ukendte nøgler kan bruge den delte IP-prøveadgang, så bekræft, at meta.access.mode er api_key, når du integrerer en konto.
Eksempler på forespørgsler efter programmeringssprog
Eksemplet bruger de fælles felter i forespørgslen til et navneopslag. Skift type og value for en e-mailadresse eller et brugernavn, eller angiv options.ai_mode og forceToGenderize som beskrevet ovenfor.
Hver forespørgsel om en forudsigelse er en ny operation, der koster kreditter, også når den gentages. Eksemplerne prøver ikke automatisk igen. Kontrollér opkrævningsstatus, før du sender en ny forespørgsel.
Før du kører: adgang og fejlhåndtering
Kør eksemplerne på din server. Sæt GENDERAPI_API_KEY i procesmiljøet til din eksisterende API-nøgle. Bekræft, at meta.access.mode er api_key: En nøgle, der ikke genkendes, kan føre til IP-prøveadgangen.
JSON-svar med HTTP 4xx og 5xx bevarer fejlens body og returnerer en exitstatus, der ikke er nul. Kontrollér code, action og meta.usage.billing_status, før du prøver igen.
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\":\"Mads\",\"country\":\"DK\"}")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\":\"Mads\",\"country\":\"DK\"}"; 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-klienten. Gem som GenderApiExample.java, og kør java GenderApiExample.java. Dokumentation for kørselsmiljøet
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\":\"Mads\",\"country\":\"DK\"}", 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.}
Konsolapplikation med .NET 8+. Brug som Program.cs i et konsolprojekt, og kør derefter dotnet run. Dokumentation for kørselsmiljøet
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\":\"Mads\",\"country\":\"DK\"}" 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) }}