Hatalar ve HTTP durum kodları
Uygulama hataları application/problem+json (RFC 9457) kullanır. Kararlarınızı açıklama metni detail yerine sabit code ve action alanlarına dayandırın. Doğrulama hataları errors içinde JSON Pointer konumları içerir. Desteğe request_id iletin. Proxy veya aktarım hatalarında gövde farklı olabileceğinden JSON ayrıştırmadan önce Content-Type kontrol edin.
Aşağıdaki temsili 422 yanıtı, ücretlendirmeden önce reddedilen geçersiz e-posta sözdizimini gösterir. Genel hata kataloğu tüm kodları, durumları, açıklamaları ve önerilen eylemleri listeler.
| HTTP durumu | Genel anlamı | Sonraki adım |
|---|---|---|
| 400 / 413 / 415 | Bozuk JSON, fazla büyük gövde veya desteklenmeyen içerik türü. | İsteği düzeltin. |
| 401 / 403 | Erişim reddi, hesap kısıtlaması veya yetersiz kredi. | code alanını inceleyin; erişimi düzeltin, kredi yükleyin veya deneme yenilenmesini bekleyin. |
| 422 | Geçersiz girdi veya uyumsuz seçenekler. | errors içinde belirtilen alanları düzeltin. |
| 404 / 405 | Bilinmeyen yol veya desteklenmeyen HTTP yöntemi. | Uç nokta yolunu ve Allow yanıt başlığını kontrol edin. |
| 429 | Hız veya eşzamanlılık sınırı. | Yeni istekten önce Retry-After süresini bekleyin. |
| 500 | Beklenmeyen sunucu hatası. | request_id ile destek alın; yeniden denemeden önce ücretlendirmeyi kontrol edin. |
| 502 / 503 / 504 | Sağlayıcı, bağımlılık, ücretlendirme veya zaman aşımı hatası. | Yeniden denemeden önce code, action ve billing_status alanlarını inceleyin. |
{
"type": "urn:genderapi:problem:validation_error",
"title": "validation error",
"status": 422,
"detail": "A valid email address is required.",
"instance": "urn:uuid:11111111-1111-4111-8111-111111111111",
"code": "validation_error",
"request_id": "11111111-1111-4111-8111-111111111111",
"documentation": "https://api.genderapi.io/api/v2/errors",
"action": "correct_request",
"errors": [
{
"pointer": "/value",
"message": "Invalid email address."
}
],
"meta": {
"request_id": "11111111-1111-4111-8111-111111111111",
"duration_ms": 12,
"access": {
"mode": "ip_trial",
"reason": "api_key_missing"
},
"usage": {
"charged_credits": 0,
"remaining_credits": null,
"billing_status": "not_charged",
"resets_at": "2026-09-26T12:00:00.000Z",
"limit": 10,
"period_seconds": 86400
}
}
}Hata yanıtı alanları
| Alan | Tür | Null olabilir mi? | Örnek | Açıklama |
|---|---|---|---|---|
type | string | Hayır | "urn:genderapi:problem:validation_error" | Hata türünü tanımlayan URI. |
title | string | Hayır | "validation error" | İnsanların okuyabileceği kısa hata başlığı. |
status | integer | Hayır | 422 | HTTP durum kodu. |
detail | string | Hayır | "The request does not match the schema." | Bu hataya özel açıklama. |
instance | string | Hayır | "urn:uuid:550e8400-e29b-41d4-a716-446655440000" | Başarısız isteğin kimliği. |
code | string | Hayır | "validation_error" | Yazılımların kullanabileceği sabit hata kodu. |
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. |
documentation | string | Hayır | "https://api.genderapi.io/api/v2/errors" | Gönderilmişse hata kataloğunun bağlantısı. |
action | string | Hayır | "correct_request" | Hata kataloğunda tanımlandığında gönderilen önerilen çözüm adımı. |
errors | array<object> | Hayır | [{"pointer":"/value","message":"must NOT have fewer than 1 characters"}] | Varsa doğrulama sorunları. Her öğe pointer ve message içerir. |
errors[].pointer | string | Hayır | "/value" | Geçersiz girdiyi belirten JSON Pointer. |
errors[].message | string | Hayır | "must NOT have fewer than 1 characters" | Doğrulama sorununun açıklaması. |
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. |
Yeniden denemeler ve ücretlendirme
Aynı isteğin tekrar gönderilmesi dahil her tahmin yeni işlemdir. Her istekte normal kredi kuralları geçerlidir. Yinelenen istek koruması yoktur; bağlantı kaybı veya sonucu bilinmeyen işlem sonrasında otomatik yeniden denemeden kaçının.
429 yanıtında Retry-After süresini bekleyin. Tahmin hatalarında önce code, action ve meta.usage.billing_status alanlarını inceleyin. billing_reconciliation_required veya unconfirmed ücretlendirmede yeniden denemeden önce request_id ile destek alın.
Kısmen başarılı toplu sorgu HTTP 200 dönebilir. Her öğeyi kontrol edin; ücretlendirme doğrulandıktan sonra 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.
X-Request-ID ve meta.request_id, o HTTP denemesini tanımlar. Güncel bakiye için /usage kullanın. HEAD, ücretli tahmin başlatmaz. Tahmin ve hesap yanıtları önbelleğe alınamaz.
İstemciler yeni yanıt alanlarına tolerans göstermeli, bilgi bulunmadığında null değerlerini korumalıdır.
İstek sınırları
Bu üst sınırlarda her isteğin kabul edileceğini varsaymayın; HTTP 429 ve Retry-After durumlarını işleyin. Kapasite ortaktır ve değerler mevcut hizmet varsayılanlarıdır. Hız sınırı yanıtlarında X-RateLimit-Limit, X-RateLimit-Remaining ve X-RateLimit-Reset (Unix saniyesi) bulunur. Retry-After saniye cinsinden bekleme süresidir. Bu başlıklar krediyi değil istek sınırlarını gösterir. Ücretsiz /usage da hız sınırına dahildir.
| Sınır | Değer |
|---|---|
| JSON istek gövdesi | En fazla 64 KiB |
| Tahmin girdisi | 1–254 karakter |
| Toplu sorgu | API anahtarıyla 50; IP denemesiyle 10 öğe |
| Hesap başına hız | Dakikada 120 istek |
| IP başına hız | Dakikada 600 istek |
| Eşzamanlı işlemler | Hesap başına 2; hizmet genelinde 16 |