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
179 KiB
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/ के अंतर्गत रूट ट्री संपूर्ण स्रोत हैं।
विषय-सूची
- चैट पूर्णताएँ
- विशिष्ट प्रबंधित सत्र लीज़
- एम्बेडिंग्स
- छवि निर्माण
- दस्तावेज़ OCR
- मॉडल सूचीबद्ध करें
- प्रदाता प्लगइन मैनिफ़ेस्ट
- संगतता एंडपॉइंट्स
- फ़ाइल्स API
- बैचेस API
- खोज API
- WebSocket स्ट्रीमिंग
- कोटा और समस्या रिपोर्टिंग
- सिमेंटिक कैश
- डैशबोर्ड और प्रबंधन
- कॉम्बो प्रबंधन
- वेबहुक्स
- पंजीकृत कुंजियाँ (स्वतः-प्रबंधन)
- एजेंट्स प्रोटोकॉल
- प्रबंधन प्रॉक्सी
- रेज़िलिएंस (विस्तारित)
- कौशल
- मेमोरी
- MCP सर्वर
- A2A सर्वर
- क्लाउड, मूल्यांकन और आकलन
- अनुरोध प्रसंस्करण
- प्रमाणीकरण
चैट पूर्णताएँ
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 नहीं दिया जाता, तो पूल
(firecrawl → jina-reader → tavily-search → tinyfish → nimble-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(0–1),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 पाइपलाइन द्वारा केंद्रीय रूप से लागू किया जाता है)।
अनुरोध प्रसंस्करण
- क्लाइंट
/v1/*को अनुरोध भेजता है - रूट हैंडलर
handleChat,handleEmbedding,handleAudioTranscription, याhandleImageGenerationको कॉल करता है - मॉडल का निर्धारण किया जाता है (प्रत्यक्ष प्रदाता/मॉडल या उपनाम/कॉम्बो)
- खाता उपलब्धता फ़िल्टरिंग के साथ स्थानीय DB से क्रेडेंशियल चुने जाते हैं
- चैट के लिए:
handleChatCoreसिमेंटिक/सिग्नेचर कैश की जाँच करता है और कॉम्बो संपीड़न सेटिंग्स निर्धारित करता है - सक्षम होने पर प्रदाता अनुवाद से पहले सक्रिय संपीड़न चलता है (
lite, Caveman, RTK, या स्टैक्ड) - प्रदाता एक्ज़ीक्यूटर अपस्ट्रीम अनुरोध भेजता है
- प्रतिक्रिया को वापस क्लाइंट प्रारूप में अनुवादित किया जाता है (चैट) या जैसी है वैसी लौटाई जाती है (एम्बेडिंग/इमेज/ऑडियो)
- उपयोग, संपीड़न विश्लेषण और अनुरोध लॉग रिकॉर्ड किए जाते हैं
- त्रुटियाँ होने पर कॉम्बो नियमों के अनुसार फ़ॉलबैक लागू होता है
पूर्ण आर्किटेक्चर संदर्भ: 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= (1–500, डिफ़ॉल्ट 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) देखें।