Skicka type och value till GenderAPI.io V2. Jämför frågeparametrar för GET med JSON för POST, inklusive country, AI-lägen och forceToGenderize.
JSON-parametrar för POST
Parameter
Typ
Obligatorisk
Standardvärde
Beskrivning
Parametertype
Typstring
ObligatoriskJa
Standardvärde—
BeskrivningIndatakategori: name, email eller username.
Parametervalue
Typstring
ObligatoriskJa
Standardvärde—
BeskrivningKrävs. 1–254 tecken, inte tomt och utan kontrolltecken. E-postvärden måste ha giltig e-postsyntax.
Parametercountry
Typstring
ObligatoriskNej
Standardvärde—
BeskrivningValfri ISO 3166-1 alpha-2-kod med versaler, till exempel TR eller US. En landsspecifik sökning kan falla tillbaka på den globala datamängden.
ParameterforceToGenderize
Typboolean
ObligatoriskNej
Standardvärdefalse
BeskrivningKontrollerar först datamängden och använder sedan AI med tolkning av smeknamn om inget resultat hittas. Stöds för name, email och username.
Parameteroptions
Typobject
ObligatoriskNej
Standardvärde—
BeskrivningObjekt med AI-alternativ för respektive indata.
Parameteroptions.ai_mode
Typstring
ObligatoriskNej
Standardvärdefallback
BeskrivningTillåtna värden: off, fallback, always. Med forceToGenderize: true utelämnar du fältet eller använder fallback.
Parameterid
Typstring
ObligatoriskNej
Standardvärde—
BeskrivningValfri identifierare med 1–64 tecken i POST-JSON. Returneras bredvid respektive batchresultat och måste vara unik inom en batch. Godtas men returneras inte för enskilda prediktioner. Stöds inte i GET-frågor.
Ett streck (—) betyder att inget standardvärde finns. Utelämna valfria indata som inte används och skicka inte null. Svarsexemplen är illustrativa, inte standardvärden. ”Kan vara null” betyder att fältet kan innehålla JSON null; ett fält som utelämnas beskrivs separat.
Utelämna valfria fält som inte används; skicka varken null eller tomma strängar i stället för country eller options. Booleska värden i JSON måste vara true eller false, inte strängar. UTF-8-text stöds, så namn behöver inte translittereras till ASCII.
Frågeparametrar för GET
Parameter
Typ
Obligatorisk
Standardvärde
Beskrivning
Parametertype
Typstring
ObligatoriskNej
Standardvärdename
BeskrivningIndatakategori: name, email eller username.
Parametervalue
Typstring
ObligatoriskJa
Standardvärde—
BeskrivningKrävs. 1–254 tecken, inte tomt och utan kontrolltecken. E-postvärden måste ha giltig e-postsyntax.
Parametercountry
Typstring
ObligatoriskNej
Standardvärde—
BeskrivningValfri ISO 3166-1 alpha-2-kod med versaler, till exempel TR eller US. En landsspecifik sökning kan falla tillbaka på den globala datamängden.
ParameterforceToGenderize
Typboolean
ObligatoriskNej
Standardvärdefalse
BeskrivningKontrollerar först datamängden och använder sedan AI med tolkning av smeknamn om inget resultat hittas. Stöds för name, email och username.
Parameterai_mode
Typstring
ObligatoriskNej
Standardvärdefallback
BeskrivningTillåtna värden: off, fallback, always. Med forceToGenderize: true utelämnar du fältet eller använder fallback.
Parameterkey
Typstring
ObligatoriskNej
Standardvärde—
BeskrivningBefintlig API-nyckel för GET-förfrågningar. Använd hellre Authorization-rubriken; nycklar som saknas eller är okända använder IP-provperioden.
GET använder type, value, country, forceToGenderize och ai_mode direkt i frågesträngen, plus valfri key. Koda värdena med URL-parameterkodaren i din HTTP-klient; till exempel blir @ till %40. Skicka true eller false för booleska värden i GET. Okända fält och ogiltiga värden avvisas.
Innan du skickar förfrågan
Skicka prediktionsförfrågningar till GenderAPI.io V2 med POST https://api.genderapi.io/api/v2/gender, med type och value i JSON-kroppen. Använd din befintliga GenderAPI.io-nyckel i Authorization: Bearer YOUR_API_KEY och Content-Type: application/json. Läs resultatet i data och uppgifterna om åtkomst och debitering i meta. Varje förfrågan behandlas separat.
Välj programmeringsspråk i kodexemplet. Sätt GENDERAPI_API_KEY i processmiljön innan du kör det. Nycklar som saknas eller inte känns igen kan använda den delade IP-provperioden, så kontrollera att meta.access.mode är api_key när du integrerar ett konto.
Exemplet använder de gemensamma förfrågningsfälten för en namnsökning. Ändra type och value för en e-postadress eller ett användarnamn, eller ange options.ai_mode och forceToGenderize enligt beskrivningen ovan.
Varje prediktionsförfrågan är en ny debiterbar åtgärd, även vid nya försök. Exemplen gör inga automatiska nya försök. Kontrollera debiteringsstatus innan du skickar en ny förfrågan.
Innan du kör: åtkomst och felhantering
Kör exemplen på din server. Sätt GENDERAPI_API_KEY i processmiljön till din befintliga API-nyckel. Kontrollera att meta.access.mode är api_key: en nyckel som inte känns igen kan leda till IP-provperioden.
Vid JSON-svar med HTTP 4xx och 5xx behålls felinnehållet och exemplet avslutas med en slutstatus som inte är noll. Kontrollera code, action och meta.usage.billing_status innan du försöker 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\":\"Erik\",\"country\":\"SE\"}")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+; standardbiblioteket. Spara som example.py och kör python3 example.py. Dokumentation för körmiljön
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\":\"Erik\",\"country\":\"SE\"}"; 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+; inbyggd HTTP-klient. Spara som GenderApiExample.java och kör java GenderApiExample.java. Dokumentation för körmiljön
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\":\"Erik\",\"country\":\"SE\"}", 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+. Använd som Program.cs i ett konsolprojekt och kör sedan dotnet run. Dokumentation för körmiljön
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\":\"Erik\",\"country\":\"SE\"}" 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) }}