Files
OmniRoute/docs/i18n/hi/docs/reference/API_REFERENCE.md
Diego Rodrigues de Sa e Souza b637350680 fix(docs): re-sync the 65 documentation mirror sets; section-level docs pipeline; drift gate blocking (#13940)
1,104 mirrors rewritten over five passes of run-translation on the 22-source core set: the 14 sources edited since their translation, the 322 mirrors that were still English copies, and the frontmatter the old extractor leaked into the newer locales' bodies. The pipeline now caches per-`## `-section hashes and retranslates only changed sections, never reuses a section that is still English, rebuilds English-copy / leaked mirrors even when the source is unchanged, merges the state on save (parallel runs), and the drift gate (scoped to the core set) is blocking. Final audit: 0 stale, 0 English copies, 0 leaked frontmatter across 1,430 core mirrors.

⚠️ base-red inherited: #12732
2026-09-17 02:55:31 -03:00

179 KiB
Raw Blame History

API Reference (हिन्दी)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


🌐 भाषाएँ: 🇺🇸 English | 🇪🇹 አማርኛ | 🇸🇦 العربية | 🇦🇿 Azərbaycan dili | 🇧🇬 Български | 🇧🇩 বাংলা | 🇨🇿 Čeština | 🇩🇰 Dansk | 🇩🇪 Deutsch | 🇬🇷 Ελληνικά | 🇪🇸 Español | 🇪🇪 Eesti | 🇮🇷 فارسی | 🇫🇮 Suomi | 🇫🇷 Français | 🇮🇪 Gaeilge | 🇮🇳 ગુજરાતી | 🇳🇬 Hausa | 🇮🇱 עברית | 🇮🇳 हिन्दी | 🇭🇷 Hrvatski | 🇭🇺 Magyar | 🇦🇲 Հայերեն | 🇮🇩 Bahasa Indonesia | 🇳🇬 Igbo | 🇮🇹 Italiano | 🇯🇵 日本語 | 🇬🇪 ქართული | 🇰🇭 ខ្មែរ | 🇮🇳 ಕನ್ನಡ | 🇰🇷 한국어 | 🇱🇹 Lietuvių | 🇱🇻 Latviešu | 🇮🇳 മലയാളം | 🇮🇳 मराठी | 🇲🇾 Bahasa Melayu | 🇲🇹 Malti | 🇲🇲 မြန်မာ | 🇳🇵 नेपाली | 🇳🇱 Nederlands | 🇳🇴 Norsk | 🇮🇳 ଓଡ଼ିଆ | 🇮🇳 ਪੰਜਾਬੀ | 🇵🇭 Filipino | 🇵🇱 Polski | 🇵🇹 Português (Portugal) | 🇧🇷 Português (Brasil) | 🇷🇴 Română | 🇷🇺 Русский | 🇱🇰 සිංහල | 🇸🇰 Slovenčina | 🇸🇮 Slovenščina | 🇷🇸 Српски | 🇸🇪 Svenska | 🇰🇪 Kiswahili | 🇮🇳 தமிழ் | 🇮🇳 తెలుగు | 🇹🇭 ไทย | 🇹🇷 Türkçe | 🇺🇦 Українська | 🇵🇰 اردو | 🇺🇿 Oʻzbekcha | 🇻🇳 Tiếng Việt | 🇳🇬 Yorùbá | 🇨🇳 中文 (简体) | 🇹🇼 中文 (繁體)

OmniRoute API के लिए मुख्य संदर्भ। यह सार्वजनिक /v1 इंटरफ़ेस और सबसे अधिक उपयोग किए जाने वाले प्रबंधन एंडपॉइंट्स को कवर करता है; मशीन-पठनीय docs/openapi.yaml और src/app/api/ के अंतर्गत रूट ट्री संपूर्ण स्रोत हैं।


विषय-सूची


चैट पूर्णताएँ

POST /v1/chat/completions
Authorization: Bearer your-api-key
Content-Type: application/json

{
  "model": "cc/claude-opus-4-6",
  "messages": [
    {"role": "user", "content": "Write a function to..."}
  ],
  "stream": true
}

कस्टम हेडर्स

हेडर दिशा विवरण
X-OmniRoute-No-Cache अनुरोध कैश को बायपास करने के लिए true पर सेट करें
x-omniroute-no-memory अनुरोध इस अनुरोध के लिए मेमोरी + कौशल इंजेक्शन छोड़ने हेतु true पर सेट करें (no-cache के समान; प्रति-कॉल टोकन/लागत ओवरहेड से बचाता है)
X-OmniRoute-Progress अनुरोध प्रगति इवेंट्स के लिए true पर सेट करें
X-Session-Id अनुरोध बाहरी सत्र एफिनिटी के लिए स्टिकी सत्र कुंजी
x_session_id अनुरोध अंडरस्कोर वाला प्रकार भी स्वीकार किया जाता है (प्रत्यक्ष HTTP)
X-OmniRoute-Session-Id अनुरोध कॉलर द्वारा दिया गया सत्र/वार्तालाप टैग (मेमोरी को भी फ़ीड करता है)। मौजूद होने पर, प्रति-सत्र लागत एट्रिब्यूशन (#8249) के लिए इसे call_logs.session_tag में हूबहू सहेजा जाता है — अनुपस्थित होने पर इसे कभी संश्लेषित नहीं किया जाता
Idempotency-Key अनुरोध डीडुप कुंजी (5s विंडो)
X-Request-Id अनुरोध वैकल्पिक डीडुप कुंजी
X-OmniRoute-Cache प्रतिक्रिया HIT या MISS (नॉन-स्ट्रीमिंग)
X-OmniRoute-Idempotent प्रतिक्रिया डीडुप्लिकेट किए जाने पर true
X-OmniRoute-Progress प्रतिक्रिया प्रगति ट्रैकिंग चालू होने पर enabled
X-OmniRoute-Session-Id प्रतिक्रिया OmniRoute द्वारा उपयोग की गई प्रभावी सत्र ID
X-OmniRoute-Request-Id प्रतिक्रिया अनुरोध सहसंबंध ID (जब ज्ञात हो)
X-OmniRoute-Version प्रतिक्रिया OmniRoute बिल्ड संस्करण (हमेशा मौजूद)
X-OmniRoute-Cost-Saved प्रतिक्रिया HIT पर कैश द्वारा बचाई गई USD राशि (केवल कैश हिट्स)
X-OmniRoute-Decision प्रतिक्रिया रूटिंग ट्रेस: strategy=<name>; provider=<alias>; latency_ms=<n> (<name> कॉम्बो रणनीति है, या गैर-कॉम्बो अनुरोध के लिए single) — पूर्णता प्रतिक्रियाओं में हमेशा मौजूद

Nginx नोट: यदि आप अंडरस्कोर हेडर्स (उदाहरण के लिए x_session_id) पर निर्भर हैं, तो underscores_in_headers on; सक्षम करें।

लागत टेलीमेट्री हेडर: नॉन-स्ट्रीमिंग सफल प्रतिक्रियाओं में X-OmniRoute-* लागत-टेलीमेट्री सेट भी शामिल होता है — X-OmniRoute-Response-Cost (USD, निश्चित 10 दशमलव स्थान; मुफ़्त/बिना मूल्य-निर्धारण के लिए 0.0000000000), X-OmniRoute-Tokens-In / X-OmniRoute-Tokens-Out, X-OmniRoute-Model, X-OmniRoute-Provider, X-OmniRoute-Latency-Ms, X-OmniRoute-Cache-Hit, और X-OmniRoute-Fallback-Attempts (केवल जब > 0 हो), साथ ही X-OmniRoute-Request-Id और X-OmniRoute-Version। इन्हें चैट कम्प्लीशन्स, /v1/responses, /v1/messages, और मीडिया एंडपॉइंट्स/v1/embeddings, /v1/images/generations, /v1/audio/speech, /v1/audio/transcriptions, /v1/rerank, /v1/videos/generations, /v1/music/generations, और /v1/moderations (लागत हमेशा 0) — द्वारा उत्सर्जित किया जाता है। जहाँ मूल्य-निर्धारण उपलब्ध है, वहाँ मीडिया लागत की गणना मोडैलिटी के अनुसार (प्रति-इमेज, प्रति-सेकंड, प्रति-कैरेक्टर, प्रति सर्च-यूनिट) की जाती है; अन्यथा यह 0 (फेल-ओपन) होती है।

कैश-हिट लागत अर्थविज्ञान: सिमेंटिक-कैश HIT (X-OmniRoute-Cache-Hit: true) पर कोई अपस्ट्रीम कॉल नहीं की जाती, इसलिए X-OmniRoute-Response-Cost का मान 0.0000000000 होता है (हिट को सर्व करने की वृद्धिशील लागत)। मूल/संभावित लागत को अलग से X-OmniRoute-Cost-Saved में रिपोर्ट किया जाता है। बिलिंग उपभोक्ताओं को X-OmniRoute-Response-Cost का योग करना चाहिए (हिट की कोई लागत नहीं होती); कैश एनालिटिक्स X-OmniRoute-Cost-Saved को एग्रीगेट कर सकता है।

एक्सक्लूसिव मैनेज्ड सेशन लीज़

एक्सक्लूसिव मैनेज्ड सेशन लीज़िंग एक ऑप्ट-इन, क्लाइंट-न्यूट्रल रूटिंग अनुबंध है: एक सक्रिय स्वामी एक पात्र OmniRoute कनेक्शन को होल्ड करता है। यह किसी मॉडल को लीज़ पर नहीं देता, OAuth की आवश्यकता नहीं रखता, किसी विशिष्ट क्लाइंट की पहचान नहीं करता और न ही किसी विशिष्ट प्रदाता की आवश्यकता रखता है।

प्रमाणीकरण करने वाली API कुंजी में lease:exclusive स्कोप और स्पष्ट रूप से गैर-रिक्त allowedConnections सूची होनी चाहिए। डेटाबेस म्यूटेशन सीमा कुंजी बनाते समय और आंशिक अपडेट के दौरान दोनों फ़ील्ड को एक साथ लागू करती है।

POST /api/v1/session-leases
Authorization: Bearer <managed-api-key>
Content-Type: application/json
X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>

{"action":"acquire","model":"glm/glm-4.6"}

सफल अधिग्रहण, नवीनीकरण और रिलीज़ प्रतिक्रियाएँ टाइमस्टैम्प, state और सटीक धनात्मक generation को उजागर करती हैं, लेकिन चयनित कनेक्शन या क्रेडेंशियल कभी नहीं। नवीनीकरण और रिलीज़ JSON बॉडी में जनरेशन प्रदान करते हैं:

{ "action": "renew", "generation": 1 }
{ "action": "release", "generation": 1, "reason": "OWNER_EXIT" }

एक सक्रिय लीज़ स्वामी अपनी वर्तमान बाइंडिंग के लिए स्पष्ट रूप से गोपनीयता-सुरक्षित प्रदर्शन मेटाडेटा का अनुरोध कर सकता है:

{ "action": "status", "generation": 1 }
{
  "state": "ACTIVE",
  "generation": 1,
  "acquiredAt": "2026-08-28T12:00:00.000Z",
  "renewedAt": "2026-08-28T12:00:30.000Z",
  "expiresAt": "2026-08-28T12:02:30.000Z",
  "connection": {
    "displayName": "Primary Codex",
    "provider": "codex"
  }
}

यह ऑप्ट-इन स्टेटस कार्रवाई एक ही डेटाबेस ट्रांज़ैक्शन में अपारदर्शी स्वामी, प्रमाणित मैनेज्ड API कुंजी और सटीक सक्रिय जनरेशन द्वारा सुरक्षित की जाती है। displayName केवल ट्रिम किया गया कॉन्फ़िगर किया हुआ कनेक्शन नाम है; जब कोई सुरक्षित कॉन्फ़िगर किया हुआ नाम मौजूद नहीं होता, तब यह null होता है। OmniRoute कभी भी ईमेल या जनरेट की गई अकाउंट पहचान को प्रतिस्थापित नहीं करता। प्रदाता मान एक गैर-संवेदनशील प्रदर्शन लेबल है और कभी भी जनरेट किया गया संगत-प्रदाता पहचानकर्ता नहीं होता। क्रेडेंशियल, टोकन, कुकीज़, रॉ कनेक्शन या API कुंजी आईडी, स्वामी हैश, फ़ेंसिंग सीक्रेट और आंतरिक रूटिंग डेटा शामिल नहीं किए जाते।

गलत-कुंजी, गलत-स्वामी, पुराने-जनरेशन, अनुपलब्ध, समाप्त, रिलीज़ और अमान्य किए गए लुकअप सभी कनेक्शन मेटाडेटा के बिना समान 409 LEASE_FENCE_STALE त्रुटि लौटाते हैं। क्षमता-प्रतीक्षा प्रतिक्रिया प्राप्त करने वाले क्लाइंट के पास निरीक्षण करने के लिए कोई सक्रिय बाइंडिंग नहीं होती। जब रूटिंग किसी सक्रिय लीज़ को ट्रांज़िशन करती है, तो वही जनरेशन मान्य रहता है और स्टेटस परमाण्विक रूप से नई बाइंडिंग लौटाता है, पुरानी कभी नहीं। मौजूदा क्लाइंट अपरिवर्तित रहते हैं क्योंकि अधिग्रहण, नवीनीकरण, रिलीज़ और प्रतीक्षा प्रतिक्रियाएँ अपने पिछले स्वरूप बनाए रखती हैं।

यह सर्वर अनुबंध स्टॉक OpenAI Codex /status को नहीं बदलता। स्टॉक Codex वर्तमान में अपने मॉडल प्रदाता और अंतर्निहित प्रमाणीकरण/अकाउंट स्थिति की रिपोर्ट करता है, लेकिन मनमाना कस्टम प्रदाता अकाउंट मेटाडेटा रेंडर नहीं करता; भविष्य के क्लाइंट इंटीग्रेशन को इस कार्रवाई को कॉल करना होगा और यह तय करना होगा कि connection.displayName को कैसे प्रदर्शित किया जाए।

इसके बाद प्रत्येक मैनेज्ड इन्फ़रेंस अनुरोध दोनों नियंत्रण हेडर प्रदान करता है:

X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>
X-OmniRoute-Lease-Generation: 1

प्रत्येक समर्थित अपस्ट्रीम प्रयास से ठीक पहले सटीक स्वामी, जनरेशन, सक्रिय कनेक्शन और प्रमाणित API कुंजी को फ़ेंस किया जाता है। किसी अन्य कुंजी के साथ स्वामी और जनरेशन को रीप्ले करना तब भी विफल होता है, जब वह कुंजी उसी कनेक्शन की अनुमति देती हो। रॉ स्वामियों को स्थायी रूप से संग्रहीत नहीं किया जाता, लॉग नहीं किया जाता, अनुरोध स्नैपशॉट में बनाए नहीं रखा जाता और अपस्ट्रीम फ़ॉरवर्ड नहीं किया जाता।

अस्थायी प्रतिस्पर्धा HTTP 429 को Retry-After और निम्न के साथ लौटाती है:

{
  "state": "WAITING_FOR_CAPACITY",
  "error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" },
  "reason": "NO_FREE_ELIGIBLE_CONNECTION",
  "retryAfter": 30
}

इस प्रतिक्रिया का केवल यह अर्थ है कि सामान्य पात्र सेट गैर-रिक्त था और प्रत्येक उपलब्ध उम्मीदवार किसी अन्य सक्रिय लीज़ द्वारा होल्ड किया गया था। असमर्थित मॉडल/प्रदाता, नीति असंगति, कूलडाउन, कोटा, स्वास्थ्य और अन्य सामान्य पात्रता विफलताएँ अपनी मौजूदा OmniRoute प्रतिक्रियाएँ बनाए रखती हैं।

x-omniroute-compression

कंप्रेशन योजना का प्रति-अनुरोध ओवरराइड। सर्वोच्च प्राथमिकता — यह रूटिंग-कॉम्बो ओवरराइड, सक्रिय प्रोफ़ाइल, ऑटो-ट्रिगर और पैनल Default पर वरीयता रखता है। मान:

मान प्रभाव
off इस अनुरोध के लिए कोई कंप्रेशन नहीं।
default पैनल से प्राप्त Default प्रोफ़ाइल (सक्रिय प्रोफ़ाइल को अनदेखा करता है)।
engine:<id> सक्षम होने पर एकल इंजन, जैसे engine:rtk
<combo> एक नामित कॉम्बो, जिसका मिलान पहले नाम (केस-असंवेदनशील) और फिर आईडी द्वारा होता है।

टिप्पणियाँ:

  • अज्ञात मानों को अनदेखा किया जाता है (अनुरोध कभी अस्वीकार नहीं होता); समाधान सामान्य ऑपरेटर प्राथमिकता पर आगे बढ़ता है।
  • यदि एक से अधिक कॉम्बो का नाम समान है, तो निर्धारक मिलान के लिए कॉम्बो की id पास करें।
  • ऐसा कॉम्बो जिसका नाम off या default है, नाम द्वारा नहीं चुना जा सकता (इन कीवर्ड की व्याख्या पहले की जाती है); ऐसे कॉम्बो को उसकी id द्वारा संदर्भित करें।
  • मुख्य कंप्रेशन स्विच एक कठोर अवरोध है: जब कंप्रेशन वैश्विक रूप से अक्षम हो, तो यह हेडर इसे सक्षम नहीं कर सकता।

लागू की गई योजना प्रतिक्रिया हेडर में वापस प्रतिध्वनित होती है:

X-OmniRoute-Compression: <mode>; source=<source>

जहाँ <source>, request-header, routing-override, active-profile, auto-trigger, default या off में से एक होता है।


एम्बेडिंग्स

POST /v1/embeddings
Authorization: Bearer your-api-key
Content-Type: application/json

{
  "model": "nebius/Qwen/Qwen3-Embedding-8B",
  "input": "The food was delicious"
}

उपलब्ध प्रदाता: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, OpenRouter, Jina AI।

कैटलॉग आईडी provider/model होते हैं (उदाहरण: jina-ai/jina-embeddings-v5-omni-small)। रजिस्ट्री में मौजूद केवल Jina मॉडल आईडी (उदाहरण के लिए jina-embeddings-v5-text-small, jina-reranker-v3.5) भी रिज़ॉल्व होते हैं। Jina embed/rerank/classify/segment पहले डैशबोर्ड के jina-ai क्रेडेंशियल का उपयोग करते हैं; JINA_AI_API_KEY केवल तभी फ़ॉलबैक होता है, जब कोई डैशबोर्ड कुंजी मौजूद न हो। jina-reader कार्ड केवल Reader / r.jina.ai के लिए है (POST /v1/web/fetch) और कभी भी एम्बेडिंग्स या रीरैंक उपलब्ध नहीं कराता।

मल्टीमोडल समर्थन दर्शाने वाले रजिस्ट्री मॉडल अधिकतम 32 प्रदाता-निरपेक्ष संरचित आइटम भी स्वीकार करते हैं। मीडिया आइटम के प्रकार text, image, audio, video, और document हैं। उनका मीडिया source या तो {"type":"url","url":"https://..."} होता है या {"type":"base64","data":"...","media_type":"..."}

Jina v5 Omni (jina-ai/jina-embeddings-v5-omni-small, jina-ai/jina-embeddings-v5-omni-nano, और फ़ैमिली एलियास jina-ai/jina-embeddings-v5-omni → omni-small) Jina के नेटिव EmbeddingsV5Request दस्तावेज़ भी स्वीकार करता है और उन्हें https://api.jina.ai/v1/embeddings पर बिना किसी बदलाव के फ़ॉरवर्ड करता है:

{
  "model": "jina-ai/jina-embeddings-v5-omni-small",
  "task": "retrieval.query",
  "normalized": true,
  "input": [
    { "text": "a red bicycle" },
    { "image": "https://example.com/bike.png" },
    {
      "content": [{ "text": "caption" }, { "image": "data:image/png;base64,..." }]
    }
  ]
}

नेटिव { image | audio | video | pdf } मान कोई सार्वजनिक HTTPS URL, data: URI, या रॉ base64 हो सकते हैं। OmniRoute उन ऑब्जेक्ट को स्ट्रिंग में परिवर्तित नहीं करता या नेटिव इमेज URL फ़ेच नहीं करता — Jina सार्वजनिक मीडिया को स्वयं प्राप्त करता है। अतिरिक्त Jina फ़ील्ड (task, normalized, truncate, embedding_type) फ़ॉरवर्ड किए जाते हैं। केवल-टेक्स्ट Jina SKU अब भी गैर-टेक्स्ट दस्तावेज़ों को अस्वीकार करते हैं।

सुरक्षा और ट्रांसपोर्ट सीमाएँ:

  • रिमोट मीडिया URL सार्वजनिक HTTPS होने चाहिए। कैनोनिकल {type,source:url} आइटम सर्वर-साइड फ़ेच किए जाते हैं (रीडायरेक्ट पुनः-सत्यापन, टाइमआउट, आकार सीमाएँ, सार्वजनिक DNS, कनेक्शन पिनिंग) और प्रदाता कॉल से पहले इनलाइन किए जाते हैं। Jina-नेटिव {image:"https://..."} आइटम उसी सार्वजनिक-HTTPS जाँच के बाद जस के तस फ़ॉरवर्ड किए जाते हैं; Jina URL को फ़ेच करता है।
  • इनलाइन base64 मीडिया की सीमा प्रति आइटम 8 MiB डिकोडेड और पूरे अनुरोध में कुल 16 MiB डिकोडेड है।

प्रदाता रूपांतरण (कैनोनिकल आइटम कभी भी बिना बदलाव के फ़ॉरवर्ड नहीं किए जाते):

  • Jina मल्टीमोडल मॉडल: प्रत्येक शीर्ष-स्तरीय आइटम एक मोडैलिटी-कुंजीयुक्त ऑब्जेक्ट (text / image / audio / video / pdf) बन जाता है, जिसमें इनलाइन मीडिया के लिए डेटा URI का उपयोग होता है; प्रत्येक शीर्ष-स्तरीय आइटम के लिए एक वेक्टर।
  • Gemini Embedding 2 फ़ैमिली: एक शीर्ष-स्तरीय ऐरे, content.parts (text या inline_data) के साथ एकल नेटिव models/{model}:embedContent अनुरोध बन जाता है।
  • स्पष्ट मोडैलिटी मेटाडेटा के बिना अज्ञात/डायनेमिक मॉडल संरचित इनपुट को HTTP 400 के साथ अस्वीकार करते हैं।
{
  "model": "jina-ai/jina-embeddings-v5-omni-small",
  "input": [
    { "type": "text", "text": "A red bicycle" },
    {
      "type": "image",
      "source": { "type": "url", "url": "https://example.com/bicycle.png" }
    }
  ],
  "dimensions": 512,
  "encoding_format": "float"
}

असमर्थित मॉडल/मोडैलिटी संयोजन आइटम को जबरन परिवर्तित करने के बजाय HTTP 400 लौटाते हैं। पुराने स्ट्रिंग/टोकन अनुरोधों के गैर-इनपुट एक्सटेंशन फ़ील्ड बिना किसी बदलाव के पास होते रहते हैं।

# सभी एम्बेडिंग मॉडल सूचीबद्ध करें
GET /v1/embeddings

छवि निर्माण

POST /v1/images/generations
Authorization: Bearer your-api-key
Content-Type: application/json

{
  "model": "openai/gpt-image-2",
  "prompt": "A beautiful sunset over mountains",
  "size": "1024x1024"
}

उपलब्ध प्रदाता: OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, OpenRouter, SD WebUI (स्थानीय), ComfyUI (स्थानीय)।

# सभी छवि मॉडल सूचीबद्ध करें
GET /v1/images/generations

दस्तावेज़ OCR

POST /v1/ocr
Authorization: Bearer your-api-key
Content-Type: application/json

{
  "model": "mistral/mistral-ocr-latest",
  "document": {
    "type": "document_url",
    "document_url": "https://example.com/invoice.pdf"
  }
}

model, provider/model प्रीफ़िक्स के माध्यम से OCR प्रदाता का चयन करता है; केवल मॉडल आईडी (उदा. mistral-ocr-latest) अपने पंजीकृत प्रदाता में रिज़ॉल्व होती है, और model न दिए जाने पर डिफ़ॉल्ट रूप से Mistral (mistral-ocr-latest) का उपयोग होता है। पंजीकृत प्रदाता (open-sse/config/ocrRegistry.ts):

प्रदाता आईडी मॉडल आईडी model का मान टिप्पणियाँ
mistral mistral-ocr-latest mistral/mistral-ocr-latest (या केवल mistral-ocr-latest) सिंक्रोनस — प्रतिक्रिया सीधे एकल अपस्ट्रीम कॉल से लौटाई जाती है।
azure-document-intelligence prebuilt-read azure-document-intelligence/prebuilt-read एसिंक्रोनस अपस्ट्रीम (analyze + पोल) — नीचे देखें।
vertex-deepseek-ocr deepseek-ocr-maas vertex-deepseek-ocr/deepseek-ocr-maas सिंक्रोनस, Vertex AI के openapi/chat/completions पार्टनर एंडपॉइंट के माध्यम से — प्रमाणीकरण/URL के लिए नीचे देखें।

सभी तीन प्रदाता समान Mistral-स्वरूप वाली बॉडी में प्रतिक्रिया देते हैं:

{
  "pages": [{ "index": 0, "markdown": "# Extracted text..." }],
  "model": "mistral-ocr-latest",
  "usage_info": { "pages_processed": 1 }
}

Azure Document Intelligence पोल प्रवाह

Azure Document Intelligence का analyze API एसिंक्रोनस है: प्रारंभिक अनुरोध किसी बॉडी के बजाय एक Operation-Location हेडर लौटाता है, और परिणाम के लिए पोल करना आवश्यक होता है। हैंडलर (open-sse/handlers/ocr.ts) उस URL को प्रत्येक सेकंड में अधिकतम 30 प्रयासों तक पोल करता है, किसी गैर-ok पोल प्रतिक्रिया या "failed" स्थिति पर तुरंत विफल हो जाता है (पोलिंग जारी नहीं रखता), और यदि प्रयासों की सीमा समाप्त होने के बाद भी ऑपरेशन चल रहा हो, तो 504 लौटाता है। अंतिम Azure प्रतिक्रिया को कॉलर को लौटाने से पहले Mistral द्वारा उपयोग किए जाने वाले समान pages/markdown स्वरूप में सामान्यीकृत किया जाता है, इसलिए क्लाइंट कोड को प्रदाता के लिए विशेष स्थिति संभालने की आवश्यकता नहीं होती।

Vertex AI DeepSeek OCR प्रमाणीकरण और एंडपॉइंट रिज़ॉल्यूशन

vertex-deepseek-ocr, चैट/छवि ट्रैफ़िक के लिए OmniRoute द्वारा पहले से समर्थित समान Vertex AI प्रमाणीकरण का पुनः उपयोग करता है (open-sse/executors/vertex.ts): कनेक्शन की API कुंजी या तो Service Account JSON क्रेडेंशियल होती है (जिसे JWT-bearer प्रवाह के माध्यम से अल्पकालिक OAuth एक्सेस टोकन में बदला जाता है) या पहले से जारी किया गया OAuth एक्सेस टोकन होता है, जिसका यथावत उपयोग किया जाता है। अपस्ट्रीम एंडपॉइंट URL, Vertex का सामान्य openapi/chat/completions पार्टनर एंडपॉइंट है, जिसे कनेक्शन के प्रोजेक्ट और क्षेत्र से बनाया जाता है — स्पष्ट providerSpecificData.project/providerSpecificData.region को हमेशा प्राथमिकता मिलती है; अन्यथा प्रोजेक्ट Service Account JSON के project_id से प्राप्त किया जाता है और क्षेत्र डिफ़ॉल्ट रूप से us-central1 होता है। दोनों रिज़ॉल्यूशन open-sse/handlers/ocr.ts (resolveVertexOcrAccessToken, resolveVertexOcrBaseUrl) में होते हैं, जिनका उपयोग handleOcr को डिस्पैच करने से पहले src/app/api/v1/ocr/route.ts द्वारा किया जाता है।


मॉडल सूचीबद्ध करें

GET /v1/models
Authorization: Bearer your-api-key

→ OpenAI प्रारूप में सभी चैट, एम्बेडिंग और इमेज मॉडल + कॉम्बो लौटाता है

मॉडल id प्रीफ़िक्स (?prefix=)

अधिकांश मॉडल एक प्रोवाइडर प्रीफ़िक्स के अंतर्गत प्रदर्शित किए जाते हैं। आपको कौन-सा प्रीफ़िक्स मिलता है, यह MODELS_CATALOG_PREFIX_MODE फ़ीचर फ़्लैग द्वारा नियंत्रित होता है, और इसे क्वेरी पैरामीटर के साथ प्रति अनुरोध ओवरराइड किया जा सकता है — यह ऐसे क्लाइंट के लिए उपयोगी है जो अन्य सभी के लिए सर्वर-व्यापी सेटिंग बदले बिना एक साफ़-सुथरी सूची चाहता है:

GET /v1/models?prefix=alias        # प्रति मॉडल एक id — छोटा alias प्रीफ़िक्स
GET /v1/models?prefix=dual         # दोनों रूप (सर्वर डिफ़ॉल्ट)
GET /v1/models?prefix=canonical    # केवल पूरा provider-id प्रीफ़िक्स
मोड उत्सर्जित करता है टिप्पणियाँ
dual cc/claude-sonnet-4-6 और claude/claude-sonnet-4-6 डिफ़ॉल्ट। दोनों id एक ही मॉडल पर रूट होते हैं; इसे इसलिए बनाए रखा गया है ताकि किसी भी रूप को हार्डकोड करने वाले क्लाइंट कॉन्फ़िगरेशन काम करते रहें। इससे कैटलॉग का आकार लगभग दोगुना हो जाता है।
alias cc/claude-sonnet-4-6 प्रति मॉडल एक प्रविष्टि। अलग alias न रखने वाले प्रोवाइडर भी अपनी प्रविष्टि उत्सर्जित करते हैं, इसलिए कुछ भी छूटता नहीं है।
canonical claude/claude-sonnet-4-6 पूरे provider-id प्रीफ़िक्स के अंतर्गत प्रति मॉडल एक प्रविष्टि। अलग alias न रखने वाले प्रोवाइडर (जैसे antigravity/…, agy/…) यहाँ भी अपना एकल id उत्सर्जित करते हैं, इसलिए कुछ भी छूटता नहीं है।

dual-मोड मिरर को क्वेरी पैरामीटर के बिना भी पहचाना जा सकता है: इसमें प्राथमिक id की ओर संकेत करने वाला parent फ़ील्ड होता है।

मॉडल पिकर प्रदर्शित करने वाले क्लाइंट को ?prefix=alias का अनुरोध करना चाहिए — OmniCopilot VS Code एक्सटेंशन यही करता है।

बिना-थिंकिंग वाले मॉडल वेरिएंट

थिंकिंग-सक्षम Claude मॉडल के लिए, /v1/models एक बिना-थिंकिंग वाला वेरिएंट भी प्रदर्शित करता है, जिसकी id के आगे claude-3-omniroute-no-thinking/ प्रीफ़िक्स लगा होता है:

claude-3-omniroute-no-thinking/<provider>/<model>

इस id को चुनने पर (उदाहरण के लिए, ऐसे Claude Code कॉन्फ़िगरेशन में जो हमेशा एक thinking ब्लॉक जोड़ता है), रीजनिंग को दबाते हुए इसे वास्तविक <provider>/<model> में वापस रिज़ॉल्व किया जाता है — /v1/messages पाथ पर thinking:{type:"disabled"}, या /v1/chat/completions पाथ पर reasoning/reasoning_effort फ़ील्ड हटा दिए जाते हैं। यह वेरिएंट केवल उन Claude-फ़ैमिली मॉडल के लिए सूचीबद्ध होता है जो थिंकिंग का समर्थन करते हैं और disabled का पालन करते हैं (इसलिए, उदाहरण के लिए, केवल-अडैप्टिव मॉडल जो disabled को अस्वीकार करते हैं, शामिल नहीं किए जाते)। ऑपरेटर ModelSpec.noThinkingAlias के माध्यम से प्रति मॉडल इस वेरिएंट को बलपूर्वक चालू या बंद कर सकते हैं।


प्रदाता प्लगइन मैनिफ़ेस्ट

GET /api/v1/provider-plugin-manifest

Bifrost, CLIProxyAPI और भविष्य के साइडकार राउटर द्वारा उपयोग किया जाने वाला JSON-सुरक्षित प्रदाता प्लगइन मैनिफ़ेस्ट लौटाता है। प्रतिक्रिया TypeScript प्रदाता रजिस्ट्री से जनरेट की जाती है और जानबूझकर OAuth क्लाइंट सीक्रेट, रनटाइम एनवायरनमेंट रिज़ॉल्यूशन, एक्ज़ीक्यूटर फ़ंक्शन, अनुरोध हेडर और खाता डेटा को शामिल नहीं करती।

जब कोई साइडकार आउट-ऑफ़-प्रोसेस चलता है और सीधे open-sse/config/providerPluginManifestRegistry.ts को इंपोर्ट नहीं कर सकता, तब इस एंडपॉइंट का उपयोग करें।


संगतता एंडपॉइंट

विधि पथ प्रारूप
POST /v1/chat/completions OpenAI
POST /v1/messages Anthropic
POST /v1/responses OpenAI Responses
POST /v1/embeddings OpenAI
POST /v1/images/generations OpenAI Images
POST /v1/images/edits OpenAI Images (संपादन/इनपेंट)
POST /v1/videos/generations OpenAI-शैली वीडियो जनरेशन
POST /v1/music/generations OpenAI-शैली संगीत जनरेशन
POST /v1/audio/transcriptions OpenAI Audio (STT)
POST /v1/audio/speech OpenAI TTS (ऑडियो बॉडी लौटाता है)
POST /v1/rerank Cohere/Voyage-शैली री-रैंक
POST /v1/classify Jina वर्गीकरण (api.jina.ai)
POST /v1/segment Jina सेगमेंटर (segment.jina.ai)
POST /v1/moderations OpenAI Moderations
GET /v1/models OpenAI
POST /v1/messages/count_tokens Anthropic
GET /v1beta/models Gemini
POST /v1beta/models/{...path} Gemini generateContent
POST /v1/api/chat Ollama
GET /api/v1/vscode/{token}/ OpenAI कैटलॉग उपनाम
GET /api/v1/vscode/{token}/models OpenAI मॉडल उपनाम
POST /api/v1/vscode/{token}/chat/completions OpenAI टोकनयुक्त उपनाम
POST /api/v1/vscode/{token}/responses OpenAI Responses टोकनयुक्त उपनाम
POST /api/v1/vscode/{token}/api/chat Ollama टोकनयुक्त उपनाम
GET /api/v1/vscode/{token}/api/tags Ollama टैग टोकनयुक्त उपनाम

सभी POST रूट एक ही संरचना का पालन करते हैं: Bearer your-api-key + Zod-सत्यापित JSON बॉडी (v1RerankSchema, v1ModerationSchema, v1AudioSpeechSchema, आदि; src/shared/validation/schemas.ts देखें)। स्कीमा विफलता पर 4xx लौटाया जाता है।

जो क्लाइंट Authorization: Bearer ... संलग्न नहीं कर सकते, उनके लिए OmniRoute क्वेरी-स्ट्रिंग संगतता (?token=..., ?apiKey=..., ?api_key=..., ?key=...) या नीचे दस्तावेज़ीकृत समर्पित /api/v1/vscode/{token}/... एंडपॉइंट के माध्यम से URL में API कुंजियाँ भी स्वीकार करता है।

# री-रैंक
POST /v1/rerank      { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] }

