GenderAPI V2 · Uygulama rehberi

JavaScript ve Node.js ile GenderAPI V2 entegrasyonu

Node.js fetch ile tekli ve karma toplu V2 sorguları gönderin. Bearer kimlik doğrulamayı, data/meta alanlarını ve hata durumlarını örneklerle uygulayın.

JavaScript / Node.jsNode.js 22+Sunucu tarafında HTTP

GenderAPI tarafından İnceleme:

Entegrasyonu Node.js sunucunuzda çalıştırın

Node.js 22 veya üzerini kullanın ve genderapi-v2.mjs dosyasını projenize indirin. ES modülü yerleşik fetch ve AbortSignal.timeout ile https://api.genderapi.io/api/v2/gender adresini Bearer API anahtarıyla çağırır; npm paketi gerekmez. .mjs uzantısı başka bir ES modülünden package.json değiştirmeden içe aktarmayı sağlar.

GENDERAPI_API_KEY değerini sunucu ortamında tanımlayın. YOUR_API_KEY çalışan bir anahtar değildir. Gerçek anahtarı sürüm kontrolüne, paylaşılan defterlere, React/Vue paketine veya tarayıcı koduna koymayın. Tarayıcı kendi kimlik doğrulaması olan sunucunuzu çağırmalı; GenderAPI isteğini sunucunuz göndermelidir. Dosyayı içe aktarmak veya açık demo seçeneği olmadan çalıştırmak istek göndermez.

Entegrasyonu Node.js sunucunuzda çalıştırın
node --version
export GENDERAPI_API_KEY="YOUR_API_KEY"

Yalnız veri kümesini kullanan ilk isteği gönderin

Aşağıdaki kodu indirdiğiniz modülün yanına single.mjs olarak kaydedip node single.mjs çalıştırın. type: name, value: Alice ve options.ai_mode: off gönderilir. Tahmini response.data, istek ve ücret bilgisini response.meta içinde okuyun.

Tamamlanan bu sorgu, gender null olsa da 1 kredi kullanır. Örnek isim belirli bir sonuç garantisi vermez. İsim, e-posta veya kullanıcı adı gönderebilirsiniz; ülke bağlamını yalnız ilgili bilgiye sahipseniz ekleyin.

Yardımcı dosya açık AI modu ve 24 karakterlik onaltılık API anahtarı ister. Bu, anahtarın biçimini doğrular; sistemde bulunduğunu kanıtlamaz. Başarılı yanıtta meta.access.mode değerinin api_key olduğu kontrol edilir. IP denemesi yanıtı erişim uyuşmazlığı olarak reddedilir; bu kontrol yanıt sonrasında yapıldığı için tüketilmiş deneme kredisini geri alamaz.

Yalnız veri kümesini kullanan ilk isteği gönderin
import { predict, GenderAPIError } from "./genderapi-v2.mjs";

try {
  const response = await predict({
    type: "name", value: "Alice", options: { ai_mode: "off" },
  });
  const result = response.data;
  console.log(result.result_status, result.gender);
  console.log(result.confidence, result.confidence_kind);
  console.log(response.meta.usage);
} catch (error) {
  if (!(error instanceof GenderAPIError)) throw error;
  // Do not log error.body: it can include the submitted value.
  console.error("Request failed:", error.code, error.requestId);
  process.exitCode = 1;
}

Tahmini dayandığı bilgilerle birlikte değerlendirin

API’nin çıkardığı ilişki, kişinin kendi belirttiği cinsiyet değildir. Özgün girdiyi, yanıttaki kanıtları ve kişinin verdiği bilgileri ayrı saklayın. Tahmin bulunamaması geçerli bir sonuçtur; uygulamanızda bunu zorunlu bir cinsiyet kategorisine dönüştürmeyin.

AlanNasıl kullanılmalı?
data.gender / data.result_statusmale veya female değerini yalnızca identified sonucunda kullanın. unknown sonucunda gerçek JSON null değerini koruyun.
data.name / data.matchDönen adı ve seçilen adayı inceleyin. Alt metin eşleşmesi, girdinin o ön ada sahip bir kişiye ait olduğunu kanıtlamaz.
data.confidence / data.confidence_kindGüven skoru 0–1 aralığında veya null olur. observed_frequency kayıtlı sayımlardan, model_reported yapay zekânın bildirdiği skordan gelir. Eşikleri her tür için ayrı değerlendirin.
data.source / data.sample_countdataset, ai ve none kaynaklarını ayırın. Yapay zekâ sonucunda kayıtlı örnek sayısı yoktur. Örnek sayısı, ölçülmüş doğruluk oranı değildir.
meta.access.modeHesap entegrasyonunda api_key değerini doğrulayın. Anahtar eksik veya tanınmıyorsa ortak IP denemesi kullanılabilir.
meta.usagecharged_credits ve billing_status alanlarını okuyun. Başarıyla tamamlanan unknown sonucu ücretlidir. Yanıtın ulaşmaması, işlemin ücretsiz olduğunu göstermez.

