İsim, e-posta ve kullanıcı adlarını toplu sorgulama
| Parametre | Tür | Zorunlu | Varsayılan | Açıklama |
|---|---|---|---|---|
items | array<object> | Evet | — | 1–50 tahmin öğesi; IP denemesinde en fazla 10. Sonuçlar girdi sırasını korur. |
items[].type | string | Evet | — | Girdi türü: name, email veya username. |
items[].value | string | Evet | — | Zorunlu. 1–254 karakter; boş olamaz ve kontrol karakteri içeremez. E-posta değeri geçerli e-posta sözdizimine uymalıdır. |
items[].country | string | Hayır | — | İsteğe bağlı, büyük harfli ISO 3166-1 alpha-2 kodu; örneğin TR veya US. Ülkeye özel sorgu, genel veri kümesine dönebilir. |
items[].forceToGenderize | boolean | Hayır | false | Önce veri kümesine bakılır; sonuç bulunamazsa takma adları yorumlayan yapay zekâ kullanılır. name, email ve username için desteklenir. |
items[].options | object | Hayır | — | Her girdiye ait yapay zekâ seçeneklerini içeren nesne. |
items[].options.ai_mode | string | Hayır | off | Geçerli değerler: off, fallback, always. forceToGenderize: true olduğunda bu alanı göndermeyin veya fallback kullanın. |
items[].id | string | Hayır | — | POST JSON içinde isteğe bağlı, 1–64 karakterlik kimlik. Her toplu sonuçta geri döner ve aynı toplu istekte benzersiz olmalıdır. Tekli sorguda kabul edilir ancak yanıtta yer almaz. GET sorgularında desteklenmez. |
POST /gender/batch, API anahtarıyla 1–50, IP denemesinde en fazla 10 öğelik items dizisi kabul eder. Yalnızca isim, e-posta veya kullanıcı adı gönderebilir ya da üçünü birleştirebilirsiniz. Her öğenin country, forceToGenderize ve options alanları ayrıdır. Kimlikler isteğe bağlıdır ve benzersiz olmalıdır.
Sonuçlar girdi sırasını korur; index, varsa id, charged_credits ve data veya error alanlarından yalnızca birini içerir. HTTP 200, öğe düzeyinde hata içerebilir; her öğeyi kontrol edin. meta.summary içinde total, succeeded, identified, unknown ve failed bulunur. Belirsiz tahmin başarılı ve ücretli bir öğedir.
İstek doğrulama veya planlama hatası, kredi düşülmeden toplu isteği reddeder. Çalıştırılan tüm öğeler başarısızsa API, data dizisi ve eski results takma alanıyla 2xx dışı Problem yanıtı döndürür. İadesi doğrulanan başarısız öğe sıfır kredidir. Ücretlendirme doğrulanmadıysa öğe tutarlarını kesin kabul etmeyin.
Programlama dilinizi seçin. API anahtarınızı ayarlayın, ardından örneği sunucunuzda çalıştırın.
Yeniden denemeler dahil her tahmin isteği yeni ve ücretlendirilebilir bir işlemdir. Örnekler otomatik yeniden deneme yapmaz. Yeni istekten önce ücretlendirme durumunu kontrol edin.
Çalıştırmadan önce: erişim ve hata yönetimi
Örnekleri sunucunuzda çalıştırın. İşlem ortamındaki GENDERAPI_API_KEY değişkenini mevcut anahtarınıza ayarlayın. Tanınmayan anahtar IP denemesine yönlenebildiğinden meta.access.mode değerinin api_key olduğunu doğrulayın.
HTTP 4xx ve 5xx JSON yanıtlarında hata gövdesi korunur ve program sıfırdan farklı çıkış koduyla sonlanır. Yeniden denemeden önce code, action ve meta.usage.billing_status alanlarını kontrol edin. HTTP 200 toplu yanıtlarda her öğenin data veya error alanını da inceleyin.
Hata ve yeniden deneme rehberi →POSIX kabuğunda cURL 7.76+. Terminalinizde çalıştırın. Çalıştırma ortamı dokümantasyonu
Node.js 22+; yerleşik fetch. example.mjs olarak kaydedin ve node example.mjs çalıştırın. Çalıştırma ortamı dokümantasyonu
Python 3.10+; standart kütüphane. example.py olarak kaydedin ve python3 example.py çalıştırın. Çalıştırma ortamı dokümantasyonu
cURL uzantılı PHP 8+. example.php olarak kaydedin ve php example.php çalıştırın. Çalıştırma ortamı dokümantasyonu
Java 17+; standart HTTP istemcisi. GenderApiExample.java olarak kaydedin ve java GenderApiExample.java çalıştırın. Çalıştırma ortamı dokümantasyonu
.NET 8+ konsol uygulaması. Konsol projesinde Program.cs olarak kullanın, ardından dotnet run çalıştırın. Çalıştırma ortamı dokümantasyonu
Go 1.22+; standart kütüphane. main.go olarak kaydedin ve go run main.go çalıştırın. Çalıştırma ortamı dokümantasyonu
Toplu yanıtı yorumlama
Bu örnek, 1 Ekim 2026'da alınmış iki gerçek sonucu (bir veri kümesi eşleşmesi ve bir belirsiz sonuç) örnek amaçlı bir sağlayıcı hatasıyla birleştirir. Yukarıdaki isteğin beklenen çıktısı değil, kısmi başarılı HTTP 200 örneğidir. İki başarılı öğenin her biri 1 kredi, başarısız öğe ise doğrulanmış şekilde sıfır kredidir.
{
"data": [
{
"index": 0,
"id": "known",
"charged_credits": 1,
"data": {
"input": {
"type": "name",
"value": "Mehmet",
"country": "TR"
},
"name": "mehmet",
"gender": "male",
"country": "TR",
"confidence": 0.9944843168527379,
"confidence_kind": "observed_frequency",
"sample_count": 270864,
"source": "dataset",
"result_status": "identified",
"reason": null,
"country_source": "dataset",
"match": {
"name": "mehmet",
"method": "normalized",
"scope": "country",
"country": "TR"
}
}
},
{
"index": 1,
"id": "missing",
"charged_credits": 1,
"data": {
"input": {
"type": "name",
"value": "zzzxxyy",
"country": null
},
"name": null,
"gender": null,
"country": null,
"confidence": null,
"confidence_kind": null,
"sample_count": null,
"source": "none",
"result_status": "unknown",
"reason": "not_found",
"country_source": null,
"match": {
"name": null,
"method": null,
"scope": null,
"country": null
}
}
},
{
"index": 2,
"id": "failed",
"charged_credits": 0,
"error": {
"type": "urn:genderapi:problem:ai_upstream_error",
"title": "ai upstream error",
"status": 502,
"detail": "The AI provider could not complete the request.",
"instance": "urn:uuid:11111111-1111-4111-8111-111111111111",
"code": "ai_upstream_error",
"request_id": "11111111-1111-4111-8111-111111111111",
"documentation": "https://api.genderapi.io/api/v2/errors",
"action": "inspect_billing_before_retry"
}
}
],
"meta": {
"request_id": "11111111-1111-4111-8111-111111111111",
"duration_ms": 12,
"access": {
"mode": "ip_trial",
"reason": "api_key_missing"
},
"usage": {
"charged_credits": 2,
"remaining_credits": 6,
"billing_status": "confirmed",
"resets_at": "2026-09-26T12:00:00.000Z",
"limit": 10,
"period_seconds": 86400
},
"summary": {
"total": 3,
"succeeded": 2,
"identified": 1,
"unknown": 1,
"failed": 1
}
}
}Toplu sonuç alanları
| Alan | Tür | Null olabilir mi? | Örnek | Açıklama |
|---|---|---|---|---|
data | array<object> | Hayır | […] | Sıralı sonuçlar. Her öğe bir tahmin veya hata içerir; her öğeyi kontrol edin. |
data[].index | integer | Hayır | 0 | Gönderilen items dizisindeki sıfırdan başlayan konum. |
data[].id | string | Hayır | "contact-1" | Girdi için belirlediğiniz kimlik; yalnızca gönderilmişse yanıtta bulunur. |
data[].charged_credits | integer | Hayır | 1 | Doğrulanmış iadeler sonrasındaki net öğe ücreti. Genel ücretlendirme belirsizse bu değeri kesin kabul etmeyin. |
data[].data | object | Hayır | {…} | Bilinmeyen sonuçlar dahil başarılı öğelerde bulunur. Yanıt rehberindeki tahmin alanlarını kullanır. |
data[].error | object | Hayır | {…} | Başarısız öğelerde data yerine bulunur. Hata rehberindeki Problem Details alanlarını kullanır. |
Toplu işlem özeti alanları
| Alan | Tür | Null olabilir mi? | Örnek | Açıklama |
|---|---|---|---|---|
meta.summary.total | integer | Hayır | 3 | Toplu istekteki toplam öğe sayısı. |
meta.summary.succeeded | integer | Hayır | 2 | Bilinmeyen tahminler dahil başarılı öğeler. |
meta.summary.identified | integer | Hayır | 1 | Cinsiyet değeri null olmayan başarılı öğeler. |
meta.summary.unknown | integer | Hayır | 1 | Cinsiyet değeri null olan başarılı öğeler; bu sonuçlar ücretlendirilir. |
meta.summary.failed | integer | Hayır | 1 | Başarısız öğeler. total = succeeded + failed; succeeded = identified + unknown. |
Erişim, ücretlendirme ve istek bilgileri
| Alan | Tür | Null olabilir mi? | Örnek | Açıklama |
|---|---|---|---|---|
meta.request_id | string | Hayır | "550e8400-e29b-41d4-a716-446655440000" | Bu HTTP isteğinin benzersiz kimliği; X-Request-ID başlığında da gönderilir. |
meta.duration_ms | integer | Hayır | 42 | İsteğin milisaniye cinsinden işlenme süresi. |
meta.access.mode | string | Hayır | "api_key" | api_key, ip_trial veya unauthenticated. Hesap anahtarıyla erişimde api_key olduğunu doğrulayın. |
meta.access.reason | string | Evet | null | Denemeye geçiş nedeni: api_key_missing, api_key_invalid veya api_key_not_found; diğer durumlarda null. |
meta.usage.charged_credits | integer | Evet | 1 | Net düşülen kredi. Ücretlendirme öncesinde veya tam iade doğrulandığında sıfırdır; ücretlendirme belirsizse null. |
meta.usage.remaining_credits | integer | Evet | 99 | İşlem tamamlandığındaki bakiye. Negatif olabilir; bilgi alınamıyorsa veya ücretlendirme belirsizse null. |
meta.usage.billing_status | string | Hayır | "confirmed" | not_charged, confirmed veya unconfirmed. Başarısız bir tahmini yeniden denemeden önce kontrol edin. |
meta.usage.resets_at | string | Evet | "2026-09-27T12:00:00.000Z" | IP denemesinin UTC sıfırlanma zamanı (ISO 8601); API anahtarlı hesaplarda veya bilinmiyorsa null. |
meta.usage.limit | integer | Evet | 10 | IP denemesinin kredi hakkı; API anahtarlı hesaplarda null. |
meta.usage.period_seconds | integer | Evet | 86400 | IP denemesinin saniye cinsinden süresi; API anahtarlı hesaplarda null. |
Toplu sorgu kredilerini ve yeniden denemeleri planlama
Mevcut API anahtarınızı Bearer başlığında, Content-Type: application/json ile gönderin. Her toplu istek yeni bir işlemdir. Kısmi hatada önce ücretlendirmeyi kontrol edin; yalnızca hata türü yeniden denemeye uygunsa başarısız öğeleri tekrar gönderin. Başarılı öğeler tekrar gönderilirse yeniden ücretlendirilir.
Toplu öğelerde varsayılan AI off’tur; başarılı öğe 1 kredidir. Açıkça seçilen fallback, yapay zekâ dahil toplam 1; always 2 kredidir. forceToGenderize, veri kümesinde tahmin bulunursa 1, yapay zekâda toplam 2 kredidir. Başarılı belirsiz sonuçlar ücretlidir. Başlamak için 1 pozitif kredi yeterlidir; nihai tutar bakiyeyi eksiye düşürebilir.
Kişi listesini işlerken her satırın sonucunu takip edin
Toplu uç nokta yalnızca adlardan, yalnızca e-postalardan veya farklı girdi türlerinden oluşan listeleri kabul eder. Hesap anahtarıyla listenizi en fazla 50, IP denemesinde en fazla 10 öğelik parçalara ayırın. Kaynak listedeki satır konumunu kendiniz saklayın ve her öğeye aynı istek içinde benzersiz bir id verin. Yanıttaki index sıfırdan başlar ve tüm listenize değil, gönderdiğiniz parçaya aittir.
| Adım | Saklanacak veya kontrol edilecek bilgi | Neden gerekli? |
|---|---|---|
| 1. Listeyi parçalara ayırın | Kaynak satırı ve öğenin id değerini saklayın; country ve yapay zekâ seçeneklerini her öğe için belirleyin. | Farklı kişilerin aynı ada sahip olabileceğini hesaba katın. |
| 2. Yanıtın tamamını okuyun | meta.request_id değerini saklayın; data[] içindeki her öğeyi id veya index ile eşleştirin. | HTTP 200 yanıtında başarılı tahminler ve öğe hataları birlikte bulunabilir. |
| 3. Tamamlanan sonuçları saklayın | identified ve unknown sonuçlarını JSON null değerleri ve kanıt alanlarıyla birlikte koruyun. | unknown, tamamlanmış ve ücretlendirilen bir sonuçtur; otomatik olarak yeniden denenecek bir hata değildir. |
| 4. Hataları ve kredileri kontrol edin | Yeni istekten önce her hatayı ve meta.usage.billing_status alanını inceleyin. | Ücretlendirme doğrulandığında yalnızca hata türü yeniden denemeye uygunsa başarısız öğeyi tekrar gönderin. Başarılı öğeler yeniden ücretlendirilir. |
| 5. Sonucu bilinmeyen işlemleri bekletin | Ücretlendirme unconfirmed ise veya ağ hatası nedeniyle sonuç bilinmiyorsa istek kimliğini saklayın. | Parçanın tamamını doğrudan tekrar göndermeyin; önce hata ve ücretlendirme rehberlerini izleyin. |
Her kişi için uygun tahmin modunu seçin
Bu çalıştırılabilir örnekte tam ad için yalnızca veri kümesi, e-posta için standart yapay zekâ yedeklemesi, kullanıcı adı için rumuz analizi kullanılır. Üç girdinin tamamında cinsiyet bulunacağı garanti edilmez. Kodun üzerindeki sekmelerden programlama dilini seçin ve çalıştırmadan önce GENDERAPI_API_KEY ortam değişkenini ayarlayın.
Tekli sorgulardan farklı olarak, forceToGenderize kullanılmayan toplu öğelerde yapay zekâ varsayılan olarak kapalıdır. Standart yedekleme için fallback değerini açıkça gönderin. off ve standart fallback, başarıyla tamamlanan öğe başına 1 kredidir. always veri kümesini atlar ve 2 kredidir. forceToGenderize ile veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa toplam 2 kredi düşülür. Başarıyla tamamlanan unknown sonuçları da ücretlendirilir. forceToGenderize seçeneğini off veya always ile birlikte kullanmayın.
Programlama dilinizi seçin. API anahtarınızı ayarlayın, ardından örneği sunucunuzda çalıştırın.
Yeniden denemeler dahil her tahmin isteği yeni ve ücretlendirilebilir bir işlemdir. Örnekler otomatik yeniden deneme yapmaz. Yeni istekten önce ücretlendirme durumunu kontrol edin.
Çalıştırmadan önce: erişim ve hata yönetimi
Örnekleri sunucunuzda çalıştırın. İşlem ortamındaki GENDERAPI_API_KEY değişkenini mevcut anahtarınıza ayarlayın. Tanınmayan anahtar IP denemesine yönlenebildiğinden meta.access.mode değerinin api_key olduğunu doğrulayın.
HTTP 4xx ve 5xx JSON yanıtlarında hata gövdesi korunur ve program sıfırdan farklı çıkış koduyla sonlanır. Yeniden denemeden önce code, action ve meta.usage.billing_status alanlarını kontrol edin. HTTP 200 toplu yanıtlarda her öğenin data veya error alanını da inceleyin.
Hata ve yeniden deneme rehberi →POSIX kabuğunda cURL 7.76+. Terminalinizde çalıştırın. Çalıştırma ortamı dokümantasyonu
Node.js 22+; yerleşik fetch. example.mjs olarak kaydedin ve node example.mjs çalıştırın. Çalıştırma ortamı dokümantasyonu
Python 3.10+; standart kütüphane. example.py olarak kaydedin ve python3 example.py çalıştırın. Çalıştırma ortamı dokümantasyonu
cURL uzantılı PHP 8+. example.php olarak kaydedin ve php example.php çalıştırın. Çalıştırma ortamı dokümantasyonu
Java 17+; standart HTTP istemcisi. GenderApiExample.java olarak kaydedin ve java GenderApiExample.java çalıştırın. Çalıştırma ortamı dokümantasyonu
.NET 8+ konsol uygulaması. Konsol projesinde Program.cs olarak kullanın, ardından dotnet run çalıştırın. Çalıştırma ortamı dokümantasyonu
Go 1.22+; standart kütüphane. main.go olarak kaydedin ve go run main.go çalıştırın. Çalıştırma ortamı dokümantasyonu