# Hata İşleme
## Birleşik Hata Yanıtı Formatı
Tüm API hataları, birleşik bir JSON biçimi döndürür:
```json
{
"code": 2010,
"status": "error",
"message": "You don't have enough credit to create this task",
"suggestion": "Please purchase more credit",
"request_id": "req_abc123"
}
```
| Alan | Tür | Açıklama |
| :-: | :-: | :-: |
| code | tamsayı | Hata kodu |
| status | dize | İstek sonucu; istek başarısız olduğunda `error` |
| message | dize | Hata açıklaması |
| suggestion | dize | Önerilen düzeltme |
| request_id | dize | Sorun giderme için benzersiz istek tanımlayıcı |
## HTTP Durum Kodları
| Durum Kodu | Anlamı | Açıklama |
| :-: | :-: | :-: |
| 200 | Başarı | İstek başarıyla işlendi |
| 400 | Geçersiz parametreler | Gerekli parametreler eksik veya hatalı biçimlendirilmiş |
| 401 | Kimliği doğrulanmamış | API Key eksik veya geçersiz |
| 403 | Yetersiz izinler | Kaynağa erişim izniniz yok veya kredileriniz yetersiz |
| 404 | Kaynak bulunamadı | İstenen görev veya kaynak mevcut değil |
| 429 | Çok fazla istek | Hız sınırı veya eşzamanlılık sınırı aşıldı. İstek sıklığınızı azaltın veya daha sonra tekrar deneyin |
| 500 | Servis hatası | Dahili sunucu hatası. Daha sonra tekrar deneyin |
## Hata Kodu Referansı
| Hata Kodu | Anlamı | Önerilen İşleme |
| :-: | :-: | :-: |
| 1000 | Geçersiz API Key | API Key'nin doğru mu yoksa silinmiş mi olduğunu kontrol edin |
| 1001 | Yetkisiz | İstek başlığının `Authorization` içerip içermediğini kontrol edin |
| 1007 | Hız sınırı aşıldı | İstek sıklığını azaltın ve üstel geri çekilmeyle yeniden deneme uygulayın |
| 2000 | Eşzamanlılık sınırı aşıldı | Yeni görev oluşturmadan önce aynı kategorideki bir görevin bitmesini bekleyin veya `Retry-After` yanıt başlığında belirtilen süre kadar bekleyin. Ayrıntılar için [Hız Sınırları](/tr/docs/rate-limits) sayfasına bakın |
| 2002 | Desteklenmeyen istek parametresi | İstek gövde alanı adlarının ve değerlerinin belgelerle eşleşip eşleşmediğini kontrol edin |
| 2003 | Boş giriş dosyası | Yüklenen dosyanın boş olmadığını ve geçerli bir format kullandığını doğrulayın |
| 2004 | Desteklenmeyen dosya türü | Dosya formatının desteklenen listede olup olmadığını kontrol edin |
| 2008 | İçerik politikası ihlali | Yasaklanmış kelime veya görsellerden kaçınmak için giriş içeriğini değiştirin |
| 2010 | Yetersiz kredi | Konsolda kredi yükleme |
| 2015 | Sürüm kullanımdan kaldırıldı | En son API sürümüne yükseltin |
| 2018 | Model çok karmaşık | Giriş modelinin karmaşıklığını veya poligon sayısını azaltın |
## Hata İşleme Örnekleri
### Python
```python
import time
import requests
def call_api_with_retry(url, headers, payload=None, max_retries=3):
for attempt in range(max_retries):
if payload:
response = requests.post(url, headers=headers, json=payload)
else:
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
if response.status_code == 429:
wait = 2 ** attempt
print(f"Rate limit triggered. Retrying in {wait} seconds...")
time.sleep(wait)
continue
error = response.json()
raise Exception(
f"API error [{error['code']}]: {error['message']} "
f"(suggestion: {error.get('suggestion', 'none')})"
)
raise Exception("Maximum retry attempts exhausted")
```
### JavaScript
```javascript
async function callApiWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.ok) {
return await response.json();
}
if (response.status === 429) {
const wait = 2 ** attempt * 1000;
console.log(`Rate limit triggered. Retrying in ${wait / 1000} seconds...`);
await new Promise(resolve => setTimeout(resolve, wait));
continue;
}
const error = await response.json();
throw new Error(
`API error [${error.code}]: ${error.message} (suggestion: ${error.suggestion || "none"})`
);
}
throw new Error("Maximum retry attempts exhausted");
}
```
## Strateji Önerilerini Yeniden Deneyin
429 hız sınırı ve 500 hizmet hatası gibi yeniden denenebilir hatalar için üstel bir geri çekilme stratejisi kullanın:
1. İlk yeniden deneme: 1 saniye bekleyin
2. İkinci yeniden deneme: 2 saniye bekleyin
3. Üçüncü yeniden deneme: 4 saniye bekleyin
4. Maksimum yeniden deneme sayısını 5 veya daha az tutun
400, 401 ve 403 gibi yeniden denenemeyen hatalar için doğrudan bir istisna oluşturun ve temel sorunu düzeltin.
Hata İşleme
Birleşik Hata Yanıtı Formatı
Tüm API hataları, birleşik bir JSON biçimi döndürür:
{
"code": 2010,
"status": "error",
"message": "You don't have enough credit to create this task",
"suggestion": "Please purchase more credit",
"request_id": "req_abc123"
}
| Alan |
Tür |
Açıklama |
| code |
tamsayı |
Hata kodu |
| status |
dize |
İstek sonucu; istek başarısız olduğunda error |
| message |
dize |
Hata açıklaması |
| suggestion |
dize |
Önerilen düzeltme |
| request_id |
dize |
Sorun giderme için benzersiz istek tanımlayıcı |
HTTP Durum Kodları
| Durum Kodu |
Anlamı |
Açıklama |
| 200 |
Başarı |
İstek başarıyla işlendi |
| 400 |
Geçersiz parametreler |
Gerekli parametreler eksik veya hatalı biçimlendirilmiş |
| 401 |
Kimliği doğrulanmamış |
API Key eksik veya geçersiz |
| 403 |
Yetersiz izinler |
Kaynağa erişim izniniz yok veya kredileriniz yetersiz |
| 404 |
Kaynak bulunamadı |
İstenen görev veya kaynak mevcut değil |
| 429 |
Çok fazla istek |
Hız sınırı veya eşzamanlılık sınırı aşıldı. İstek sıklığınızı azaltın veya daha sonra tekrar deneyin |
| 500 |
Servis hatası |
Dahili sunucu hatası. Daha sonra tekrar deneyin |
Hata Kodu Referansı
| Hata Kodu |
Anlamı |
Önerilen İşleme |
| 1000 |
Geçersiz API Key |
API Key’nin doğru mu yoksa silinmiş mi olduğunu kontrol edin |
| 1001 |
Yetkisiz |
İstek başlığının Authorization içerip içermediğini kontrol edin |
| 1007 |
Hız sınırı aşıldı |
İstek sıklığını azaltın ve üstel geri çekilmeyle yeniden deneme uygulayın |
| 2000 |
Eşzamanlılık sınırı aşıldı |
Yeni görev oluşturmadan önce aynı kategorideki bir görevin bitmesini bekleyin veya Retry-After yanıt başlığında belirtilen süre kadar bekleyin. Ayrıntılar için Hız Sınırları sayfasına bakın |
| 2002 |
Desteklenmeyen istek parametresi |
İstek gövde alanı adlarının ve değerlerinin belgelerle eşleşip eşleşmediğini kontrol edin |
| 2003 |
Boş giriş dosyası |
Yüklenen dosyanın boş olmadığını ve geçerli bir format kullandığını doğrulayın |
| 2004 |
Desteklenmeyen dosya türü |
Dosya formatının desteklenen listede olup olmadığını kontrol edin |
| 2008 |
İçerik politikası ihlali |
Yasaklanmış kelime veya görsellerden kaçınmak için giriş içeriğini değiştirin |
| 2010 |
Yetersiz kredi |
Konsolda kredi yükleme |
| 2015 |
Sürüm kullanımdan kaldırıldı |
En son API sürümüne yükseltin |
| 2018 |
Model çok karmaşık |
Giriş modelinin karmaşıklığını veya poligon sayısını azaltın |
Hata İşleme Örnekleri
import time
import requests
def call_api_with_retry(url, headers, payload=None, max_retries=3):
for attempt in range(max_retries):
if payload:
response = requests.post(url, headers=headers, json=payload)
else:
response = requests.get(url, headers=headers)
if response.status_code == 200:
return response.json()
if response.status_code == 429:
wait = 2 ** attempt
print(f"Rate limit triggered. Retrying in {wait} seconds...")
time.sleep(wait)
continue
error = response.json()
raise Exception(
f"API error [{error['code']}]: {error['message']} "
f"(suggestion: {error.get('suggestion', 'none')})"
)
raise Exception("Maximum retry attempts exhausted")
async function callApiWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.ok) {
return await response.json();
}
if (response.status === 429) {
const wait = 2 ** attempt * 1000;
console.log(`Rate limit triggered. Retrying in ${wait / 1000} seconds...`);
await new Promise(resolve => setTimeout(resolve, wait));
continue;
}
const error = await response.json();
throw new Error(
`API error [${error.code}]: ${error.message} (suggestion: ${error.suggestion || "none"})`
);
}
throw new Error("Maximum retry attempts exhausted");
}
Strateji Önerilerini Yeniden Deneyin
429 hız sınırı ve 500 hizmet hatası gibi yeniden denenebilir hatalar için üstel bir geri çekilme stratejisi kullanın:
- İlk yeniden deneme: 1 saniye bekleyin
- İkinci yeniden deneme: 2 saniye bekleyin
- Üçüncü yeniden deneme: 4 saniye bekleyin
- Maksimum yeniden deneme sayısını 5 veya daha az tutun
400, 401 ve 403 gibi yeniden denenemeyen hatalar için doğrudan bir istisna oluşturun ve temel sorunu düzeltin.