Felo API PlatformFelo API Platform

गाइड

त्रुटियां, सीमाएं और पुनः प्रयास

त्रुटि प्रतिक्रियाएं और रेट-लिमिट हेडर पढ़ें, सुरक्षित रूप से फिर कोशिश करें और आम गड़बड़ियां पहचानें।

हर Felo API स्थिर error code और request ID के साथ JSON error body लौटाता है। पहले HTTP स्टेटस पढ़ें, फिर code, फिर message।

Error envelope

वर्तमान production प्रतिक्रियाएं HTTP स्टेटस को status के रूप में उपयोग करती हैं:

{
  "status": 401,
  "code": "UNAUTHORIZED",
  "message": "Invalid API Key",
  "request_id": "202610221444486982113280416060637185"
}
फ़ील्डअर्थ
statusHTTP स्टेटस कोड, body में दोहराया गया
codeमशीन-पठनीय error code
messageमानव-पठनीय व्याख्या
request_idइस अनुरोध का अपारदर्शी पहचानकर्ता; इसे सहायता अनुरोधों में शामिल करें

कुछ पुराने endpoint उदाहरण status: "error" और अलग code स्ट्रिंग उपयोग करते हैं। HTTP स्टेटस और code के आधार पर शाखा बनाएं, message के सटीक शब्दों के आधार पर नहीं।

सामान्य कोड

HTTPकोडइसका अर्थक्या करें
400endpoint-विशिष्ट validation codeकोई पैरामीटर गुम या अमान्य हैअनुरोध ठीक करें; बिना बदलाव दोबारा प्रयास न करें
401UNAUTHORIZEDAPI key गुम, अमान्य, समाप्त या रद्दAuthorization: Bearer $FELO_API_KEY भेजें; रद्द होने पर key बदलें
402INSUFFICIENT_CREDITSपर्याप्त सेवा क्रेडिट नहींConsole Billing में टॉप अप करें, फिर दोबारा प्रयास करें
404endpoint-विशिष्टअज्ञात मॉडल, कार्य या रूटमॉडल ID या task ID और endpoint पथ जांचें
429RATE_LIMITEDदर सीमा पार हो गईRetry-After की प्रतीक्षा करें, फिर दोबारा प्रयास करें
5xxCHAT_FAILED, *_FAILED, SERVICE_UNAVAILABLEupstream या सेवा विफलताbackoff के साथ दोबारा प्रयास करें; बने रहने पर सहायता से संपर्क करें

Endpoint संदर्भ उस endpoint के विशिष्ट कोड सूचीबद्ध करते हैं। Chat API त्रुटियों या जिस endpoint को आप कॉल कर रहे हैं उसके संदर्भ से शुरू करें।

मॉडल जनरेशन endpoint

POST /api/v1/images/generations और POST /api/v1/videos/generations ऊपर के envelope के बजाय OpenAI envelope में endpoint-स्तरीय त्रुटियां लौटाते हैं:

{
  "error": {
    "message": "Model kind does not match this generation endpoint",
    "type": "invalid_request_error",
    "param": null,
    "code": "model_kind_mismatch"
  }
}

request ID body में नहीं, X-Request-Id प्रतिक्रिया हेडर में होता है। अस्वीकृत अनुरोध कार्य नहीं बनाता। एक बार कार्य बन जाने के बाद, अधिकतर विफलताएं HTTP त्रुटि के बजाय 200 प्रतिक्रिया में टर्मिनल कार्य स्थिति के रूप में आती हैं: failed या interrupted के लिए status जांचें, फिर error.message पढ़ें। Image Generation और Async Tasks देखें।

Request ID

Felo error body में request_id शामिल होता है। इसे endpoint, HTTP स्टेटस, error code, मॉडल ID और task ID के साथ लॉग करें। पूरी API key कभी लॉग न करें।

Model API वैकल्पिक X-Request-Id अनुरोध हेडर भी स्वीकार करता है। जब आप इसे भेजते हैं, तो निदान के लिए यह वापस echo होता है, जिससे आप अपने लॉग को किसी अनुरोध से जोड़ सकते हैं। अगर आप इसे नहीं भेजते, तो लौटाया गया request_id उपयोग करें।

दर सीमाएं

/v2/chat एकमात्र Felo endpoint है जिसकी दस्तावेज़ित लागू दर सीमाएं हैं:

  • प्रति API key, 1 मिनट की विंडो।
  • प्रति उपयोगकर्ता, 1 मिनट की विंडो।
  • प्रति उपयोगकर्ता, 1 घंटे की विंडो।

जिन उपयोगकर्ताओं के पास प्रभावी सशुल्क Felo सदस्यता है, जिसमें enterprise सदस्यताएं शामिल हैं, वे मुक्त हैं और उन्हें कोई X-RateLimit-* हेडर नहीं मिलता। अगर सदस्यता स्थिति सत्यापित नहीं हो सकती, तो सीमाएं अब भी लागू होती हैं।

हेडरअर्थ
X-RateLimit-Limitवर्तमान में लागू सबसे सख्त आयाम की सीमा
X-RateLimit-Remainingतीनों आयामों में न्यूनतम शेष कोटा
X-RateLimit-Resetवर्तमान विंडो के रीसेट होने का Unix टाइमस्टैम्प सेकंड में
Retry-After429 पर, अनुशंसित देरी सेकंड में

अन्य /v2/** endpoint पर वर्तमान में कोई लागू दर सीमा नहीं है। Model API अनुरोध अब भी upstream प्रदाता द्वारा सीमित हो सकते हैं, जो 429 के रूप में दिख सकता है।

संख्यात्मक सीमाएं हार्डकोड न करें। हर प्रतिक्रिया पर हेडर पढ़ें।

पुनः प्रयास नीति

स्थितिदोबारा प्रयास?
400, 401, 402, 404नहीं। पहले अनुरोध, key या बैलेंस ठीक करें।
429हां, Retry-After या X-RateLimit-Reset के बाद।
5xx, timeouts, कनेक्शन रीसेटहां, exponential backoff और jitter के साथ।
प्रतिक्रिया के बीच स्ट्रीमिंग कनेक्शन टूटनातभी दोबारा प्रयास करें जब आपका एप्लिकेशन डुप्लिकेट जनरेशन सहन कर सके।

अनुशंसित लूप:

  1. केवल idempotent या दोहराने के लिए सुरक्षित अनुरोध दोबारा प्रयास करें।
  2. exponential backoff का उपयोग करें: लगभग 1 सेकंड से शुरू करें, दोगुना करें, 30 सेकंड पर सीमित करें।
  3. यादृच्छिक jitter जोड़ें ताकि क्लाइंट एक साथ दोबारा प्रयास न करें।
  4. थोड़े से प्रयासों के बाद रुकें और त्रुटि दिखाएं।
  5. 429 पर, अपनी अनुसूची के बजाय Retry-After का सम्मान करें।

डिबगिंग क्रम

  1. जांचें कि key मौजूद है और रद्द नहीं हुई है।
  2. प्रमाणीकरण की पुष्टि के लिए उसी key से GET /api/v1/models कॉल करें।
  3. लक्ष्य endpoint पर सबसे छोटा मान्य अनुरोध भेजें।
  4. स्ट्रीमिंग, tools या बड़े इनपुट एक-एक करके जोड़ें।
  5. असिंक्रोनस काम के लिए, दोबारा सबमिट करने से पहले कार्य की स्थिति जांचें।

संबंधित