# Jina वर्गीकरण (Foundation API क्रेडेंशियल)
POST /v1/classify    { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] }

# Jina सेगमेंटर
POST /v1/segment     { "content": "...", "return_chunks": true }

# Jina खोज (s.jina.ai; प्रदाता उपनाम: jina-search, jina-ai, jina)
POST /v1/search      { "query": "...", "provider": "jina-search" }

# मॉडरेशन
POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." }

# TTS — audio/mpeg (या अनुरोधित प्रारूप) बॉडी लौटाता है
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }

# छवि संपादन (multipart)
POST /v1/images/edits  -F image=@input.png -F prompt="..." -F mask=@mask.png

# वीडियो / संगीत जनरेशन (प्रदाता-प्रीफ़िक्स युक्त मॉडल ID)
POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." }
POST /v1/music/generations  { "model": "suno/v3.5",   "prompt": "..." }

समर्पित प्रदाता रूट

POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations

यदि प्रदाता प्रीफ़िक्स मौजूद नहीं है, तो उसे स्वचालित रूप से जोड़ दिया जाता है। मेल न खाने वाले मॉडल 400 लौटाते हैं।


Files API

बैच इनपुट/आउटपुट और फ़ाइल-उद्देश्य अपलोड के लिए OpenAI-संगत फ़ाइल एंडपॉइंट।

