Invia type e value a GenderAPI.io V2. Confronta i parametri di query GET con il JSON delle richieste POST, inclusi country, modalità IA e forceToGenderize.
Parametri JSON POST
Parametro
Tipo
Obbligatorio
Valore predefinito
Descrizione
Parametrotype
Tipostring
ObbligatorioSì
Valore predefinito—
DescrizioneCategoria di input: name, email o username.
Parametrovalue
Tipostring
ObbligatorioSì
Valore predefinito—
DescrizioneObbligatorio. 1–254 caratteri; non vuoto e senza caratteri di controllo. I valori email devono avere una sintassi email valida.
Parametrocountry
Tipostring
ObbligatorioNo
Valore predefinito—
DescrizioneCodice ISO 3166-1 alpha-2 facoltativo, in maiuscolo, ad esempio TR o US. Una ricerca specifica per paese può ricorrere al set di dati globale.
ParametroforceToGenderize
Tipoboolean
ObbligatorioNo
Valore predefinitofalse
DescrizioneConsulta prima il set di dati, poi l'IA con interpretazione dei nickname se non c'è un risultato. Supportato per name, email e username.
Parametrooptions
Tipoobject
ObbligatorioNo
Valore predefinito—
DescrizioneOggetto con le opzioni IA per ciascun input.
Parametrooptions.ai_mode
Tipostring
ObbligatorioNo
Valore predefinitofallback
DescrizioneValori ammessi: off, fallback, always. Con forceToGenderize: true, ometti questo campo o usa fallback.
Parametroid
Tipostring
ObbligatorioNo
Valore predefinito—
DescrizioneIdentificatore facoltativo di 1–64 caratteri nel JSON POST. Viene restituito accanto al rispettivo risultato del batch e deve essere univoco all'interno del batch. Accettato ma non restituito per le previsioni singole. Non supportato nelle query GET.
Un trattino (—) indica che non è previsto un valore predefinito. Ometti gli input facoltativi non utilizzati; non inviare null. Gli esempi di risposta sono illustrativi, non valori predefiniti. "Può essere null" significa che il campo può contenere JSON null; un campo omesso è descritto separatamente.
Ometti i campi facoltativi che non usi; non inviare null o stringhe vuote al posto di country o options. I valori booleani JSON devono essere true o false, non stringhe. Il testo UTF-8 è supportato: non serve traslitterare i nomi in ASCII.
Parametri di query GET
Parametro
Tipo
Obbligatorio
Valore predefinito
Descrizione
Parametrotype
Tipostring
ObbligatorioNo
Valore predefinitoname
DescrizioneCategoria di input: name, email o username.
Parametrovalue
Tipostring
ObbligatorioSì
Valore predefinito—
DescrizioneObbligatorio. 1–254 caratteri; non vuoto e senza caratteri di controllo. I valori email devono avere una sintassi email valida.
Parametrocountry
Tipostring
ObbligatorioNo
Valore predefinito—
DescrizioneCodice ISO 3166-1 alpha-2 facoltativo, in maiuscolo, ad esempio TR o US. Una ricerca specifica per paese può ricorrere al set di dati globale.
ParametroforceToGenderize
Tipoboolean
ObbligatorioNo
Valore predefinitofalse
DescrizioneConsulta prima il set di dati, poi l'IA con interpretazione dei nickname se non c'è un risultato. Supportato per name, email e username.
Parametroai_mode
Tipostring
ObbligatorioNo
Valore predefinitofallback
DescrizioneValori ammessi: off, fallback, always. Con forceToGenderize: true, ometti questo campo o usa fallback.
Parametrokey
Tipostring
ObbligatorioNo
Valore predefinito—
DescrizioneChiave API esistente per le richieste GET. Preferisci l'intestazione Authorization; le chiavi mancanti o sconosciute usano la prova IP.
GET usa type, value, country, forceToGenderize e ai_mode direttamente nella stringa di query, più il parametro facoltativo key. Codifica i valori con l'encoder dei parametri URL del tuo client HTTP; ad esempio @ diventa %40. Per i valori booleani in GET invia true o false. I campi sconosciuti e i valori non validi vengono rifiutati.
Prima di inviare la richiesta
Invia le richieste di previsione a GenderAPI.io V2 con POST https://api.genderapi.io/api/v2/gender, indicando type e value nel corpo JSON. Usa la tua chiave GenderAPI.io esistente in Authorization: Bearer YOUR_API_KEY e Content-Type: application/json. Leggi il risultato in data e le informazioni su accesso e addebito in meta. Ogni richiesta viene elaborata in modo indipendente.
Scegli il linguaggio di programmazione nell'esempio di codice. Imposta GENDERAPI_API_KEY nell'ambiente del processo prima di eseguirlo. Le chiavi mancanti o non riconosciute possono usare la prova IP condivisa: quando integri un account, verifica quindi che meta.access.mode sia api_key.
Esempi di richiesta per linguaggio di programmazione
Questo esempio usa i campi di richiesta comuni per un nome. Modifica type e value per un indirizzo email o un nome utente, oppure imposta options.ai_mode e forceToGenderize come descritto sopra.
Ogni richiesta di previsione è una nuova operazione a pagamento, anche quando è un nuovo tentativo. Questi esempi non riprovano automaticamente. Controlla lo stato dell'addebito prima di inviare un'altra richiesta.
Prima dell'esecuzione: accesso e gestione degli errori
Esegui questi esempi sul tuo server. Imposta GENDERAPI_API_KEY nell'ambiente del processo con la tua chiave API esistente. Verifica che meta.access.mode sia api_key: una chiave non riconosciuta può portare alla prova IP.
Per le risposte JSON con HTTP 4xx e 5xx, il corpo dell'errore viene conservato e l'esempio termina con un codice di uscita diverso da zero. Controlla code, action e meta.usage.billing_status prima di riprovare.
// 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": "name", "value": "Lorenzo", "country": "IT"};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+; fetch integrato. Salva come example.mjs ed esegui node example.mjs. Documentazione del runtime
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")body = json.loads("{\"type\":\"name\",\"value\":\"Lorenzo\",\"country\":\"IT\"}")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+; libreria standard. Salva come example.py ed esegui python3 example.py. Documentazione del runtime
PHP 8+ con l'estensione cURL. Salva come example.php ed esegui php example.php. Documentazione del runtime
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\":\"name\",\"value\":\"Lorenzo\",\"country\":\"IT\"}"; 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+; client HTTP standard. Salva come GenderApiExample.java ed esegui java GenderApiExample.java. Documentazione del runtime
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\":\"Lorenzo\",\"country\":\"IT\"}", 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.}
Applicazione console .NET 8+. Usalo come Program.cs in un progetto console, poi esegui dotnet run. Documentazione del runtime
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\":\"Lorenzo\",\"country\":\"IT\"}" 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) }}