गाइड
त्रुटियां, सीमाएं और पुनः प्रयास
त्रुटि प्रतिक्रियाएं और रेट-लिमिट हेडर पढ़ें, सुरक्षित रूप से फिर कोशिश करें और आम गड़बड़ियां पहचानें।
हर 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"
}| फ़ील्ड | अर्थ |
|---|---|
status | HTTP स्टेटस कोड, body में दोहराया गया |
code | मशीन-पठनीय error code |
message | मानव-पठनीय व्याख्या |
request_id | इस अनुरोध का अपारदर्शी पहचानकर्ता; इसे सहायता अनुरोधों में शामिल करें |
कुछ पुराने endpoint उदाहरण status: "error" और अलग code स्ट्रिंग उपयोग करते हैं। HTTP स्टेटस और code के आधार पर शाखा बनाएं, message के सटीक शब्दों के आधार पर नहीं।
सामान्य कोड
| HTTP | कोड | इसका अर्थ | क्या करें |
|---|---|---|---|
| 400 | endpoint-विशिष्ट validation code | कोई पैरामीटर गुम या अमान्य है | अनुरोध ठीक करें; बिना बदलाव दोबारा प्रयास न करें |
| 401 | UNAUTHORIZED | API key गुम, अमान्य, समाप्त या रद्द | Authorization: Bearer $FELO_API_KEY भेजें; रद्द होने पर key बदलें |
| 402 | INSUFFICIENT_CREDITS | पर्याप्त सेवा क्रेडिट नहीं | Console Billing में टॉप अप करें, फिर दोबारा प्रयास करें |
| 404 | endpoint-विशिष्ट | अज्ञात मॉडल, कार्य या रूट | मॉडल ID या task ID और endpoint पथ जांचें |
| 429 | RATE_LIMITED | दर सीमा पार हो गई | Retry-After की प्रतीक्षा करें, फिर दोबारा प्रयास करें |
| 5xx | CHAT_FAILED, *_FAILED, SERVICE_UNAVAILABLE | upstream या सेवा विफलता | 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-After | 429 पर, अनुशंसित देरी सेकंड में |
अन्य /v2/** endpoint पर वर्तमान में कोई लागू दर सीमा नहीं है। Model API अनुरोध अब भी upstream प्रदाता द्वारा सीमित हो सकते हैं, जो 429 के रूप में दिख सकता है।
संख्यात्मक सीमाएं हार्डकोड न करें। हर प्रतिक्रिया पर हेडर पढ़ें।
पुनः प्रयास नीति
| स्थिति | दोबारा प्रयास? |
|---|---|
| 400, 401, 402, 404 | नहीं। पहले अनुरोध, key या बैलेंस ठीक करें। |
| 429 | हां, Retry-After या X-RateLimit-Reset के बाद। |
| 5xx, timeouts, कनेक्शन रीसेट | हां, exponential backoff और jitter के साथ। |
| प्रतिक्रिया के बीच स्ट्रीमिंग कनेक्शन टूटना | तभी दोबारा प्रयास करें जब आपका एप्लिकेशन डुप्लिकेट जनरेशन सहन कर सके। |
अनुशंसित लूप:
- केवल idempotent या दोहराने के लिए सुरक्षित अनुरोध दोबारा प्रयास करें।
- exponential backoff का उपयोग करें: लगभग 1 सेकंड से शुरू करें, दोगुना करें, 30 सेकंड पर सीमित करें।
- यादृच्छिक jitter जोड़ें ताकि क्लाइंट एक साथ दोबारा प्रयास न करें।
- थोड़े से प्रयासों के बाद रुकें और त्रुटि दिखाएं।
- 429 पर, अपनी अनुसूची के बजाय
Retry-Afterका सम्मान करें।
डिबगिंग क्रम
- जांचें कि key मौजूद है और रद्द नहीं हुई है।
- प्रमाणीकरण की पुष्टि के लिए उसी key से
GET /api/v1/modelsकॉल करें। - लक्ष्य endpoint पर सबसे छोटा मान्य अनुरोध भेजें।
- स्ट्रीमिंग, tools या बड़े इनपुट एक-एक करके जोड़ें।
- असिंक्रोनस काम के लिए, दोबारा सबमिट करने से पहले कार्य की स्थिति जांचें।