विधि पाथ विवरण
POST /v1/files फ़ाइल अपलोड करें (मल्टीपार्ट: file, purpose, expires_after[anchor], expires_after[seconds]) — अधिकतम 512 MiB
GET /v1/files प्रमाणित API कुंजी की फ़ाइलें सूचीबद्ध करें
GET /v1/files/[id] फ़ाइल का मेटाडेटा प्राप्त करें
DELETE /v1/files/[id] फ़ाइल हटाएँ
GET /v1/files/[id]/content अपरिष्कृत फ़ाइल बॉडी को वापस स्ट्रीम करें

प्रमाणीकरण: Bearer API कुंजी — फ़ाइलों का दायरा getApiKeyRequestScope के माध्यम से प्रत्येक API कुंजी के अनुसार निर्धारित किया जाता है। कोई कुंजी केवल अपनी फ़ाइलों को देख, डाउनलोड और हटा सकती है; कुंजी के बिना डैशबोर्ड सत्र पूरे इंस्टेंस को पढ़ सकता है; बिना स्वामी वाली फ़ाइल (अनाम या डैशबोर्ड-सत्र अपलोड) प्रत्येक गैर-सत्र कॉलर के लिए अस्वीकृत होती है। GET /v1/files किसी अनाम कॉलर — और ऐसी प्रस्तुत कुंजी जिसका समाधान नहीं होता — को 401 के साथ अस्वीकार करता है, भले ही REQUIRE_API_KEY=false हो, ताकि प्रत्येक टेनेंट की फ़ाइलें सूचीबद्ध न हों (GHSA-m3hp-hq9g-fpmv, GHSA-2jm2-mpx8-6523)।


Batches API

OpenAI-संगत बैच प्रोसेसिंग।

विधि पाथ विवरण
POST /v1/batches बैच बनाएँ — बॉडी को v1BatchCreateSchema द्वारा सत्यापित किया जाता है (input_file_id, endpoint, completion_window)
GET /v1/batches बैच सूचीबद्ध करें
GET /v1/batches/[id] बैच की स्थिति + request_counts प्राप्त करें
DELETE /v1/batches/[id] पूर्ण/विफल बैच हटाएँ
POST /v1/batches/[id]/cancel प्रगतिरत बैच रद्द करें

प्रमाणीकरण: Bearer API कुंजी। बैचों का दायरा फ़ाइलों के समान त्रि-स्तरीय नियम के अंतर्गत प्रत्येक API कुंजी के अनुसार निर्धारित किया जाता है: केवल अपनी कुंजी, पूरे इंस्टेंस के लिए डैशबोर्ड सत्र, और बिना स्वामी वाले रिकॉर्ड प्रत्येक गैर-सत्र कॉलर के लिए अस्वीकृत (प्राप्त करना, हटाना, रद्द करना और बनाते समय input_file_id की जाँच)। GET /v1/batches किसी अनाम कॉलर को 401 के साथ अस्वीकार करता है, भले ही REQUIRE_API_KEY=false हो।


Search API

वेब/सर्च प्रदाता अमूर्तन (Tavily, Brave, Exa, Serper आदि)।

विधि पथ विवरण
GET /v1/search कॉन्फ़िगर किए गए सर्च प्रदाताओं और उनकी क्षमताओं की सूची
POST /v1/search सर्च क्वेरी चलाएँ — बॉडी v1SearchSchema द्वारा सत्यापित, कैशिंग/कोएलिसिंग समर्थित
GET /v1/search/analytics प्रति-प्रदाता हिट/लेटेंसी/कैश आँकड़े

प्रमाणीकरण: Bearer API कुंजी (extractApiKey + isValidApiKey)। सर्च नीति enforceApiKeyPolicy के माध्यम से लागू की जाती है।


Web Fetch API

कॉन्फ़िगर किए गए वेब-फ़ेच प्रदाता (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract) के माध्यम से किसी URL से सामग्री निकालें।

विधि पथ विवरण
POST /v1/web/fetch किसी URL को फ़ेच/स्क्रैप करें — बॉडी v1WebFetchSchema द्वारा सत्यापित

प्रमाणीकरण: Bearer API कुंजी (extractApiKey + isValidApiKey)। नीति enforceApiKeyPolicy के माध्यम से लागू की जाती है।