Karma toplu sorgularda satır kimliğini koruyun

Karma toplu sorgular POST https://api.genderapi.io/api/v2/gender/batch adresine gönderilir. Hesap anahtarıyla en fazla 50, IP denemesinde 10 öğe kabul edilir. Bu örnekler hesap anahtarı gerektirir. Her öğeye kararlı ve benzersiz bir id, açık bir AI modu ve gerekiyorsa country ekleyin; isim, e-posta ve kullanıcı adlarını aynı grupta kullanabilirsiniz.

data içindeki her öğeyi ve meta.summary özetini inceleyin. HTTP 200 yanıtında öğe hataları bulunabilir; tüm öğeler başarısızsa sonuçları içeren üst düzey Problem yanıtı dönebilir. Başarıyla tamamlanan unknown sonuçlar succeeded sayılır. id ve index, sonucu doğru kaynak satıra bağlamanızı sağlar.

Daha büyük işleri en fazla 50 öğelik gruplara ayırıp başlangıçta sırayla gönderin. Sonraki gruba geçmeden yanıtı ve kullanım bilgisini kaydedin. Bağlantı, hesap veya teyit edilmemiş ücret sorunu varsa durup mevcut grubun durumunu netleştirin. Eşzamanlılığı hesap sınırlarını inceleyerek artırın; öğe sınırı bir hız garantisi değildir.

Karma toplu sorgularda satır kimliğini koruyun
import { predictBatch, GenderAPIError } from "./genderapi-v2.mjs";

const items = [
  { id: "row-1", type: "name", value: "Alice", options: { ai_mode: "off" } },
  { id: "row-2", type: "email", value: "alex@example.com", options: { ai_mode: "off" } },
  { id: "row-3", type: "username", value: "sample_handle", options: { ai_mode: "off" } },
];
try {
  const response = await predictBatch(items);
  for (const item of response.data) {
    if (item.error) {
      console.log(item.id, "failed", item.error.code);
    } else {
      console.log(item.id, item.data.result_status, item.data.gender);
    }
  }
  console.log(response.meta.summary, response.meta.usage);
  if (response.meta.summary.failed > 0) process.exitCode = 2;
} catch (error) {
  if (!(error instanceof GenderAPIError)) throw error;
  // error.body can retain an all-failed batch and billing details.
  console.error("Batch needs review:", error.code, error.requestId);
  process.exitCode = 1;
}

Yapay zekânın ne zaman kullanılacağını seçin

forceToGenderize; isim, e-posta ve kullanıcı adı girdilerinde isteğe bağlıdır. Açıkken ai_mode alanını göndermeyin veya fallback kullanın. off ve always ile birlikte kullanılması 422 hatası verir. İsteğe başlamak için pozitif bakiye yeterlidir; son ücret bakiyeyi sıfırın altına düşürebilir.

Rumuz analizinde name: null iken cinsiyet tahmini dönebilir. Sonuç unknown da olabilir. Standart yedekleme veya rumuz analizi, doğru ya da dolu bir sonuç garantisi vermez.

JavaScript yardımcısı options.ai_mode alanını her zaman ister. Takma ad için forceToGenderize: true ile options: { ai_mode: 'fallback' } gönderin.

İstek seçeneğiDavranışTamamlanan sorgunun maliyeti
options.ai_mode: offYalnızca veri kümesini sorgular.unknown dahil 1 kredi
options.ai_mode: fallbackÖnce veri kümesini, cinsiyet tahmini bulunamazsa standart yapay zekâyı kullanır. Tekli sorguların varsayılanıdır.Yapay zekâ yedeklemesi dahil toplam 1 kredi
options.ai_mode: alwaysDoğrudan yapay zekâya sorar.2 kredi
forceToGenderize: trueÖnce veri kümesine bakar; tahmin bulunamazsa gerçek ön ad içermeyen kişisel rumuzların anlamını da yapay zekâyla yorumlayabilir.Veri kümesinde tahmin bulunursa 1, yapay zekâ kullanılırsa toplam 2 kredi

