⚡ नया — Kimi K3 अब लाइव: अपनी Moonshot key जोड़ें →
दस्तावेज़

त्रुटियाँ

हर एंडपॉइंट पर हर त्रुटि, एक ही JSON एनवेलप का उपयोग करती है:

{
  "error": {
    "message": "Human-readable explanation",
    "type": "rate_limit_error",
    "code": "daily_limit_reached"
  }
}

code पर ब्रांच करें (स्थिर, मशीन-ओरिएंटेड); message को मनुष्यों को दिखाएँ। 429 प्रतिक्रियाओं में एक retry-after हेडर (सेकंड में) भी होता है।

सभी एरर कोड

इन्फेरेंस (chat & embeddings)

HTTPCodeकबक्या करें
401invalid_api_keyगुम, खराब, रद्द की गई या समाप्त हो चुकी key।Authorization: Bearer br-… हेडर जाँचें; dashboard पर एक नई key बनाएँ।
404model_not_foundModel id कैटलॉग में नहीं है और BYOK-डिस्कवर्ड मॉडल भी नहीं है।GET /v1/models पर वैध ids की सूची देखें; BYOK मॉडल के लिए provider/model-id फॉर्म का उपयोग करें।
400no_routeमॉडल मौजूद है लेकिन कोई रूट आपकी बाधाओं को पूरा नहीं करता (आमतौर पर data_policy: india_only, या एक पिन किया गया provider जो डाउन/अनकॉन्फ़िगर्ड है)।बाधा को ढीला करें, कैटलॉग से एक इंडिया-रेज़िडेंट मॉडल चुनें, या आउटेज का इंतज़ार करें (GET /health)।
402insufficient_creditsस्टैंडर्ड key, बैलेंस शून्य या नकारात्मक है।टॉप अप करें। ऐसा करने तक दोबारा प्रयास संभव नहीं।
429rate_limit_exceededप्रति-मिनट की सीमा पार हो गई (key का rpm_limit या 120/min गेटवे कैप)।retry-after के अनुसार पीछे हटें; यदि स्वयं-लगाई गई हो तो key की सीमा बढ़ाएँ।
429daily_limit_reachedKey की दैनिक अनुरोध कैप खर्च हो गई।मध्यरात्रि IST पर रीसेट होता है। कैप बढ़ाएँ, या ट्रायल key से अपग्रेड करें।
429budget_exceededKey का या उसके workspace का मासिक ₹ बजट खर्च हो गया है।dashboard पर बजट बढ़ाएँ, या नए महीने (IST) की प्रतीक्षा करें।
502all_routes_failedप्रत्येक योग्य रूट में त्रुटि हुई; संदेश में अंतिम अपस्ट्रीम त्रुटि शामिल है।बैकऑफ के साथ पुनः प्रयास करें — सर्किट ~30 s में ठीक हो जाते हैं। घटनाओं के लिए status जाँचें।

Dashboard & account

HTTPCodeकब
401no_sessionसाइन इन किए बिना किसी /me/* एंडपॉइंट को कॉल करना।
400duplicate_key_nameउस नाम वाली एक सक्रिय key आपके org में पहले से मौजूद है।
400trial_ceilingएक ट्रायल key को 60 req/min या 200 req/day से आगे बढ़ाने का प्रयास।
503provider_not_configuredवह OAuth साइन-इन विधि इस डिप्लॉयमेंट पर कॉन्फ़िगर नहीं की गई है।

बिलिंग

HTTPCodeकब
400address_requiredबिलिंग पता जोड़ने से पहले ऑर्डर बनाना।
400bad_addressबिलिंग पता सत्यापन में विफल रहा (संदेश में फ़ील्ड का नाम बताया गया है)।
400promo_invalidप्रोमो कोड मौजूद नहीं है, समाप्त हो गया है, या खत्म हो चुका है।
400promo_redeemedआपके org ने पहले ही यह कोड भुना लिया है।
503billing_disabledइस डिप्लॉयमेंट पर बिलिंग कॉन्फ़िगर नहीं की गई है।

BYOK

HTTPCodeकब
400bad_keyसबमिट की गई key उस provider के लिए वैध नहीं दिखती।
400unknown_providerऐसा कोई BYOK provider id नहीं है।
503byok_disabledइस डिप्लॉयमेंट पर BYOK कॉन्फ़िगर नहीं किया गया है।

रूटिंग, collections, endpoints & teams

मैनेजमेंट एंडपॉइंट्स सत्यापन कोड का एक छोटा सेट साझा करते हैं:

HTTPCodeकब
403forbiddenकार्रवाई के लिए ऐसी भूमिका चाहिए जो आपके पास नहीं है (अधिकांश राइट्स केवल owner/admin के लिए हैं)।
404not_foundआपके org में ऐसा कोई collection, endpoint, chain, member या invitation नहीं है।
400bad_steps / bad_modelकिसी chain या collection में अमान्य steps हैं, या यह ऐसे मॉडल को टारगेट करता है जो कैटलॉग id नहीं है।
400bad_name / bad_readmeनाम या README सत्यापन में विफल रहता है (लंबाई या वर्ण)।
400cap / team_cap / member_capएक प्रति-org सीमा पहुँच गई है (collections, team orgs, या members)।
400bad_request / unavailableBYOE कॉन्फ़िग अमान्य है (उदा. SSRF-ब्लॉक किया गया URL) या यह सुविधा कॉन्फ़िगर नहीं है।
400bad_email / bad_role / already_member / already_invited / last_owner / personal_orgसदस्यता त्रुटियाँ — Teams देखें (आप अंतिम owner को पदावनत नहीं कर सकते, या किसी personal org में members नहीं जोड़ सकते)।
400duplicate_workspaceउस नाम वाला एक workspace org में पहले से मौजूद है।

कोड में त्रुटियों को हैंडल करना

OpenAI SDKs के साथ, BharatRouter त्रुटियाँ SDK के मानक exceptions के रूप में सामने आती हैं — एनवेलप उसी के भीतर रहता है। एक रिट्राई पॉलिसी जो ऊपर की हर चीज़ को कवर करती है:

# Python
import time, openai

def chat(client, **kw):
    for attempt in range(4):
        try:
            return client.chat.completions.create(**kw)
        except openai.RateLimitError as e:        # 429: rate/daily/budget
            code = (getattr(e, "body", None) or {}).get("error", {}).get("code")
            if code in ("daily_limit_reached", "budget_exceeded"):
                raise                              # waiting seconds won't help
            time.sleep(2 ** attempt)
        except openai.APIStatusError as e:
            if e.status_code == 502:               # all_routes_failed
                time.sleep(2 ** attempt)           # circuits recover in ~30s
            else:
                raise                              # 400/401/402: fix, don't retry
    raise RuntimeError("retries exhausted")
// Node
try {
  await client.chat.completions.create({ model: "gemma-4-e4b-it", messages });
} catch (err) {
  const code = err?.error?.code ?? err?.code;
  if (code === "insufficient_credits") notifyOwnerToTopUp();
  else if (err.status === 429) scheduleRetry(err.headers?.["retry-after"]);
  else if (err.status === 502) scheduleRetry(30);   // all_routes_failed
  else throw err;
}

मोटा नियम: 429 (सिवाय daily_limit_reached /budget_exceeded के) और 502 को बैकऑफ के साथ रिट्राई करें; 400/401/402 को कभी आँख मूँदकर रिट्राई न करें — उन्हें धैर्य की नहीं, सुधार की ज़रूरत होती है।