कोटा-सजग फ़ॉलबैक (#8297): जब कोई स्पष्ट provider नहीं दिया जाता, तो पूल (firecrawljina-readertavily-searchtinyfishnimble-search) में निश्चित प्राथमिकता क्रम (पहले भरें) के अनुसार आगे बढ़ा जाता है — दर-सीमित लेकिन कॉन्फ़िगर किए गए प्रदाता को अनुरोध को तुरंत समाप्त करने के बजाय छोड़ दिया जाता है, और पुनः प्रयास योग्य/कोटा-संबंधी अपस्ट्रीम विफलता (HTTP 429 हमेशा; Firecrawl/Tavily/TinyFish की कोटा-शैली वाली मुफ़्त श्रेणियों के लिए 402/403 — Jina Reader के लिए नहीं, और साधारण 400 खराब अनुरोध के लिए कभी नहीं) अनुरोध के समय अगले ऐसे प्रदाता पर चली जाती है जिसे अभी आज़माया नहीं गया है और जिसके लिए क्रेडेंशियल उपलब्ध हैं। जब पूल के सभी प्रदाता समाप्त हो जाते हैं, तो एंडपॉइंट पहले के सामान्य 400 के बजाय एकल 429 (Retry-After हेडर के साथ) लौटाता है। जब कोई स्पष्ट provider अनुरोधित होता है, तो कोई मौन फ़ॉलबैक नहीं होता — दर-सीमित या विफल स्पष्ट प्रदाता अपनी ही त्रुटि प्रदर्शित करता है (दर-सीमित होने पर 429, अन्यथा अपस्ट्रीम स्थिति)।


WebSocket स्ट्रीमिंग

GET /v1/ws?handshake=1

WebSocket अपग्रेड हैंडशेक को सत्यापित करता है और वायर प्रोटोकॉल के उदाहरण संदेश (request, cancel) लौटाता है। वास्तविक WS फ़्रेम, Next.js रूट तालिका के बाहर बंडल किए गए WS सर्वर द्वारा संभाले जाते हैं।

प्रमाणीकरण: हैंडशेक के दौरान Bearer API कुंजी।

WebSocket के माध्यम से Responses API (केवल codex)

# HTTP API के समान host:port (डिफ़ॉल्ट 20128); कनेक्शन अपग्रेड करें:
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (या: -H "Authorization: Bearer <OMNIROUTE_API_KEY>")

# पहला फ़्रेम response.create होना अनिवार्य है:
{ "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] }

Responses-API-over-WebSocket प्रॉक्सी विशेष रूप से codex (ChatGPT बैकएंड) से जुड़ी है। यह API/डैशबोर्ड के समान पोर्ट पर /v1/responses, /responses, और /api/v1/responses पथों पर सुनती है। पहले response.create फ़्रेम पर यह आंतरिक codex-responses-ws ब्रिज के माध्यम से प्रमाणीकरण और तैयारी करती है, एक codex OAuth कनेक्शन चुनती है, और wreq-js ट्रांसपोर्ट के माध्यम से wss://chatgpt.com/backend-api/codex/responses तक टनल करती है। गैर-codex मॉडल अस्वीकार कर दिए जाते हैं (codex_ws_provider_required)। कोटा-शेयर रूटिंग के लिए model: "qtSd/<group>/codex/<model>" का उपयोग करें। कार्यान्वयन app/server-ws.mjs + scripts/dev/responses-ws-proxy.mjs + src/app/api/internal/codex-responses-ws/route.ts में है।

प्रमाणीकरण: हैंडशेक के दौरान Bearer API कुंजी। बंडल किया गया HTTP सर्वर (server-ws.mjs) सक्रिय एंट्रीपॉइंट होना चाहिए (app/server-ws.mjs मौजूद होने पर डिफ़ॉल्ट रूप से यही होता है)।

मॉडल आईडी: मूल ChatGPT आईडी का उपयोग करें (codex/ उपसर्ग के बिना)

जब supports_websockets = true होता है, तो OpenAI Codex CLI क्लाइंट-साइड पर मॉडल नाम सत्यापित करता है और codex/gpt-5.5 जैसे प्रदाता-उपसर्ग वाले आईडी अस्वीकार करता है (The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account)। मूल आईडी भेजें (उदाहरण के लिए gpt-5.5)। OmniRoute का ब्रिज केवल codex के लिए है, इसलिए अपस्ट्रीम तक टनल करने से पहले यह मूल आईडी को codex मॉडल के रूप में (resolveCodexWsModelInfo) फिर से रिज़ॉल्व करता है — भले ही मूल gpt-5.5 अन्यथा HTTP के माध्यम से किसी दूसरे प्रदाता पर रूट होता।

OpenAI Codex CLI को कॉन्फ़िगर करना

~/.codex/config.toml में WebSocket समर्थन वाला कस्टम प्रदाता जोड़कर Codex CLI को OmniRoute की ओर निर्देशित करें (मौजूदा कॉन्फ़िगरेशन को प्रभावित करने से बचने के लिए अलग CODEX_HOME का उपयोग करें):

model = "gpt-5.5"                 # मूल आईडी — "codex/gpt-5.5" नहीं
model_provider = "omniroute"

[model_providers.omniroute]
name = "OmniRoute (WS)"
base_url = "http://localhost:20128/v1"   # अंत में स्लैश नहीं; WS URL इससे व्युत्पन्न होता है (प्रोडक्शन में https/wss का उपयोग करें)
wire_api = "responses"                    # Feb 2026 से एकमात्र समर्थित मान
supports_websockets = true                # Responses-over-WS ट्रांसपोर्ट सक्षम करता है
env_key = "OMNIROUTE_API_KEY"             # OmniRoute API कुंजी रखता है (Bearer)
export OMNIROUTE_API_KEY=sk-...           # एक OmniRoute API कुंजी (यदि REQUIRE_API_KEY=false है, तो कोई भी कुंजी)
codex exec "Responda apenas: PONG"

CLI, base_url + /responses को WebSocket में अपग्रेड करता है और OmniRoute इसे चयनित codex OAuth कनेक्शन तक टनल करता है। स्थानीय सर्वर के विरुद्ध शुरू से अंत तक सत्यापित: ChatGPT codex.rate_limits + response.created लौटाता है और पूर्णता को स्ट्रीम करता है।


कोटा और समस्या रिपोर्टिंग

विधि पथ विवरण
GET /v1/quotas/check पंजीकृत कुंजी जारी करने से पहले provider + accountId के लिए कोटा पूर्व-सत्यापित करें
POST /v1/issues/report कोटा/कुंजी जारी करने की विफलता की रिपोर्ट GitHub पर करें (GITHUB_ISSUES_REPO + टोकन आवश्यक)

प्रमाणीकरण: Bearer API कुंजी (isAuthenticated)।


स्वयं-सेवा उपयोग (/api/usage/om-usage)

कोई भी API कुंजी अपने स्वयं के उपयोग और कोटे पढ़ सकती है — प्रबंधन प्रमाणीकरण की आवश्यकता नहीं है। यही वह एंडपॉइंट है जिसका उपयोग क्लाइंट (CLI, OmniCopilot पैनल) किसी कुंजी धारक को उसका खर्च दिखाने के लिए करता है।

# टेक्स्ट प्रारूप (ऐतिहासिक अनुबंध — टर्मिनल के लिए सादा टेक्स्ट)
curl -H "Authorization: Bearer <your-api-key>" \
  http://localhost:20128/api/usage/om-usage

# संरचित प्रारूप — जिसका उपयोग UI करता है
curl -H "Authorization: Bearer <your-api-key>" \
  "http://localhost:20128/api/usage/om-usage?format=json"

कुंजी के लिए allowUsageCommand सक्षम होना चाहिए (डिफ़ॉल्ट रूप से बंद — डैशबोर्ड का API-कुंजी प्रबंधक इसे प्रत्येक कुंजी के लिए टॉगल करता है)। इसके बिना एंडपॉइंट 403 लौटाता है।

?format=json एक विभेदित संरचना लौटाता है, ताकि कॉलर अस्वीकृति की स्थिति में कभी कोई डेटा फ़ील्ड न पढ़े। सफलता की स्थिति में:

{
  "allowed": true,
  // केवल तब मौजूद होता है जब कुंजी ने प्रति-कुंजी उपयोग सीमाएँ (दैनिक/साप्ताहिक USD) चुनी हों:
  "personal": {
    "dailySpentUsd": 1.25,
    "dailyLimitUsd": 5,
    "dailyResetAtIso": "…",
    "weeklySpentUsd": 8,
    "weeklyLimitUsd": 20,
    "weeklyResetAtIso": "…" /*  */,
  },
  // चयनित प्रदाता कोटे का स्नैपशॉट, या यदि अभी तक कुछ भी कैश नहीं हुआ है तो null:
  "provider": {
    "connectionId": "…",
    "provider": "claude",
    "plan": "…",
    "quotas": {/*  */},
  },
  // प्रत्येक कनेक्शन का स्नैपशॉट, ताकि UI कई प्रदाताओं को साथ-साथ प्रस्तुत कर सके:
  "providers": [
    { "connectionId": "…", "provider": "claude" /*  */ },
    { "provider": "codex" /*  */ },
  ],
}

अस्वीकृति की स्थिति में (401 अमान्य कुंजी / 403 अनुमति नहीं) यही रूट { "allowed": false, "error": { "message": "…" } } लौटाता है — मौजूद-लेकिन-रिक्त personal/provider (कुंजी अनुमत है, लेकिन अभी तक कुछ ज्ञात नहीं हुआ) अस्वीकृति से अलग स्थिति है, और केवल JSON प्रारूप इनमें अंतर करता है।

प्रमाणीकरण: कॉलर की अपनी Bearer API कुंजी, जिसे isValidApiKey से सत्यापित किया जाता है — यह प्रबंधन सतह (/api/keys/…) नहीं है, जो requireManagementAuth के पीछे सुरक्षित रहती है।


सिमेंटिक कैश

# कैश के आँकड़े प्राप्त करें
GET /api/cache/stats

# सभी कैश साफ़ करें
DELETE /api/cache/stats

प्रतिक्रिया का उदाहरण:

{
  "semanticCache": {
    "memorySize": 42,
    "memoryMaxSize": 500,
    "dbSize": 128,
    "hitRate": 0.65
  },
  "idempotency": {
    "activeKeys": 3,
    "windowMs": 5000
  }
}

विलंबता पर प्रभाव

सिमेंटिक कैश HIT प्रतिक्रिया को कैश से बिना किसी अपस्ट्रीम कॉल के प्रदान करता है, इसलिए रिपोर्ट की गई X-OmniRoute-Response-Latency लगभग शून्य होती है (मूल अपस्ट्रीम विलंबता चाहे जो भी हो)। विलंबता-संवेदनशील क्लाइंटों (बेंचमार्किंग, p50/p99 मॉनिटरिंग) को X-OmniRoute-Cache-Latency प्रतिक्रिया हेडर की जाँच करनी चाहिए:

मान अर्थ
synthetic प्रतिक्रिया कैश से प्रदान की गई; विलंबता वास्तविक अपस्ट्रीम समय नहीं है
(अनुपस्थित) प्रतिक्रिया वास्तविक अपस्ट्रीम कॉल से आई है

प्रति-कुंजी कैश बाइपास

API कुंजियाँ cacheDefaultMode के माध्यम से सिमेंटिक कैश रीड से बाहर रह सकती हैं:

मान व्यवहार
legacy सामान्य कैश व्यवहार (डिफ़ॉल्ट)
bypass कैश लुकअप को पूरी तरह छोड़ें; हमेशा अपस्ट्रीम को हिट करें

कुंजी बनाते समय (POST /api/keys) सेट करें या (PATCH /api/keys/[id]) अपडेट करें:

{ "cacheDefaultMode": "bypass" }

प्रति-अनुरोध बाइपास

कोई भी अनुरोध कुंजी सेटिंग्स की परवाह किए बिना कैश को बाइपास कर सकता है:

X-OmniRoute-No-Cache: true

डैशबोर्ड और प्रबंधन

प्रबंधन रूट (/api/*, सार्वजनिक auth/login को छोड़कर) सामान्य inference API कुंजियों द्वारा अधिकृत नहीं होते हैं। क्रेडेंशियल प्रकारों, स्कोप और curl उदाहरणों के लिए देखें: प्रबंधन प्रमाणीकरण

प्रमाणीकरण

एंडपॉइंट विधि विवरण
/api/auth/login POST लॉगिन
/api/auth/logout POST लॉगआउट
/api/settings/require-login GET/PUT लॉगिन आवश्यक होना टॉगल करें

प्रोवाइडर प्रबंधन

एंडपॉइंट विधि विवरण
/api/providers GET/POST प्रोवाइडरों को सूचीबद्ध करें / बनाएँ
/api/providers/[id] GET/PUT/DELETE किसी प्रोवाइडर को प्रबंधित करें
/api/providers/[id]/test POST प्रोवाइडर कनेक्शन का परीक्षण करें
/api/providers/[id]/models GET प्रोवाइडर मॉडल सूचीबद्ध करें
/api/providers/validate POST प्रोवाइडर कॉन्फ़िगरेशन को सत्यापित करें
/api/providers/bulk POST एक प्रोवाइडर के लिए बड़ी संख्या में API कुंजियाँ जोड़ें
/api/providers/import POST पार्स की गई CSV/JSON फ़ाइल से विभिन्न प्रोवाइडरों की सूची आयात करें (#6836); प्रत्येक पंक्ति के आंशिक-विफलता परिणाम
/api/provider-nodes* विभिन्न प्रोवाइडर नोड प्रबंधन
/api/provider-models GET/POST/PATCH/DELETE कस्टम मॉडल (जोड़ें, अपडेट करें, छिपाएँ/दिखाएँ, हटाएँ)

OAuth प्रवाह

एंडपॉइंट विधि विवरण
/api/oauth/[provider]/[action] विभिन्न प्रोवाइडर-विशिष्ट OAuth

रूटिंग और कॉन्फ़िगरेशन

एंडपॉइंट विधि विवरण
/api/models/alias GET/POST मॉडल उपनाम
/api/models/catalog GET प्रोवाइडर + प्रकार के अनुसार सभी मॉडल
/api/combos* विभिन्न कॉम्बो प्रबंधन
/api/keys* विभिन्न API कुंजी प्रबंधन
/api/pricing GET मॉडल मूल्य निर्धारण

उपयोग और विश्लेषण

एंडपॉइंट विधि विवरण
/api/usage/history GET उपयोग इतिहास
/api/usage/logs GET उपयोग लॉग
/api/usage/request-logs GET अनुरोध-स्तरीय लॉग
/api/usage/[connectionId] GET प्रति-कनेक्शन उपयोग
/api/usage/token-limits GET/POST/DELETE प्रति-API-कुंजी टोकन-सीमा बजट
/api/usage/model-latency-stats GET प्रति-प्रदाता/मॉडल विलंबता का रोलिंग समुच्चय (औसत/p50/p95/p99, सफलता दर); फ़िल्टर: windowHours/minSamples/maxRows/provider/model (#6873)
/api/usage/cache-health GET call_logs पर प्रॉम्प्ट-कैश स्वास्थ्य सारांश — लेखन/पठन अनुपात, p50/p90/p99 लेखन-आकार वितरण, अत्यधिक लेखन का संकेंद्रण, प्रति-मॉडल विभाजन, और healthy/degraded/thrash/no-data निर्णय; क्वेरी पैरामीटर range (1h|24h|7d|30d, डिफ़ॉल्ट 24h) और वैकल्पिक model (#8827)

सेटिंग्स

एंडपॉइंट विधि विवरण
/api/settings GET/PUT/PATCH सामान्य सेटिंग्स
/api/settings/proxy GET/PUT नेटवर्क प्रॉक्सी कॉन्फ़िगरेशन
/api/settings/proxy/test POST प्रॉक्सी कनेक्शन का परीक्षण करें
/api/settings/ip-filter GET/PUT IP अनुमति-सूची/अवरुद्ध-सूची
/api/settings/thinking-budget GET/PUT चिंतन/तर्क अनुरोध पुनर्लेखन मोड (यथावत / स्वतः-हटाएँ / कस्टम / अनुकूली)। संपीड़न से स्वतंत्र। THINKING_BUDGET.md देखें।
/api/settings/system-prompt GET/PUT वैश्विक सिस्टम प्रॉम्प्ट
/api/settings/compression GET/PUT वैश्विक संपीड़न कॉन्फ़िगरेशन
/api/settings/purge-request-history POST अनुरोध लॉग पंक्तियाँ और स्थानीय कॉल-लॉग आर्टिफ़ैक्ट साफ़ करें

संदर्भ और संपीड़न

Endpoint Method Description
/api/compression/preview POST off/lite/standard/aggressive/ultra/RTK/stacked संपीड़न का पूर्वावलोकन
/api/compression/language-packs GET उपलब्ध Caveman भाषा पैक की सूची
/api/compression/rules GET Caveman नियम मेटाडेटा की सूची
/api/context/caveman/config GET/PUT Caveman-विशिष्ट सेटिंग्स का उपनाम
/api/context/rtk/config GET/PUT कस्टम फ़िल्टर और अपरिष्कृत आउटपुट प्रतिधारण सहित RTK-विशिष्ट सेटिंग्स
/api/context/rtk/filters GET RTK फ़िल्टर कैटलॉग और कस्टम-फ़िल्टर निदान
/api/context/rtk/test POST टेक्स्ट पेलोड पर RTK पूर्वावलोकन/परीक्षण चलाएँ
/api/context/rtk/raw-output/[id] GET पॉइंटर id द्वारा प्रतिधारित संपादित अपरिष्कृत आउटपुट पढ़ें
/api/context/combos GET/POST संपीड़न कॉम्बो की सूची बनाएँ/बनाएँ
/api/context/combos/[id] GET/PUT/DELETE संपीड़न कॉम्बो का विवरण/अपडेट/हटाना
/api/context/combos/[id]/assignments GET/PUT रूटिंग कॉम्बो को संपीड़न कॉम्बो असाइन करें
/api/context/analytics GET संपीड़न एनालिटिक्स का उपनाम

निगरानी

Endpoint Method Description
/api/sessions GET सक्रिय सत्र ट्रैकिंग
/api/rate-limits GET प्रति-अकाउंट दर सीमाएँ
/api/monitoring/health GET स्वास्थ्य जाँच + प्रदाता सारांश (catalogCount, configuredCount, activeCount, monitoredCount)। प्रबंधन दृश्य में credentialHealth शामिल है: प्रोब-कैश स्केलर, failed>0 होने पर failedConnections, और staleDbNonOkCount (SQLite स्टिकी test_status, गेज नहीं)। MONITORING_GUIDE.md देखें।
/api/cache/stats GET/DELETE कैश आँकड़े / साफ़ करें
/api/modality-bridge/stats GET इन-मेमोरी attempts, सफलताएँ/bridged, विफलताएँ, कैश हिट, totalLatencyMs, latencySamples, नमूना-हर वाली averageLatencyMs, और अंतिम-उपयोग समय (पुनः आरंभ करने पर रीसेट; प्रबंधन प्रमाणीकरण)
/api/modality-bridge/video/runtime GET प्रबंधन प्रमाणीकरण/प्रोब से पहले सख्त विश्वसनीय-लूपबैक जाँच; स्वच्छीकृत FFmpeg/ffprobe उपलब्धता और संस्करण (no-store)
/api/modality-bridge/video/extract POST आंतरिक प्रमाणीकृत विश्वसनीय-लूपबैक बाइट ब्रोकर; 50 MiB इनपुट, सीमाबद्ध कतार/32 MiB आउटपुट, 503 क्षमता, 499 डिस्कनेक्ट, 504 समय-सीमा; यह सार्वजनिक अपलोड API नहीं है

बैकअप और निर्यात/आयात

एंडपॉइंट विधि विवरण
/api/db-backups GET उपलब्ध बैकअप सूचीबद्ध करें
/api/db-backups PUT मैन्युअल बैकअप बनाएँ
/api/db-backups POST किसी विशिष्ट बैकअप से पुनर्स्थापित करें
/api/db-backups/export GET डेटाबेस को .sqlite फ़ाइल के रूप में डाउनलोड करें
/api/db-backups/import POST डेटाबेस को बदलने के लिए .sqlite फ़ाइल अपलोड करें
/api/db-backups/exportAll GET पूर्ण बैकअप को .tar.gz आर्काइव के रूप में डाउनलोड करें

क्लाउड सिंक

एंडपॉइंट विधि विवरण
/api/sync/cloud विभिन्न क्लाउड सिंक संचालन
/api/sync/initialize POST सिंक आरंभ करें
/api/cloud/* विभिन्न क्लाउड प्रबंधन

टनल

एंडपॉइंट विधि विवरण
/api/tunnels/cloudflared GET डैशबोर्ड के लिए Cloudflare Quick Tunnel की इंस्टॉल/रनटाइम स्थिति पढ़ें
/api/tunnels/cloudflared POST Cloudflare Quick Tunnel को सक्षम या अक्षम करें (action=enable/disable)
/api/tunnels/ngrok GET डैशबोर्ड के लिए ngrok Tunnel की रनटाइम स्थिति पढ़ें
/api/tunnels/ngrok POST ngrok Tunnel को सक्षम या अक्षम करें (action=enable/disable)

CLI टूल

एंडपॉइंट विधि विवरण
/api/cli-tools/claude-settings GET Claude CLI स्थिति
/api/cli-tools/codex-settings GET Codex CLI स्थिति
/api/cli-tools/droid-settings GET Droid CLI स्थिति
/api/cli-tools/openclaw-settings GET OpenClaw CLI स्थिति
/api/cli-tools/runtime/[toolId] GET सामान्य CLI रनटाइम

CLI प्रतिक्रियाओं में शामिल हैं: installed, runnable, command, commandPath, runtimeMode, reason

ACP एजेंट

एंडपॉइंट विधि विवरण
/api/acp/agents GET स्थिति सहित सभी पहचाने गए एजेंट (अंतर्निर्मित + कस्टम) सूचीबद्ध करें
/api/acp/agents POST कस्टम एजेंट जोड़ें या डिटेक्शन कैश रीफ़्रेश करें
/api/acp/agents DELETE id क्वेरी पैरामीटर द्वारा किसी कस्टम एजेंट को हटाएँ

GET प्रतिक्रिया में agents[] (id, name, binary, version, installed, protocol, isCustom) और summary (total, installed, notFound, builtIn, custom) शामिल हैं।

प्रत्यास्थता और दर सीमाएँ

एंडपॉइंट विधि विवरण
/api/resilience GET/PATCH अनुरोध कतार, कनेक्शन कूलडाउन, प्रोवाइडर ब्रेकर और प्रतीक्षा सेटिंग प्राप्त/अपडेट करें
/api/resilience/reset POST प्रोवाइडर सर्किट ब्रेकर रीसेट करें
/api/resilience/model-cooldowns GET शेष समय के अनुसार क्रमबद्ध सक्रिय प्रति-(प्रोवाइडर, कनेक्शन, मॉडल) लॉकआउट सूचीबद्ध करें
/api/resilience/model-cooldowns DELETE मॉडल लॉकआउट साफ़ करें — बॉडी {provider, model} या सब कुछ मिटाने के लिए {all: true}
/api/rate-limits GET प्रति-अकाउंट दर सीमा स्थिति
/api/rate-limit GET वैश्विक दर सीमा कॉन्फ़िगरेशन

सभी चार /api/resilience/* रूट के लिए प्रबंधन प्रमाणीकरण (requireManagementAuth) आवश्यक है। प्रोवाइडर ब्रेकर बनाम कनेक्शन कूलडाउन बनाम मॉडल लॉकआउट के पूर्ण विवरण के लिए प्रत्यास्थता (विस्तृत) देखें।

मूल्यांकन

एंडपॉइंट विधि विवरण
/api/evals GET/POST मूल्यांकन सुइट सूचीबद्ध करें / मूल्यांकन चलाएँ

नीतियाँ

एंडपॉइंट विधि विवरण
/api/policies GET/POST/DELETE रूटिंग नीतियाँ प्रबंधित करें

अनुपालन

एंडपॉइंट विधि विवरण
/api/compliance/audit-log GET अनुपालन ऑडिट लॉग (अंतिम N)

v1beta (Gemini-संगत)

एंडपॉइंट विधि विवरण
/v1beta/models GET Gemini प्रारूप में मॉडल सूचीबद्ध करें
/v1beta/models/{...path} POST Gemini generateContent एंडपॉइंट

ये एंडपॉइंट उन क्लाइंट के लिए Gemini के API प्रारूप को प्रतिबिंबित करते हैं, जिन्हें मूल Gemini SDK संगतता अपेक्षित है।

आंतरिक / सिस्टम API

एंडपॉइंट विधि विवरण
/api/init GET एप्लिकेशन आरंभीकरण जाँच (पहली बार चलाने पर प्रयुक्त)
/api/tags GET Ollama-संगत मॉडल टैग (Ollama क्लाइंट के लिए)
/api/restart POST सर्वर को सुचारु रूप से पुनः आरंभ करना
/api/shutdown POST सर्वर को सुचारु रूप से बंद करना
/api/system/env/repair POST OAuth प्रदाता के पर्यावरण वेरिएबल की मरम्मत करना

नोट: इन एंडपॉइंट का उपयोग सिस्टम द्वारा आंतरिक रूप से या Ollama क्लाइंट संगतता के लिए किया जाता है। आमतौर पर अंतिम उपयोगकर्ता इन्हें कॉल नहीं करते हैं।

OAuth पर्यावरण मरम्मत (v3.6.1+)

POST /api/system/env/repair
Content-Type: application/json

{
  "provider": "claude-code"
}

किसी विशिष्ट प्रदाता के अनुपलब्ध या दूषित OAuth पर्यावरण वेरिएबल की मरम्मत करता है। यह लौटाता है:

{
  "success": true,
  "repaired": ["CLAUDE_CODE_OAUTH_CLIENT_ID", "CLAUDE_CODE_OAUTH_CLIENT_SECRET"],
  "backupPath": "/home/user/.omniroute/backups/env-repair-2026-04-11.bak"
}

ऑडियो ट्रांसक्रिप्शन

POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data

किसी भी कॉन्फ़िगर किए गए STT प्रदाता का उपयोग करके ऑडियो फ़ाइलों को ट्रांसक्राइब करें। पहला पथ खंड मूल प्रदाता (openai/…, deepgram/…) का चयन करता है। किसी अन्य विक्रेता के मॉडल को पुनः निर्यात करने वाले गेटवे एक क्वालिफ़ाइड आईडी (openrouter/deepgram/nova-3) का उपयोग करते हैं।

अनुरोध:

curl -X POST http://localhost:20128/v1/audio/transcriptions \
  -H "Authorization: Bearer your-api-key" \
  -F "file=@recording.mp3" \
  -F "model=openai/whisper-1"

प्रतिक्रिया:

{
  "text": "Hello, this is the transcribed audio content.",
  "task": "transcribe",
  "language": "en",
  "duration": 12.5
}

उदाहरण मॉडल आईडी: openai/whisper-1 (एक OpenAI कुंजी आवश्यक है), openrouter/deepgram/nova-3 (एक OpenRouter कुंजी आवश्यक है), deepgram/nova-3 (एक मूल Deepgram कुंजी आवश्यक है)। केवल deepgram/nova-3 वाला अनुरोध OpenRouter का उपयोग नहीं करता है।

समर्थित प्रारूप: mp3, wav, m4a, flac, ogg, webm


Ollama संगतता

Ollama के API प्रारूप का उपयोग करने वाले क्लाइंट के लिए:

# चैट एंडपॉइंट (Ollama प्रारूप)
POST /v1/api/chat

# मॉडल सूची (Ollama प्रारूप)
GET /api/tags

अनुरोधों को Ollama और आंतरिक प्रारूपों के बीच स्वचालित रूप से रूपांतरित किया जाता है।

टोकनयुक्त VS Code / हेडर-रहित उपनाम

जब कोई इंटीग्रेशन Authorization हेडर इंजेक्ट नहीं कर सकता और उसे API कुंजी को बेस URL में एम्बेड करना होता है, तब इन उपनामों का उपयोग करें।

# OpenAI-शैली का कैटलॉग उपनाम
GET /api/v1/vscode/{token}/
GET /api/v1/vscode/{token}/models

# OpenAI-शैली के चैट उपनाम
POST /api/v1/vscode/{token}/chat/completions
POST /api/v1/vscode/{token}/responses

# Ollama-शैली के उपनाम
POST /api/v1/vscode/{token}/api/chat
GET /api/v1/vscode/{token}/api/tags

उदाहरण:

curl https://your-host.example/api/v1/vscode/YOUR_API_KEY/models
curl -X POST https://your-host.example/api/v1/vscode/YOUR_API_KEY/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"auto","messages":[{"role":"user","content":"hello"}]}'

टिप्पणियाँ:

  • टोकनयुक्त उपनाम /v1/* और /api/tags वाले ही हैंडलर का पुनः उपयोग करते हैं; प्रतिक्रिया की संरचनाएँ समान रहती हैं।
  • जब भी क्लाइंट कस्टम हेडर का समर्थन करता हो, Authorization: Bearer ... को प्राथमिकता दें।
  • URL-आधारित टोकन रिवर्स-प्रॉक्सी लॉग, ब्राउज़र इतिहास और OmniRoute के बाहर की टेलीमेट्री में दिखाई दे सकते हैं। इन्हें डिफ़ॉल्ट प्रमाणीकरण मोड के बजाय एक संगतता विकल्प मानें।

टेलीमेट्री

# विलंबता टेलीमेट्री सारांश प्राप्त करें (प्रति प्रदाता p50/p95/p99)
GET /api/telemetry/summary

प्रतिक्रिया:

{
  "providers": {
    "claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 },
    "github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 }
  }
}

बजट

# सभी API कुंजियों के लिए बजट स्थिति प्राप्त करें
GET /api/usage/budget

# बजट सेट या अपडेट करें
POST /api/usage/budget
Content-Type: application/json

{
  "apiKeyId": "key-123",
  "dailyLimitUsd": 5.00,
  "weeklyLimitUsd": 30.00,
  "monthlyLimitUsd": 100.00,
  "warningThreshold": 0.8,
  "resetInterval": "monthly"
}

स्कीमा संबंधी टिप्पणियाँ (setBudgetSchema): apiKeyId आवश्यक है; dailyLimitUsd, weeklyLimitUsd, या monthlyLimitUsd में से कम-से-कम एक का मान शून्य से अधिक होना चाहिए। वैकल्पिक फ़ील्ड: warningThreshold (01), resetInterval (daily | weekly | monthly), resetTime (HH:MM)। पुराना {keyId, limit, period} प्रारूप 400 Bad Request लौटाता है।

टोकन सीमाएँ

प्रति-API-कुंजी टोकन बजट (ऊपर दिए गए USD-आधारित बजट से अलग)। अनुरोध पथ पर ही लागू किए जाते हैं: जब किसी कुंजी की वर्तमान विंडो का उपयोग उसकी सीमा तक पहुँच जाता है, तो अनुरोधों को 429 Too Many Requests के साथ अस्वीकार कर दिया जाता है। सीमाओं को किसी विशिष्ट model, किसी provider तक सीमित किया जा सकता है, या पूरी कुंजी पर global रूप से लागू किया जा सकता है; जब किसी अनुरोध पर कई सीमाएँ लागू होती हैं, तो सबसे अधिक प्रतिबंधात्मक सीमा प्रभावी होती है।

# किसी कुंजी की टोकन सीमाएँ सूचीबद्ध करें (इसमें लाइव विंडो उपयोग शामिल है)
GET /api/usage/token-limits?apiKeyId=key-123

# टोकन सीमा बनाएँ या अपडेट करें
POST /api/usage/token-limits
Content-Type: application/json

{
  "apiKeyId": "key-123",
  "scopeType": "model",
  "scopeValue": "openai/gpt-4o",
  "tokenLimit": 1000000,
  "resetInterval": "monthly",
  "enabled": true
}

# id द्वारा टोकन सीमा हटाएँ
DELETE /api/usage/token-limits?id=tl-abc

स्कीमा संबंधी टिप्पणियाँ (setTokenLimitSchema): apiKeyId और scopeType (model | provider | global) आवश्यक हैं। जब तक scopeType, global न हो, scopeValue आवश्यक है (उदा. model स्कोप के लिए मॉडल id, provider स्कोप के लिए प्रदाता id)। tokenLimit एक धनात्मक पूर्णांक होना चाहिए (स्ट्रिंग से रूपांतरित)। वैकल्पिक: id (बनाने के लिए छोड़ दें, अपडेट करने के लिए प्रदान करें), resetInterval (daily | weekly | monthly, डिफ़ॉल्ट monthly), resetTime (HH:MM), enabled (डिफ़ॉल्ट true)। GET प्रतिक्रियाएँ प्रत्येक सीमा को tokensUsed, remaining, windowStart, periodStartAt, और nextResetAt से समृद्ध करती हैं। यह एक प्रबंधन-श्रेणी का एंडपॉइंट है (प्रमाणीकरण authz पाइपलाइन द्वारा केंद्रीय रूप से लागू किया जाता है)।

अनुरोध प्रसंस्करण

  1. क्लाइंट /v1/* को अनुरोध भेजता है
  2. रूट हैंडलर handleChat, handleEmbedding, handleAudioTranscription, या handleImageGeneration को कॉल करता है
  3. मॉडल का निर्धारण किया जाता है (प्रत्यक्ष प्रदाता/मॉडल या उपनाम/कॉम्बो)
  4. खाता उपलब्धता फ़िल्टरिंग के साथ स्थानीय DB से क्रेडेंशियल चुने जाते हैं
  5. चैट के लिए: handleChatCore सिमेंटिक/सिग्नेचर कैश की जाँच करता है और कॉम्बो संपीड़न सेटिंग्स निर्धारित करता है
  6. सक्षम होने पर प्रदाता अनुवाद से पहले सक्रिय संपीड़न चलता है (lite, Caveman, RTK, या स्टैक्ड)
  7. प्रदाता एक्ज़ीक्यूटर अपस्ट्रीम अनुरोध भेजता है
  8. प्रतिक्रिया को वापस क्लाइंट प्रारूप में अनुवादित किया जाता है (चैट) या जैसी है वैसी लौटाई जाती है (एम्बेडिंग/इमेज/ऑडियो)
  9. उपयोग, संपीड़न विश्लेषण और अनुरोध लॉग रिकॉर्ड किए जाते हैं
  10. त्रुटियाँ होने पर कॉम्बो नियमों के अनुसार फ़ॉलबैक लागू होता है

पूर्ण आर्किटेक्चर संदर्भ: ARCHITECTURE.md


कॉम्बो प्रबंधन

उच्च-स्तरीय रूटिंग कॉम्बो (जिनका सारांश पहले ही /api/combos* के अंतर्गत दिया गया है) को मॉडल id पैटर्न से 1:1 मैप भी किया जा सकता है, जिससे OpenAI-शैली मॉडल id को पारदर्शी रूप से किसी कॉम्बो पर रीडायरेक्ट किया जा सकता है।

विधि पथ विवरण
GET /api/model-combo-mappings सभी मॉडल→कॉम्बो मैपिंग सूचीबद्ध करें
POST /api/model-combo-mappings मैपिंग बनाएँ — बॉडी: {pattern, comboId, priority?, enabled?, description?}
GET /api/model-combo-mappings/[id] एक मैपिंग प्राप्त करें
PUT /api/model-combo-mappings/[id] किसी मौजूदा मैपिंग के फ़ील्ड अपडेट करें
DELETE /api/model-combo-mappings/[id] मैपिंग हटाएँ

प्रमाणीकरण: प्रबंधन सत्र/API कुंजी (requireManagementAuth)।


वेबहुक्स

OmniRoute इवेंट्स (अनुरोध पूर्ण होना, कोटा समाप्त होना, कुंजी रोटेशन आदि) के लिए आउटबाउंड वेबहुक सदस्यताएँ।

विधि पथ विवरण
GET /api/webhooks वेबहुक्स की सूची दिखाएँ (सीक्रेट्स को <prefix>... के रूप में छिपाया जाता है)
POST /api/webhooks वेबहुक बनाएँ — बॉडी: {url, events?: ["*"], secret?, description?}
GET /api/webhooks/[id] कोई वेबहुक प्राप्त करें
PUT /api/webhooks/[id] url/events/secret/description अपडेट करें
DELETE /api/webhooks/[id] कोई वेबहुक हटाएँ
POST /api/webhooks/[id]/test वेबहुक URL पर एक परीक्षण पेलोड भेजें और डिलीवरी स्थिति लौटाएँ

प्रमाणीकरण: प्रबंधन सत्र/API कुंजी (requireManagementAuth)।


पंजीकृत कुंजियाँ (स्वतः-प्रबंधन)

दैनिक/प्रति-घंटा कोटा के साथ किसी बैकिंग प्रदाता/अकाउंट के लिए API कुंजियाँ जारी और रोटेट करने हेतु स्वतः-कुंजी प्रबंधन उपप्रणाली द्वारा उपयोग किया जाता है।

विधि पथ विवरण
GET /api/v1/registered-keys पंजीकृत कुंजियों की सूची दिखाएँ (केवल छिपाया गया प्रीफ़िक्स)
POST /api/v1/registered-keys नई पंजीकृत कुंजी जारी करें — बॉडी: {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}। रॉ कुंजी केवल एक बार लौटाता है। कोटा के कारण अस्वीकृति पर 429 लौटाता है।
GET /api/v1/registered-keys/[id] किसी पंजीकृत कुंजी का मेटाडेटा प्राप्त करें (कोई रॉ सामग्री नहीं)
DELETE /api/v1/registered-keys/[id] किसी पंजीकृत कुंजी को निरस्त करें
POST /api/v1/registered-keys/[id]/revoke स्पष्ट निरस्तीकरण एंडपॉइंट (DELETE के समान प्रभाव)

प्रमाणीकरण: Bearer API कुंजी (isAuthenticated)। /v1/quotas/check और /v1/issues/report भी देखें।


एजेंट्स प्रोटोकॉल

OmniRoute उपयोगकर्ताओं की ओर से दूरस्थ रूप से निष्पादित क्लाउड एजेंट कार्य (Claude Code, Codex Cloud, OpenHands, आदि)।

विधि पथ विवरण
GET /api/v1/agents/tasks कार्यों की सूची — वैकल्पिक ?provider=, ?status=, ?limit= (1500, डिफ़ॉल्ट 50)
POST /api/v1/agents/tasks कार्य बनाएँ — बॉडी को CreateCloudAgentTaskSchema (providerId, prompt, source, options?) द्वारा सत्यापित किया जाता है। टास्क एनवेलप के साथ 201 लौटाता है
DELETE /api/v1/agents/tasks?id=... कोई कार्य हटाएँ
GET /api/v1/agents/tasks/[id] कार्य पढ़ें — external_id सेट होने पर अपस्ट्रीम क्लाउड एजेंट से स्थिति को सिंक्रोनस रूप से रीफ़्रेश करता है
POST /api/v1/agents/tasks/[id] विभेदित कार्रवाई: {action: "approve"}, {action: "message", message}, या {action: "cancel"}
DELETE /api/v1/agents/tasks/[id] id द्वारा कोई विशिष्ट कार्य हटाएँ

प्रमाणीकरण: प्रत्येक विधि पर प्रबंधन प्रमाणीकरण आवश्यक है (requireCloudAgentManagementAuth)। v3.8.0 से पहले ये अप्रमाणीकृत थे — ब्रेकिंग बदलाव के लिए कमिट 588a0333 देखें।

# Claude Code क्लाउड कार्य बनाएँ
curl -X POST http://localhost:20128/api/v1/agents/tasks \
  -H "Authorization: Bearer your-management-key" \
  -H "Content-Type: application/json" \
  -d '{"providerId":"claude-code-cloud","prompt":"Fix the failing test","source":{"repo":"...","branch":"..."}}'

प्रबंधन प्रॉक्सी

आउटबाउंड HTTP(S)/SOCKS प्रॉक्सी जिन्हें प्रदाताओं, खातों या वैश्विक रूप से असाइन किया जा सकता है।

विधि पथ विवरण
GET /api/v1/management/proxies प्रॉक्सी की सूची (?id= के साथ एक प्रॉक्सी लौटाता है; ?id=&where_used=1 के साथ असाइनमेंट ग्राफ़ लौटाता है)
POST /api/v1/management/proxies प्रॉक्सी बनाएँ — बॉडी को createProxyRegistrySchema द्वारा सत्यापित किया जाता है
PATCH /api/v1/management/proxies प्रॉक्सी अपडेट करें — बॉडी को updateProxyRegistrySchema द्वारा सत्यापित किया जाता है (id आवश्यक)
DELETE /api/v1/management/proxies?id=...&force=1 प्रॉक्सी हटाएँ (असाइनमेंट अलग करने के लिए force=1 का उपयोग करें)
GET /api/v1/management/proxies/assignments असाइनमेंट की सूची — proxy_id, scope, scope_id द्वारा फ़िल्टर की जा सकती है; किसी कनेक्शन के लिए सक्रिय प्रॉक्सी निर्धारित करने हेतु resolve_connection_id=<id> पास करें
PUT /api/v1/management/proxies/assignments असाइन करें — बॉडी को proxyAssignmentSchema ({scope, scopeId?, proxyId?}) द्वारा सत्यापित किया जाता है। डिस्पैचर कैश साफ़ करता है
PUT /api/v1/management/proxies/bulk-assign बल्क-असाइन करें — बॉडी को bulkProxyAssignmentSchema ({scope, scopeIds[], proxyId?}) द्वारा सत्यापित किया जाता है
GET /api/v1/management/proxies/health?hours=24 एक समयावधि के दौरान समग्र प्रॉक्सी स्वास्थ्य (सफलता/विफलता की संख्या, विलंबता)

प्रमाणीकरण: प्रत्येक रूट पर प्रबंधन सत्र/API कुंजी (requireManagementAuth) आवश्यक है।

कार्य विवरण के POST /api/v1/management/proxies/[id]/assignments और POST /api/v1/management/proxies/[id]/health ऊपर दिखाए गए फ़्लैट /assignments और /health रूट द्वारा सर्व किए जाते हैं — कोडबेस में प्रति-id सबरूट नहीं हैं।


लचीलापन (विस्तृत)

OmniRoute अस्थायी विफलता के लिए तीन स्वतंत्र तंत्र उपलब्ध कराता है; नीचे दिए गए प्रबंधन एंडपॉइंट ऑपरेटरों को उन्हें देखने और ओवरराइड करने की सुविधा देते हैं:

दायरा स्थिति संग्रहण देखें रीसेट / साफ़ करें
प्रदाता ब्रेकर domain_circuit_breakers + इन-मेमोरी /api/monitoring/health POST /api/resilience/reset
कनेक्शन कूलडाउन प्रदाता कनेक्शन पर rateLimitedUntil /api/rate-limits, /api/providers/[id] (आवश्यकता पड़ने पर पुनः सक्षम होता है; प्रदाता PUT के माध्यम से साफ़ करें)
मॉडल लॉकआउट इन-मेमोरी मॉडल-उपलब्धता रजिस्ट्री GET /api/resilience/model-cooldowns DELETE /api/resilience/model-cooldowns

PATCH /api/resilience, providerBreaker.oauth और providerBreaker.apikey के अंतर्गत प्रदाता ब्रेकर ओवरराइड स्वीकार करता है। प्रत्येक प्रोफ़ाइल degradationThreshold, failureThreshold, और resetTimeoutMs का समर्थन करती है; यही फ़ील्ड Dashboard → Settings → Resilience में भी उपलब्ध हैं।

# किसी एक मॉडल लॉकआउट को साफ़ करें
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
  -H "Cookie: auth_token=..." \
  -H "Content-Type: application/json" \
  -d '{"provider":"openai","model":"gpt-4o-mini"}'

# प्रत्येक लॉकआउट को मिटाएँ
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
  -H "Cookie: auth_token=..." \
  -d '{"all":true}'

संपूर्ण वैचारिक संदर्भ और ब्रेकर के डिफ़ॉल्ट मानों के लिए: CLAUDE.md → "लचीलापन रनटाइम स्थिति" देखें।


कौशल

कस्टम निष्पादन योग्य हैंडलरों और मार्केटप्लेस एकीकरण के साथ OmniRoute का विस्तार करने के लिए कौशल फ़्रेमवर्क।

विधि पथ विवरण
GET /api/skills इंस्टॉल किए गए कौशलों की सूची — ?q=, ?mode=on|off|auto, ?source=skillsmp|skillssh|local द्वारा फ़िल्टर योग्य, पृष्ठांकित
GET /api/skills/[id] एक कौशल प्राप्त करें
PUT /api/skills/[id] कौशल अपडेट करें (नाम, विवरण, मोड, स्कीमा, हैंडलर, टैग)
DELETE /api/skills/[id] किसी कौशल को अनइंस्टॉल करें
POST /api/skills/install रॉ मैनिफ़ेस्ट से कौशल इंस्टॉल करें — बॉडी: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?}
GET /api/skills/executions हालिया कौशल निष्पादनों की सूची (इनपुट/आउटपुट/अवधि सहित ऑडिट ट्रेल)
GET /api/skills/marketplace?q=... SkillsMP मार्केटप्लेस से खोज/लोकप्रिय सूची (skillsmpApiKey सेटिंग आवश्यक)
POST /api/skills/marketplace/install SkillsMP से id द्वारा कौशल इंस्टॉल करें
GET /api/skills/skillssh?q=&limit= skills.sh रजिस्ट्री खोजें
POST /api/skills/skillssh/install skills.sh से id द्वारा कौशल इंस्टॉल करें

प्रमाणीकरण: प्रबंधन सत्र/API कुंजी। मार्केटप्लेस खोज रूट प्रबंधन प्रमाणीकरण या Bearer API कुंजी (isAuthenticated) में से किसी एक को स्वीकार करते हैं।


मेमोरी

स्थायी संवादात्मक/तथ्यात्मक मेमोरी स्टोर, जो प्रत्येक API key / session के अनुसार सीमित है।

विधि पथ विवरण
GET /api/memory मेमोरी की सूची — ?apiKeyId=, ?type=, ?sessionId=, ?q=, offset/limit या page/limit पेजिनेशन के साथ
POST /api/memory मेमोरी बनाएँ — Zod द्वारा सत्यापित बॉडी: {content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}
GET /api/memory/[id] एक मेमोरी प्राप्त करें
DELETE /api/memory/[id] एक मेमोरी हटाएँ
GET /api/memory/health मेमोरी सबसिस्टम की स्थिति (DB कनेक्टिविटी, embeddings बैकएंड, vector index स्थिति)

प्रमाणीकरण: प्रबंधन session/API key (requireManagementAuth)। type enum: FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (src/lib/memory/types.ts में MemoryType देखें)।


MCP सर्वर

OmniRoute में 3 ट्रांसपोर्ट (stdio, SSE, streamable-http) और सीमित-स्कोप वाले टूल्स के साथ एक अंतर्निहित Model Context Protocol सर्वर शामिल है। नीचे दिए गए डैशबोर्ड एंडपॉइंट स्थिति/ऑडिट डेटा पढ़ते हैं और HTTP ट्रांसपोर्ट को प्रॉक्सी करते हैं।

विधि पथ विवरण
GET /api/mcp/status हार्टबीट, ट्रांसपोर्ट, ऑनलाइन स्थिति, अंतिम कॉल, प्रमुख टूल्स, 24 घंटे की सफलता दर
GET /api/mcp/tools name, description, scopes, phase, auditLevel, sourceEndpoints सहित MCP टूल्स की सूची
GET /api/mcp/sse SSE ट्रांसपोर्ट के लिए SSE स्ट्रीम खोलें (MCP अक्षम होने या ट्रांसपोर्ट मेल न खाने पर 503 लौटाता है)
POST /api/mcp/sse SSE ट्रांसपोर्ट पर JSON-RPC फ्रेम भेजें
GET /api/mcp/stream Streamable HTTP ट्रांसपोर्ट का SSE पक्ष खोलें (सर्वर द्वारा आरंभ किए गए संदेश)
POST /api/mcp/stream Streamable HTTP ट्रांसपोर्ट पर JSON-RPC फ्रेम भेजें
DELETE /api/mcp/stream Streamable HTTP session समाप्त करें
GET /api/mcp/audit ऑडिट लॉग क्वेरी करें — ?limit=, ?offset=, ?tool=, `?success=true false, ?apiKeyId=`
GET /api/mcp/audit/stats समेकित ऑडिट आँकड़े (कुल संख्या, सफलता दर, औसत अवधि, प्रमुख टूल्स)

प्रमाणीकरण: sse/stream ट्रांसपोर्ट MCP-विशिष्ट प्रमाणीकरण सतह (mcp स्कोप वाली Bearer API key) का पालन करते हैं; status/tools/audit* रूट डैशबोर्ड से पढ़े जा सकते हैं (डैशबोर्ड होस्ट तक पहुँचने के अतिरिक्त किसी प्रमाणीकरण की आवश्यकता नहीं है)।

दोनों HTTP ट्रांसपोर्ट settings.mcpEnabled और settings.mcpTransport द्वारा नियंत्रित होते हैं — ट्रांसपोर्ट मेल न खाने पर 400 और MCP अक्षम होने पर 503 लौटाया जाता है।


A2A सर्वर

OmniRoute निरीक्षण/डैशबोर्ड उपयोग के लिए एक A2A (एजेंट-से-एजेंट) JSON-RPC 2.0 एंडपॉइंट और एक REST रैपर उपलब्ध कराता है।

JSON-RPC

POST /a2a
Authorization: Bearer your-api-key   # वैकल्पिक, जब तक OMNIROUTE_API_KEY सेट न हो
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "message/send",
  "params": {
    "skill": "smart-routing",
    "messages": [{"role": "user", "content": "Route this coding task"}]
  }
}

समर्थित विधियाँ (सभी settings.a2aEnabled द्वारा नियंत्रित):

विधि विवरण
message/send सिंक्रोनस कौशल निष्पादन; {task, artifacts, metadata} लौटाता है
message/stream उसी कौशल-समूह का स्ट्रीमिंग SSE निष्पादन
tasks/get taskId द्वारा कोई कार्य प्राप्त करें
tasks/cancel taskId द्वारा कोई कार्य रद्द करें

अंतर्निहित कौशल: smart-routing, quota-management, provider-discovery, cost-analysis, health-report

एजेंट कार्ड

GET /.well-known/agent.json

सार्वजनिक A2A एजेंट कार्ड (नाम, विवरण, क्षमताएँ, कौशल कैटलॉग, प्रमाणीकरण योजना) लौटाता है — सार्वजनिक रूप से 1h के लिए कैश किया जाता है। प्रमाणीकरण आवश्यक नहीं है।

REST सहायक

विधि पथ विवरण
GET /api/a2a/status A2A सक्षम स्थिति + कार्य आँकड़े + कैश किए गए एजेंट कार्ड का सारांश
GET /api/a2a/tasks कार्य सूचीबद्ध करें — ?state=submitted|working|completed|failed|cancelled, ?skill=, ?limit= (≤200), ?offset=
POST /api/a2a/tasks (REST सहायक के रूप में लागू नहीं किया गया — JSON-RPC message/send के माध्यम से बनाएँ)
GET /api/a2a/tasks/[id] एक कार्य प्राप्त करें
POST /api/a2a/tasks/[id]/cancel कोई कार्य रद्द करें

प्रमाणीकरण: REST सहायक प्रबंधन प्रमाणीकरण के बिना चलते हैं (डैशबोर्ड द्वारा पठनीय); कॉन्फ़िगर किए जाने पर JSON-RPC /a2a रूट Bearer OMNIROUTE_API_KEY का उपयोग करता है।


क्लाउड, मूल्यांकन और आकलन

विधि पथ विवरण
POST /api/cloud/auth Bearer कुंजी सत्यापित करें और क्लाउड सिंक क्लाइंट के लिए मास्क किए गए प्रदाता कनेक्शन + मॉडल उपनाम लौटाएँ
POST /api/cloud/credentials/update क्लाउड-सिंक किए गए प्रदाता के एन्क्रिप्टेड क्रेडेंशियल अपडेट करें
POST /api/cloud/model/resolve स्थानीय रूटिंग तालिका का उपयोग करके किसी तार्किक मॉडल आईडी को ठोस प्रदाता/मॉडल में रिज़ॉल्व करें
GET /api/cloud/models/alias क्लाउड सिंक के लिए उपलब्ध कराए गए मॉडल उपनाम सूचीबद्ध करें
GET /api/assess नवीनतम आकलन वर्गीकरण पढ़ें (प्रति-प्रदाता/मॉडल)
POST /api/assess आकलन चलाएँ — बॉडी: `{scope: {type:"all"} {type:"provider", providerId} {type:"model", modelId}, trigger?}`
GET /api/evals अंतर्निहित मूल्यांकन सुइट + सबसे हालिया रन सूचीबद्ध करें
POST /api/evals मूल्यांकन रन ट्रिगर करें
POST /api/evals/suites कस्टम मूल्यांकन सुइट बनाएँ — बॉडी evalSuiteSaveSchema द्वारा सत्यापित
GET /api/evals/suites/[id] कस्टम मूल्यांकन सुइट प्राप्त करें

प्रमाणीकरण: /api/cloud/auth सीधे Bearer कुंजी को सत्यापित करता है; अन्य /api/cloud/*, /api/evals/*, और /api/assess रूट के लिए प्रबंधन सत्र/API कुंजी आवश्यक है। /api/assess POST एक विभेदित-यूनियन स्कोप स्कीमा के साथ validateBody का उपयोग करता है।


ACP (Agent Client Protocol) प्रबंधन

चाइल्ड प्रोसेस के रूप में। ये एंडपॉइंट ACP एजेंट की पहचान और कस्टम एजेंट पंजीकरण का प्रबंधन करते हैं।

विधि पथ विवरण
GET /api/acp/agents इंस्टॉलेशन स्थिति, वर्ज़न और बाइनरी सहित सभी ज्ञात CLI एजेंट (अंतर्निहित + कस्टम) सूचीबद्ध करें
POST /api/acp/agents कस्टम ACP एजेंट पंजीकृत करें या कैश रीफ़्रेश करें — बॉडी: {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} या {action: "refresh"}
DELETE /api/acp/agents कस्टम ACP एजेंट हटाएँ — क्वेरी पैरामीटर: ?id=<agentId>

प्रतिक्रिया का उदाहरण (GET /api/acp/agents):

{
  "agents": [
    {
      "id": "claude",
      "name": "Claude Code CLI",
      "binary": "claude",
      "version": "1.0.45",
      "installed": true,
      "protocol": "stdio",
      "providerAlias": "claude",
      "isCustom": false
    },
    {
      "id": "my-custom-cli",
      "name": "My Custom CLI",
      "installed": false,
      "protocol": "stdio",
      "providerAlias": "my-provider",
      "isCustom": true
    }
  ],
  "cacheTtlMs": 60000,
  "cacheAge": 1234
}

प्रमाणीकरण: प्रबंधन सत्र (डैशबोर्ड auth_token कुकी) या प्रबंधन-स्कोप वाली API कुंजी आवश्यक है।

पूर्ण विवरण के लिए ACP फ़्रेमवर्क देखें।


एनालिटिक्स और ऑब्ज़र्वेबिलिटी

रूटिंग, कंप्रेशन और प्रोवाइडर विविधता की निगरानी के लिए रियल-टाइम एनालिटिक्स एंडपॉइंट। ये /dashboard/analytics/* पेजों को संचालित करते हैं।

ऑटो-रूटिंग एनालिटिक्स

विधि पथ विवरण
GET /api/analytics/auto-routing समेकित ऑटो-रूटिंग आँकड़े: कुल कॉल, रणनीति वितरण, टियर वितरण, शीर्ष प्रोवाइडर
GET /api/analytics/auto-routing?days=7 समय-सीमा वाले आँकड़े (डिफ़ॉल्ट 24 घंटे)

प्रतिक्रिया का उदाहरण:

{
  "window": "24h",
  "totalCalls": 1234,
  "strategyBreakdown": {
    "rules": 800,
    "cost": 200,
    "latency": 150,
    "sla-aware": 50,
    "lkgp": 34
  },
  "tierBreakdown": {
    "ultra": 100,
    "pro": 500,
    "standard": 400,
    "free": 234
  },
  "topProviders": [
    { "provider": "openai", "calls": 500, "avgLatencyMs": 850 },
    { "provider": "anthropic", "calls": 300, "avgLatencyMs": 1200 }
  ]
}

कंप्रेशन एनालिटिक्स

विधि पथ विवरण
GET /api/analytics/compression समेकित कंप्रेशन आँकड़े: बचाए गए टोकन, बचत %, मोड वितरण, इंजन उपयोग

प्रतिक्रिया का उदाहरण:

{
  "window": "24h",
  "totalOriginalTokens": 5000000,
  "totalCompressedTokens": 3500000,
  "totalSavings": 1500000,
  "savingsPct": 30.0,
  "modeBreakdown": {
    "lite": 400,
    "standard": 600,
    "aggressive": 100,
    "ultra": 50,
    "rtk": 84
  },
  "engineBreakdown": {
    "caveman": 800,
    "rtk": 434
  }
}

प्रोवाइडर विविधता ट्रैकिंग

विधि पथ विवरण
GET /api/analytics/diversity शैनन एंट्रॉपी-आधारित विविधता ट्रैकिंग: प्रोवाइडर प्रसार को मापकर विफलता के एकल बिंदुओं को रोकती है

प्रतिक्रिया का उदाहरण:

{
  "window": "24h",
  "shannonEntropy": 2.45,
  "maxEntropy": 3.17,
  "diversityRatio": 0.77,
  "providerUsage": {
    "openai": 0.4,
    "anthropic": 0.25,
    "google": 0.2,
    "kiro": 0.15
  },
  "warnings": ["OpenAI accounts for 40% of traffic — consider diversifying"]
}

प्रमाणीकरण: प्रबंधन सत्र या प्रबंधन-स्कोप वाली API कुंजी आवश्यक है।


एडमिन संचालन

परिचालन प्रबंधन के लिए केवल एडमिन हेतु उपलब्ध एंडपॉइंट।

विधि पथ विवरण
GET /api/admin/concurrency वर्तमान समवर्तीता सीमाएँ पढ़ें (वैश्विक + प्रति-प्रदाता)
POST /api/admin/concurrency समवर्तीता सीमाएँ अपडेट करें — बॉडी: {global?: number, perProvider?: Record<string, number>}

प्रमाणीकरण: एडमिन स्कोप वाले प्रबंधन सत्र की आवश्यकता है।


CLI टूल प्रबंधन

OmniRoute के साथ एकीकृत होने वाले CLI टूल (antigravity, chipotle, commandCode, devin-cli, आदि) प्रबंधित करें। पूरी सूची के लिए प्रदाता संदर्भ देखें।

विधि पथ विवरण
GET /api/cli-tools/all-statuses सभी CLI टूल की स्थिति (इंस्टॉल किया गया, संस्करण, अंतिम बार देखा गया)
GET /api/cli-tools/status किसी एक CLI टूल की विस्तृत स्थिति (?tool= क्वेरी)
POST /api/cli-tools/apply किसी टूल का जनरेट किया गया कॉन्फ़िगरेशन लिखें (dryRun पूर्वावलोकन करता है; कंटेनरीकृत होने पर 422 + containerEphemeralTarget; migration पुराने Codex YAML को इंगित करता है)
GET /api/cli-tools/backups CLI टूल कॉन्फ़िगरेशन बैकअप की सूची प्राप्त करें
POST /api/cli-tools/backups सभी CLI टूल कॉन्फ़िगरेशन का बैकअप बनाएँ
POST /api/cli-tools/backups पुनर्स्थापित करें: बॉडी में {tool, backupId} के साथ यही एंडपॉइंट उस बैकअप को पुनर्स्थापित करता है
GET /api/cli-tools/antigravity-mitm Antigravity MITM प्रॉक्सी की स्थिति (antigravity-mitm CLI टूल)
POST /api/cli-tools/antigravity-mitm/alias antigravity-mitm उपनाम कॉन्फ़िगर करें

प्रमाणीकरण: प्रबंधन सत्र की आवश्यकता है।


एजेंट कौशल

AI एजेंट कौशल प्रबंधित करें (OpenAI के कस्टम GPTs के समान, लेकिन एजेंटों के लिए)।

विधि पथ विवरण
GET /api/agent-skills सभी एजेंट कौशल की सूची प्राप्त करें (अंतर्निहित + कस्टम)
GET /api/agent-skills/[id] कोई विशिष्ट एजेंट कौशल प्राप्त करें
POST /api/agent-skills कस्टम एजेंट कौशल बनाएँ — बॉडी: {name, description, prompt, model?, temperature?}
PUT /api/agent-skills/[id] कस्टम एजेंट कौशल अपडेट करें
DELETE /api/agent-skills/[id] कस्टम एजेंट कौशल हटाएँ
GET /api/agent-skills/[id]/raw अपरिष्कृत प्रॉम्प्ट + मेटाडेटा प्राप्त करें (निष्पादन के बिना)
POST /api/agent-skills/generate प्राकृतिक भाषा के विवरण से AI का उपयोग करके नया कौशल जनरेट करें

प्रमाणीकरण: प्रबंधन सत्र या प्रबंधन-स्कोप वाली API कुंजी की आवश्यकता है।


कैश प्रबंधन

सिमेंटिक कैश और रीजनिंग कैश प्रबंधित करें।

विधि पथ विवरण
GET /api/cache कैश अवलोकन: कुल प्रविष्टियाँ, हिट दर, डिस्क पर आकार
GET /api/cache/entries कैश की गई प्रविष्टियाँ सूचीबद्ध करें (पृष्ठांकन सहित)
DELETE /api/cache/entries कैश प्रविष्टियाँ हटाएँ (क्वेरी पैरामीटर के अनुसार फ़िल्टर करें)
GET /api/cache/stats विस्तृत कैश आँकड़े (प्रति-प्रदाता, प्रति-मॉडल)
GET /api/cache/reasoning रीजनिंग कैश की स्थिति (रीजनिंग रीप्ले के लिए)
DELETE /api/cache/reasoning रीजनिंग कैश साफ़ करें — क्वेरी पैरामीटर: ?toolCallId=<id> (एकल), ?provider=<p> या कोई पैरामीटर नहीं (सभी)

प्रमाणीकरण: प्रबंधन सत्र आवश्यक है।


मेमोरी सिस्टम

स्थायी मेमोरी (FTS5 + वेक्टर एम्बेडिंग) प्रबंधित करें।

विधि पथ विवरण
GET /api/memory मेमोरी प्रविष्टियाँ सूचीबद्ध करें (स्कोप, प्रकार और खोज क्वेरी के अनुसार फ़िल्टर करें)
POST /api/memory नई मेमोरी प्रविष्टि बनाएँ — बॉडी: {scope, type, content, metadata?}
GET /api/memory/[id] कोई विशिष्ट मेमोरी प्रविष्टि प्राप्त करें
PUT /api/memory/[id] कोई मेमोरी प्रविष्टि अपडेट करें
DELETE /api/memory/[id] कोई मेमोरी प्रविष्टि हटाएँ
GET /api/memory?q= मेमोरी खोजें (FTS5 + वेक्टर) — आँकड़े उसी प्रतिक्रिया में शामिल होते हैं

प्रमाणीकरण: प्रबंधन सत्र या प्रबंधन-स्कोप वाली API कुंजी आवश्यक है।


वेबहुक

ईवेंट के लिए वेबहुक सदस्यताएँ प्रबंधित करें।

विधि पथ विवरण
GET /api/webhooks सभी वेबहुक सदस्यताएँ सूचीबद्ध करें
POST /api/webhooks वेबहुक सदस्यता बनाएँ — बॉडी: {url, events[], secret?, active?}
GET /api/webhooks/[id] कोई विशिष्ट वेबहुक सदस्यता प्राप्त करें
PUT /api/webhooks/[id] वेबहुक सदस्यता अपडेट करें
DELETE /api/webhooks/[id] वेबहुक सदस्यता हटाएँ
GET /api/webhooks/[id]/deliveries किसी वेबहुक का डिलीवरी इतिहास सूचीबद्ध करें (सफलता/विफलता लॉग)
POST /api/webhooks/[id]/test किसी वेबहुक को परीक्षण ईवेंट भेजें

प्रमाणीकरण: प्रबंधन सत्र आवश्यक है।

सभी ईवेंट प्रकारों के लिए वेबहुक फ़्रेमवर्क देखें।


स्किल्स फ़्रेमवर्क

स्किल्स (एजेंटिक एक्सटेंशन फ़्रेमवर्क) प्रबंधित करें।

विधि पथ विवरण
GET /api/skills सभी इंस्टॉल की गई स्किल्स (बिल्ट-इन + कस्टम) सूचीबद्ध करें
POST /api/skills/install किसी स्थानीय पथ या URL से स्किल इंस्टॉल करें
DELETE /api/skills/[id] किसी स्किल को अनइंस्टॉल करें
PUT /api/skills/[id] किसी स्किल को सक्षम या अक्षम करें — बॉडी: {enabled?: boolean, mode?: "on" | "off" | "auto"}
POST /api/skills/executions किसी स्किल को निष्पादित करें — बॉडी: {skillName, apiKeyId, input?, sessionId?}
GET /api/skills/executions सभी स्किल्स का निष्पादन इतिहास सूचीबद्ध करें (?apiKeyId= से फ़िल्टर करें)

प्रमाणीकरण: प्रबंधन सत्र या प्रबंधन-स्कोप वाली API कुंजी आवश्यक है।

पूरी जानकारी के लिए स्किल्स फ़्रेमवर्क देखें।


प्लगइन्स

OmniRoute प्लगइन्स (तृतीय-पक्ष एक्सटेंशन) प्रबंधित करें।

विधि पथ विवरण
GET /api/plugins इंस्टॉल किए गए प्लगइन्स सूचीबद्ध करें
POST /api/plugins/marketplace/install मार्केटप्लेस से प्लगइन इंस्टॉल करें
DELETE /api/plugins/[name] किसी प्लगइन को अनइंस्टॉल करें
POST /api/plugins/[name]/activate किसी प्लगइन को सक्रिय करें
POST /api/plugins/[name]/deactivate किसी प्लगइन को निष्क्रिय करें
GET /api/plugins/[name]/config प्लगइन कॉन्फ़िगरेशन प्राप्त करें
PUT /api/plugins/[name]/config प्लगइन कॉन्फ़िगरेशन अपडेट करें

प्रमाणीकरण: प्रबंधन सत्र आवश्यक है।

पूरी जानकारी के लिए प्लगइन्स फ़्रेमवर्क देखें।


शैडो रूटिंग

प्रदाताओं की शैडो / A-B तुलना एक स्वतंत्र REST सरफ़ेस नहीं है — इसे कॉम्बो रूटिंग के माध्यम से कॉन्फ़िगर किया जाता है (ऑटो-कॉम्बो देखें)। प्रत्येक कॉम्बो के तुलना मेट्रिक्स GET /api/combos/metrics द्वारा उपलब्ध कराए जाते हैं।


गार्डरेल्स

रनटाइम गार्डरेल्स (PII पहचान, प्रॉम्प्ट इंजेक्शन पहचान, विज़न ब्रिजिंग) का निरीक्षण करें। गार्डरेल्स प्रत्येक अनुरोध पर चलते हैं; प्रति-कॉल ऑप्ट-आउट x-omniroute-disabled-guardrails अनुरोध हेडर के माध्यम से किया जाता है — सक्षम/अक्षम स्थिति को स्थायी रूप से सहेजने के लिए कोई सरफ़ेस नहीं है।

विधि पथ विवरण
GET /api/guardrails पंजीकृत गार्डरेल्स और उनकी स्थिति (नाम / सक्षम / प्राथमिकता) सूचीबद्ध करें
POST /api/guardrails/test नमूना इनपुट पर प्री-कॉल पाइपलाइन का ड्राई-रन करें — बॉडी: {input, disabledGuardrails?}

प्रमाणीकरण: प्रबंधन सत्र आवश्यक है।

पूरी जानकारी के लिए सुरक्षा > गार्डरेल्स देखें।



प्रमाणीकरण

चार क्रेडेंशियल श्रेणियों (डैशबोर्ड सत्र, स्थानीय CLI टोकन, oma_live_… एक्सेस टोकन, प्रबंधन-स्कोप वाला API कुंजी) और वे इन्फ़रेंस कुंजियों से कैसे भिन्न हैं, इसकी जानकारी के लिए प्रबंधन प्रमाणीकरण देखें।

  • डैशबोर्ड रूट (/dashboard/*) auth_token कुकी का उपयोग करते हैं
  • लॉगिन सहेजे गए पासवर्ड हैश का उपयोग करता है; फ़ॉलबैक के रूप में INITIAL_PASSWORD का उपयोग होता है
  • requireLogin को /api/settings/require-login के माध्यम से टॉगल किया जा सकता है
  • REQUIRE_API_KEY=true होने पर /v1/* रूट वैकल्पिक रूप से Bearer API कुंजी की आवश्यकता रखते हैं
  • इस संदर्भ में "प्रबंधन टोकन" / "प्रबंधन-स्कोप वाला API कुंजी" का अर्थ उस गाइड में दी गई श्रेणियों में से एक है—कोई अपरिभाषित अतिरिक्त सीक्रेट प्रकार नहीं

ब्रेकिंग बदलाव (v3.8.0)/api/v1/agents/tasks/* और कूलडाउन प्रबंधन एंडपॉइंट्स के लिए अब प्रबंधन प्रमाणीकरण (डैशबोर्ड auth_token कुकी या प्रबंधन-स्कोप वाला API कुंजी) आवश्यक है। जो क्लाइंट पहले इन रूट्स को बिना प्रमाणीकरण के कॉल करते थे, उन्हें अब 401 Unauthorized प्राप्त होगा। कमिट 588a0333 (fix(auth): require management auth for agent and cooldown APIs) देखें।