Hatalardan sonra nasıl ilerleyeceğinize karar verin

Örnekler her işlemi bir kez gönderir; otomatik yeniden deneme yapmaz. Yeni gönderim yeni bir ücretli işlemdir. Zaman aşımı veya bağlantı hatası, istemcinin tam yanıt alamadığını gösterir; sunucunun durduğunu veya kredi kesilmediğini kanıtlamaz.

request_id ve ücret durumunu iş kaydınızla saklayın. Hata nesnesi kontrollü inceleme için yanıtı korur; özgün girdiyi içerebileceği için tüm nesneyi, yanıtı veya API anahtarını rutin günlüklere yazmayın.

DurumUygulamanın kararı
Başarılı unknownnull, reason ve usage korunur. Tamamlanmış ücretli sonuçtur; otomatik tekrar edilecek hata değildir.
422Problem Details alanlarında belirtilen girdiyi düzelttikten sonra yeni istek gönderin.
401 / 403Hesap erişimini ve kredileri kontrol edin. Aynı isteği tekrarlamak temel sorunu çözmez.
429Varsa Retry-After değerine uyun. Hata ve ücret durumunu doğrulayıp bilinçli bir sonraki deneme planlayın.
Ağ hatası, zaman aşımı veya okunamayan yanıtSonucun ve ücretin teyit edilmediğini kaydedin. Yeniden göndermeden önce durumu netleştirin; istemci tamamlanmış sunucu işlemini iptal edemez.
billing_status: unconfirmedcharged_credits ve remaining_credits null olabilir. request_id ile desteğe başvurun; null yerine sıfır yazmayın.
Bazı toplu öğeler başarısızTamamlanan öğeleri önce kaydedin. Hatalı öğelerin ücretini inceleyin; bütün grubu değil, yalnız uygun hataları yeniden gönderin.

Zaman aşımı ve bağlantı davranışını bilin

Varsayılan süre sınırı AbortSignal.timeout ile 10.000 milisaniyedir ve yanıt gövdesinin okunmasını kapsar. İstemciyi durdurmak sunucunun işlemi veya ücretlendirmeyi durdurduğunu kanıtlamaz. Modül yönlendirmeleri kapatır, HTTP hatalarını okunamayan yanıtlardan ayırır ve otomatik tekrar yapmaz.

Yerel testler başarı, unknown, kısmi toplu hata, erişim modu ve bağlantı hatalarını yapay yanıtlarla sınar. Canlı tahmin veya kredi işlemi yapmaz; erişilebilirlik, doğruluk veya üretim gecikmesi ölçümü değildir. Aşağıdaki her açık demo komutu ayrı ücretli sorgu gönderir.

Zaman aşımı ve bağlantı davranışını bilin
node genderapi-v2.mjs --run-single
# Run separately to submit another billable sample batch:
node genderapi-v2.mjs --run-batch

Sık sorulan sorular

Bu kodu tarayıcıda çalıştırabilir miyim?

API anahtarını korumak için kodu sunucuda çalıştırın. Tarayıcı paketi anahtarı kullanıcıya açar. Tarayıcı kendi kimlik doğrulaması olan arka ucunuzu çağırmalı; GenderAPI isteğini arka uç göndermelidir.

Bu örnek resmî bir SDK paketi mi?

Bu rehber indirilebilir bir HTTP yardımcı dosyası kullanır; ayrı yayımlanmış bir pip veya npm SDK paketi değildir. Dosyayı uygulamanızın yanında tutun ve kullanımınıza göre inceleyip uyarlayın.

gender null dönerse kredi kesilir mi?

Evet. Başarıyla tamamlanan unknown sonucu da ücretlidir. Bu rehberdeki ai_mode: off örneği 1 kredi kullanır. Sonucu ve meta.usage alanını saklayın; bilinmeyen sonucu otomatik tekrar etmeyin.

Eski V1 istemci kodunu doğrudan kullanabilir miyim?

Bu örnekler V2 type/value istek alanlarını ve data/meta yanıtını kullanır. V1 paketi veya bağlayıcısı aynı sözleşmeyi kullanmak zorunda değildir. Uç noktayı, kimlik doğrulamayı, alanları ve ücret kurallarını doğrulamadan yalnız URL’yi değiştirmeyin.

Başvuru belgeleri

API başvuru belgeleri istek ve yanıt yapısını tanımlar. Çalışma ortamının belgeleri, örneklerde kullanılan HTTP araçlarını açıklar.