Xác thực GenderAPI v2 bằng khóa API hiện có của bạn. Tìm hiểu các tiêu đề Bearer, khóa truy vấn GET, quyền truy cập dùng thử IP và các yêu cầu JSON.
Xác thực và dùng thử miễn phí
Gửi Authorization: Bearer YOUR_API_KEY từ máy chủ của bạn. Thay thế YOUR_API_KEY bằng khóa GenderAPI hiện có của bạn. Cả hai phiên bản đều chia sẻ số dư của bạn; không cần đăng ký hoặc khóa v2 riêng biệt.
Tất cả các yêu cầu POST đều yêu cầu Content-Type: application/json. Sử dụng khóa Bearer API hiện có của bạn. Mỗi yêu cầu được xử lý độc lập; yêu cầu lặp đi lặp lại sử dụng thanh toán bình thường.
Chỉ GET /gender cũng chấp nhận tham số truy vấn chính. Ưu tiên tiêu đề Ủy quyền cho tích hợp vì URL có thể được lưu trữ trong nhật ký và lịch sử trình duyệt. Không đặt khóa riêng trong mã giao diện người dùng.
Nếu thiếu khóa API, có định dạng không hợp lệ hoặc không được nhận dạng, yêu cầu sẽ sử dụng bản dùng thử IP được chia sẻ với v1. Điều này không áp dụng cho các khóa được nhận dạng đã bị vô hiệu hóa, hết hạn hoặc bị hạn chế. Kiểm tra chế độ truy cập trong meta.access.mode: api_key, ip_trial hoặc unauthenticated. Lý do dùng thử là api_key_missing, api_key_invalid hoặc api_key_not_found. Do đó, khóa không hợp lệ vẫn có thể nhận được phản hồi thử nghiệm thành công. Xác minh chế độ truy cập trong sản xuất.
Tín dụng dùng thử được đặt lại sau khoảng thời gian 24 giờ, không nhất thiết phải vào nửa đêm. Sử dụng /usage để đọc resets_at. Những người đứng sau cùng một IP công khai chia sẻ khoản phụ cấp này.
Sao chép khóa API từ tài khoản GenderAPI của bạn. Thay thế YOUR_API_KEY bên dưới bằng khóa đó, sau đó chạy ví dụ bạn đã chọn trong cùng một phiên cuối. Các lệnh này chỉ đặt biến môi trường cho phiên đó; trình giữ chỗ đã xuất bản không phải là khóa hoạt động.
Đối với một ứng dụng hoặc hoạt động triển khai, hãy định cấu hình GENDERAPI_API_KEY làm bí mật phía máy chủ. Các ví dụ không tự động tải tệp .env. Giữ khóa ngoài các gói trình duyệt, kiểm soát nguồn và URL công khai.
thiết bị đầu cuối macOS / Linux
export GENDERAPI_API_KEY='YOUR_API_KEY'
Windows PowerShell
$env:GENDERAPI_API_KEY = 'YOUR_API_KEY'
Xác minh quyền truy cập mà không cần tiêu tín dụng
Gọi GET /usage với tiêu đề Bearer. Khóa tài khoản hợp lệ tạo ra meta.access.mode: api_key. Nếu kết quả cho biết ip_trial, hãy kiểm tra khóa đã sao chép trước khi chạy dự đoán. Yêu cầu này là miễn phí, bao gồm cả đối với tài khoản không còn tín dụng.
Việc đọc số dư này không tốn phí tín dụng. Nó vẫn được tính vào giới hạn tỷ lệ yêu cầu.
Trước khi chạy: truy cập và xử lý lỗi
Chạy các ví dụ này trên máy chủ của bạn. Đặt GENDERAPI_API_KEY trong môi trường quy trình thành khóa API hiện có của bạn. Xác nhận meta.access.mode là api_key: khóa không được nhận dạng có thể quay lại bản dùng thử IP.
Phản hồi HTTP 4xx và 5xx JSON giữ nguyên phần thân lỗi và trả về trạng thái thoát khác 0. Kiểm tra code, action và meta.usage.billing_status trước khi thử lại.
// 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+; tìm nạp tích hợp. Lưu dưới dạng example.mjs và chạy node example.mjs. Tài liệu về thời gian chạy
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+; thư viện chuẩn. Lưu dưới dạng example.py và chạy python3 example.py. Tài liệu về thời gian chạy
PHP 8+ với phần mở rộng cURL. Lưu dưới dạng example.php và chạy php example.php. Tài liệu về thời gian chạy
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+; máy khách HTTP tiêu chuẩn. Lưu dưới dạng GenderApiExample.java và chạy java GenderApiExample.java. Tài liệu về thời gian chạy
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.}
Ứng dụng bảng điều khiển .NET 8+. Sử dụng làm Program.cs trong dự án bảng điều khiển, sau đó chạy dotnet run. Tài liệu về thời gian chạy
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) }}