Kılavuzlar
Hatalar, sınırlar ve yeniden deneme
Hata yanıtlarını ve hız sınırı başlıklarını okuyun, güvenle yeniden deneyin ve yaygın sorunları teşhis edin.
Her Felo API, istikrarlı bir hata kodu ve bir istek kimliği içeren bir JSON hata gövdesi döndürür. Önce HTTP durumunu, ardından kodu, sonra mesajı okuyun.
Hata zarfı
Mevcut üretim yanıtları HTTP durumunu status olarak kullanır:
{
"status": 401,
"code": "UNAUTHORIZED",
"message": "Invalid API Key",
"request_id": "202610221444486982113280416060637185"
}| Alan | Anlamı |
|---|---|
status | HTTP durum kodu, gövdede yinelenir |
code | Makine tarafından okunabilir hata kodu |
message | İnsan tarafından okunabilir açıklama |
request_id | Bu istek için opak tanımlayıcı; destek taleplerinize ekleyin |
Bazı eski endpoint örnekleri status: "error" ve farklı bir kod dizesi kullanır. HTTP durumuna ve code alanına göre dallanın, message metninin tam ifadesine göre değil.
Yaygın kodlar
| HTTP | Kod | Ne anlama gelir | Ne yapmalı |
|---|---|---|---|
| 400 | Endpoint'e özgü doğrulama kodu | Bir parametre eksik veya geçersiz | İsteği düzeltin; değiştirmeden yeniden denemeyin |
| 401 | UNAUTHORIZED | API anahtarı eksik, geçersiz, süresi dolmuş veya iptal edilmiş | Authorization: Bearer $FELO_API_KEY gönderin; iptal edildiyse anahtarı döndürün |
| 402 | INSUFFICIENT_CREDITS | Yeterli hizmet kredisi yok | Console Billing'de bakiye yükleyin, ardından yeniden deneyin |
| 404 | Endpoint'e özgü | Bilinmeyen model, görev veya rota | Model kimliğini veya görev kimliğini ve endpoint yolunu kontrol edin |
| 429 | RATE_LIMITED | Bir hız sınırı aşıldı | Retry-After süresini bekleyin, ardından yeniden deneyin |
| 5xx | CHAT_FAILED, *_FAILED, SERVICE_UNAVAILABLE | Upstream veya hizmet arızası | Geri çekilmeyle yeniden deneyin; devam ederse destekle iletişime geçin |
Endpoint referansları o endpoint'e özgü kodları listeler. Chat API hataları veya çağırdığınız endpoint'in referansıyla başlayın.
Model oluşturma endpoint'leri
POST /api/v1/images/generations ve POST /api/v1/videos/generations, endpoint düzeyindeki hataları yukarıdaki zarf yerine OpenAI zarfı içinde döndürür:
{
"error": {
"message": "Model kind does not match this generation endpoint",
"type": "invalid_request_error",
"param": null,
"code": "model_kind_mismatch"
}
}İstek kimliği gövdede değil, X-Request-Id yanıt başlığındadır. Reddedilen bir istek görev oluşturmaz. Bir görev oluştuktan sonra çoğu arıza, HTTP hatası yerine 200 yanıtı içinde nihai bir görev durumu olarak gelir: status alanında failed veya interrupted olup olmadığını kontrol edin, ardından error.message alanını okuyun. Bkz. Görsel Oluşturma ve Eşzamansız Görevler.
İstek kimlikleri
Felo hata gövdeleri request_id içerir. Bunu endpoint, HTTP durumu, hata kodu, model kimliği ve görev kimliğiyle birlikte günlüğe kaydedin. Tam API anahtarını asla günlüğe kaydetmeyin.
Model API ayrıca isteğe bağlı bir X-Request-Id istek başlığı kabul eder. Bir tane gönderdiğinizde, tanılama amacıyla geri yansıtılır; bu da kendi günlüklerinizi bir istekle ilişkilendirmenizi sağlar. Göndermezseniz döndürülen request_id değerini kullanın.
Hız sınırları
/v2/chat, belgelenmiş zorunlu hız sınırlarına sahip tek Felo endpoint'idir:
- API anahtarı başına, 1 dakikalık pencere.
- Kullanıcı başına, 1 dakikalık pencere.
- Kullanıcı başına, 1 saatlik pencere.
Kurumsal abonelikler dahil geçerli bir ücretli Felo aboneliği olan kullanıcılar muaftır ve X-RateLimit-* başlıkları almaz. Abonelik durumu doğrulanamazsa sınırlar yine de geçerlidir.
| Başlık | Anlamı |
|---|---|
X-RateLimit-Limit | Şu anda yürürlükte olan en dar boyutun sınırı |
X-RateLimit-Remaining | Üç boyut arasında kalan minimum kota |
X-RateLimit-Reset | Geçerli pencerenin sıfırlandığı Unix zaman damgası (saniye) |
Retry-After | 429 durumunda önerilen gecikme (saniye) |
Diğer /v2/** endpoint'lerinde şu anda zorunlu bir hız sınırı yoktur. Model API istekleri yine de upstream sağlayıcı tarafından sınırlanabilir ve bu 429 olarak ortaya çıkabilir.
Sayısal sınırları sabit kodlamayın. Her yanıttaki başlıkları okuyun.
Yeniden deneme ilkesi
| Durum | Yeniden denemeli mi? |
|---|---|
| 400, 401, 402, 404 | Hayır. Önce isteği, anahtarı veya bakiyeyi düzeltin. |
| 429 | Evet, Retry-After veya X-RateLimit-Reset sonrasında. |
| 5xx, zaman aşımları, bağlantı sıfırlamaları | Evet, üstel geri çekilme ve titreşimle. |
| Akış bağlantısı yanıt ortasında düştü | Yalnızca uygulamanız yinelenen bir oluşturmaya tolerans gösterebiliyorsa yeniden deneyin. |
Önerilen döngü:
- Yalnızca idempotent veya yinelenmesi güvenli istekleri yeniden deneyin.
- Üstel geri çekilme kullanın: yaklaşık 1 saniyeyle başlayın, iki katına çıkarın, 30 saniyede sınırlayın.
- İstemcilerin aynı anda yeniden denememesi için rastgele titreşim ekleyin.
- Az sayıda denemeden sonra durun ve hatayı ortaya koyun.
- 429 durumunda kendi programınız yerine
Retry-Aftersüresine uyun.
Hata ayıklama sırası
- Anahtarın mevcut ve iptal edilmemiş olduğunu kontrol edin.
- Kimlik doğrulamayı doğrulamak için aynı anahtarla
GET /api/v1/modelsçağırın. - Hedef endpoint'e gönderilebilecek en küçük geçerli isteği gönderin.
- Akış, araçlar veya büyük girdileri tek tek ekleyin.
- Eşzamansız işler için yeniden göndermeden önce görev durumunu kontrol edin.