Files
OmniRoute/docs/i18n/ne/docs/reference/API_REFERENCE.md
Diego Rodrigues de Sa e Souza 58f88a83e4 feat(i18n): 7 new locales — Hausa, Yoruba, Igbo, Amharic, Uzbek, Georgian, Armenian (66 locales) (#13727)
Batch 3 (last) of the locale-expansion plan: ha, yo, ig, am, uz, ka, hy on every surface — dashboard catalog, docs mirror (22-file core + llm.txt + CHANGELOG), CLI catalog, README flag block, locale tables and 🌐 language bars. Also closes the key gap the batch-1 (43 keys) and batch-2 (10 keys) catalogs carried since their base merges, fixes the Igbo "Model" copy and allowlists the Uzbek cognate. Translation-ratio baseline covers 65 locales.

⚠️ base-red inherited: #12732
2026-09-15 09:50:01 -03:00

178 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 · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇱 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



title: "API सन्दर्भ" version: 3.8.51 lastUpdated: 2026-08-31

API सन्दर्भ

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇱 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

OmniRoute API को मूल सन्दर्भ। यसले सार्वजनिक /v1 सतह र सबैभन्दा बढी प्रयोग हुने व्यवस्थापन एन्डपोइन्टहरू समेट्छ; मेसिनले पढ्न सक्ने docs/openapi.yamlsrc/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 अनुरोध कलकर्ताले प्रदान गरेको सत्र/वार्तालाप ट्याग (मेमोरीमा पनि पठाइन्छ)। उपस्थित हुँदा, प्रति-सत्र लागत निर्धारणका लागि call_logs.session_tag मा जस्ताको तस्तै भण्डारण गरिन्छ (#8249) — अनुपस्थित हुँदा कहिल्यै संश्लेषित गरिँदैन
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, निश्चित १० दशमलव स्थान; निःशुल्क/मूल्य निर्धारण नगरिएको अवस्थामा 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 (> हुँदा मात्र), साथै X-OmniRoute-Request-IdX-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"}

सफल acquire, renew, र release प्रतिक्रियाहरूले टाइमस्ट्याम्पहरू, state, र ठ्याक्कै सकारात्मक generation देखाउँछन्, तर चयन गरिएको जडान वा क्रेडेन्सियलहरू कहिल्यै देखाउँदैनन्। Renew र release ले JSON बडीमा generation उपलब्ध गराउँछन्:

{ "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"
  }
}

यो स्वैच्छिक status कार्यलाई एउटा डेटाबेस कारोबारभित्र अपारदर्शी मालिक, प्रमाणीकृत व्यवस्थित API कुञ्जी, र ठ्याक्कै सक्रिय generation द्वारा सुरक्षित गरिन्छ। displayName केवल ट्रिम गरिएको कन्फिगर गरिएको जडान नाम हो; कुनै सुरक्षित कन्फिगर गरिएको नाम नभएमा यो null हुन्छ। OmniRoute ले कहिल्यै इमेल वा उत्पन्न गरिएको खाता पहिचान प्रतिस्थापन गर्दैन। provider मान गैर-संवेदनशील प्रदर्शन लेबल हो र कहिल्यै उत्पन्न गरिएको compatible-provider पहिचायक होइन। क्रेडेन्सियलहरू, टोकनहरू, कुकीहरू, कच्चा जडान वा API कुञ्जी ids, मालिक ह्यासहरू, फेन्सिङ गोप्यताहरू, र आन्तरिक राउटिङ डेटा समावेश गरिँदैनन्।

गलत-कुञ्जी, गलत-मालिक, पुरानो-generation, हराएको, म्याद सकिएको, रिलिज गरिएको, र अमान्य पारिएको लुकअपहरू सबैले जडान मेटाडेटाबिना उही 409 LEASE_FENCE_STALE त्रुटि फर्काउँछन्। क्षमता-प्रतीक्षा प्रतिक्रिया प्राप्त गरेको क्लाइन्टसँग निरीक्षण गर्न कुनै सक्रिय बाइन्डिङ हुँदैन। राउटिङले सक्रिय लिजलाई स्थानान्तरण गर्दा, उही generation मान्य रहन्छ र status ले पुरानो होइन, नयाँ बाइन्डिङ एटोमिक रूपमा फर्काउँछ। अवस्थित क्लाइन्टहरू अपरिवर्तित रहन्छन् किनभने acquire, renew, release, र waiting प्रतिक्रियाहरूले आफ्ना अघिल्ला संरचनाहरू कायम राख्छन्।

यो सर्भर सम्झौताले स्टक OpenAI Codex /status परिवर्तन गर्दैन। स्टक Codex ले हाल आफ्नो मोडेल प्रदायक र अन्तर्निर्मित प्रमाणीकरण/खाता अवस्था रिपोर्ट गर्छ तर मनपरी कस्टम प्रदायक खाता मेटाडेटा रेन्डर गर्दैन; पछिल्लो क्लाइन्ट एकीकरणले यो कार्य कल गर्नुपर्छ र connection.displayName कसरी प्रदर्शन गर्ने भन्ने निर्णय गर्नुपर्छ।

त्यसपछि प्रत्येक व्यवस्थित इन्फरेन्स अनुरोधले दुवै नियन्त्रण हेडरहरू उपलब्ध गराउँछ:

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

ठ्याक्कै मालिक, generation, सक्रिय जडान, र प्रमाणीकृत API कुञ्जीलाई प्रत्येक समर्थित अपस्ट्रिम प्रयासअघि तुरुन्तै सुरक्षित गरिन्छ। अर्को कुञ्जीसँग मालिक र generation पुनः चलाउँदा, त्यस कुञ्जीले उही जडान अनुमति दिए पनि असफल हुन्छ। कच्चा मालिकहरूलाई स्थायी रूपमा भण्डारण, लग, अनुरोध स्न्यापसटमा राख्ने, वा अपस्ट्रिममा फर्वार्ड गरिँदैन।

अस्थायी प्रतिस्पर्धाले Retry-After सहित HTTP 429 र निम्न प्रतिक्रिया फर्काउँछ:

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

यस प्रतिक्रियाको अर्थ केवल सामान्य योग्य सेट खाली थिएन र प्रत्येक उपलब्ध उम्मेदवारलाई विदेशी सक्रिय लिजले नियन्त्रणमा राखेको थियो भन्ने हो। असमर्थित मोडेल/प्रदायकहरू, नीति बेमेल, cooldown, quota, health, र अन्य सामान्य योग्यता असफलताहरूले आफ्ना अवस्थित OmniRoute प्रतिक्रियाहरू कायम राख्छन्।

x-omniroute-compression

प्रति-अनुरोध कम्प्रेसन योजनाको ओभरराइड। सर्वोच्च प्राथमिकता — यसले routing-combo ओभरराइड, सक्रिय प्रोफाइल, auto-trigger, र प्यानल Default लाई उछिन्छ। मानहरू:

मान प्रभाव
off यस अनुरोधका लागि कम्प्रेसन हुँदैन।
default प्यानलबाट व्युत्पन्न Default प्रोफाइल (सक्रिय प्रोफाइललाई बेवास्ता गर्छ)।
engine:<id> सक्षम हुँदा एउटा मात्र इन्जिन, जस्तै engine:rtk
<combo> नामद्वारा पहिला (केस-असंवेदनशील रूपमा), त्यसपछि id द्वारा मिलान गरिने नामित combo।

टिप्पणीहरू:

  • अज्ञात मानहरू बेवास्ता गरिन्छन् (अनुरोध कहिल्यै अस्वीकार हुँदैन); समाधान सामान्य अपरेटर प्राथमिकतामा फर्कन्छ।
  • धेरै combos ले एउटै नाम साझा गरेमा, निर्धारणात्मक मिलानका लागि combo id पठाउनुहोस्।
  • off वा default नाम भएको combo लाई नामद्वारा चयन गर्न सकिँदैन (ती कुञ्जीशब्दहरू पहिला व्याख्या गरिन्छन्); यस्तो combo लाई यसको 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 मल्टिमोडल मोडेलहरू: प्रत्येक शीर्ष-स्तरीय आइटम इनलाइन मिडियाका लागि data URI प्रयोग गर्ने एउटा मोडालिटी-कुञ्जीयुक्त अब्जेक्ट (text / image / audio / video / pdf) बन्छ; प्रत्येक शीर्ष-स्तरीय आइटमका लागि एउटा भेक्टर।
  • 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": "पहाडहरूमाथिको सुन्दर सूर्यास्त",
  "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 प्रदायक चयन गर्छ; उपसर्गरहित मोडेल id (उदाहरणका लागि, mistral-ocr-latest) यसको दर्ता गरिएको प्रदायकमा समाधान हुन्छ, र model नदिइएमा पूर्वनिर्धारित रूपमा Mistral (mistral-ocr-latest) प्रयोग हुन्छ। दर्ता गरिएका प्रदायकहरू (open-sse/config/ocrRegistry.ts):

प्रदायक id मोडेल id 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": "# निकालिएको पाठ..." }],
  "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 key या त Service Account JSON क्रेडेन्सियल हुन्छ (JWT-bearer प्रवाहमार्फत छोटो अवधिको OAuth access token सँग साटिने) वा पहिले नै जारी गरिएको OAuth access token हुन्छ, जसलाई जस्ताको तस्तै प्रयोग गरिन्छ। अपस्ट्रिम एन्डपोइन्ट URL Vertex को सामान्य openapi/chat/completions साझेदार एन्डपोइन्ट हो, जुन कनेक्सनको project र region बाट बनाइन्छ — स्पष्ट रूपमा दिइएको providerSpecificData.project/providerSpecificData.region ले सधैं प्राथमिकता पाउँछ; अन्यथा project लाई Service Account JSON को project_id बाट लिइन्छ र region पूर्वनिर्धारित रूपमा 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 — छोटो उपनाम उपसर्ग
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 प्रत्येक मोडेलका लागि एउटा प्रविष्टि। छुट्टै उपनाम नभएका प्रदायकहरूले पनि आफ्नो प्रविष्टि उत्सर्जन गर्छन्, त्यसैले केही पनि हराउँदैन।
canonical claude/claude-sonnet-4-6 पूर्ण provider-id उपसर्गअन्तर्गत प्रत्येक मोडेलका लागि एउटा प्रविष्टि। छुट्टै उपनाम नभएका प्रदायकहरू (जस्तै antigravity/…, agy/…) ले यहाँ पनि आफ्नो एकल ID उत्सर्जन गर्छन्, त्यसैले केही पनि हराउँदैन।

क्वेरी प्यारामिटरबिना पनि dual-मोड मिरर पहिचान गर्न सकिन्छ: यसमा प्राथमिक ID तर्फ सङ्केत गर्ने parent फिल्ड हुन्छ।

मोडेल चयनकर्ता रेन्डर गर्ने क्लाइन्टहरूले ?prefix=alias अनुरोध गर्नुपर्छ — OmniCopilot VS Code एक्सटेन्सन ले यही गर्छ।

सोचाइ-रहित मोडेल भेरियन्टहरू

सोच्न सक्षम Claude मोडेलहरूका लागि, /v1/models ले claude-3-omniroute-no-thinking/ उपसर्ग भएको सोचाइ-रहित भेरियन्ट पनि उपलब्ध गराउँछ:

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

यो ID चयन गर्दा (जस्तै सधैँ thinking ब्लक संलग्न गर्ने Claude Code कन्फिगमा), तर्क प्रक्रियालाई निष्क्रिय पारेर वास्तविक <provider>/<model> मा पुनः रिजल्भ हुन्छ — /v1/messages पथमा thinking:{type:"disabled"}, वा /v1/chat/completions पथमा reasoning/reasoning_effort फिल्डहरू हटाइन्छन्। यो भेरियन्ट सोचाइलाई समर्थन गर्ने disabled लाई स्वीकार गर्ने Claude-परिवारका मोडेलहरूका लागि मात्र सूचीबद्ध हुन्छ (त्यसैले, उदाहरणका लागि, disabled अस्वीकार गर्ने adaptive-only मोडेलहरू समावेश गरिँदैनन्)। अपरेटरहरूले 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

# भिडियो / सङ्गीत उत्पादन (प्रदायक-उपसर्गयुक्त मोडेल आईडी)
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 फाइल अपलोड गर्नुहोस् (multipart: 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 कुञ्जीअनुसार सीमित हुन्छन्।


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 कुञ्जीअनुसार सीमित हुन्छन्।


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

कन्फिगर गरिएको web-fetch प्रदायक (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract) मार्फत URL बाट सामग्री निकाल्नुहोस्।

विधि पथ विवरण
POST /v1/web/fetch URL फेच/स्क्रेप गर्छ — body लाई v1WebFetchSchema द्वारा प्रमाणीकरण गरिन्छ

प्रमाणीकरण: Bearer API key (extractApiKey + isValidApiKey)। नीति enforceApiKeyPolicy मार्फत लागू गरिन्छ।

कोटा-सचेत fallback (#8297): स्पष्ट provider नदिइएको अवस्थामा, pool (firecrawljina-readertavily-searchtinyfishnimble-search) लाई स्थिर प्राथमिकता क्रम (fill-first) मा प्रयोग गरिन्छ — rate-limited तर कन्फिगर गरिएको प्रदायकले अनुरोधलाई तत्काल अन्त्य गर्नुको सट्टा त्यो प्रदायकलाई छोडिन्छ, र पुनः प्रयास गर्न मिल्ने/कोटा-सम्बन्धी upstream विफलता (HTTP 429 सधैँ; Firecrawl/Tavily/TinyFish का कोटा-शैलीका free tiers का लागि 402/403 — Jina Reader का लागि होइन, र सामान्य 400 bad request का लागि कहिल्यै होइन) भएमा अनुरोधको समयमा अर्को अझै प्रयास नगरिएको credential भएको प्रदायकमा जान्छ। pool का सबै प्रदायक समाप्त भएपछि, endpoint ले अघिल्लो सामान्य 400 को सट्टा एउटै 429 (Retry-After header सहित) फर्काउँछ। स्पष्ट provider अनुरोध गरिएको अवस्थामा, कुनै पनि मौन fallback हुँदैन — rate-limited वा विफल स्पष्ट प्रदायकले आफ्नै त्रुटि देखाउँछ (rate-limited भएमा 429, अन्यथा upstream status)।


WebSocket स्ट्रिमिङ

GET /v1/ws?handshake=1

WebSocket upgrade handshake प्रमाणीकरण गर्छ र wire protocol का उदाहरण सन्देशहरू (request, cancel) फर्काउँछ। वास्तविक WS frames लाई Next.js route table बाहिर रहेको bundled WS server ले ह्यान्डल गर्छ।

प्रमाणीकरण: handshake का क्रममा Bearer API key।

WebSocket मार्फत Responses API (codex मात्र)

# HTTP API कै समान host:port (पूर्वनिर्धारित 20128); connection upgrade गर्नुहोस्:
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (वा: -H "Authorization: Bearer <OMNIROUTE_API_KEY>")

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

Responses-API-over-WebSocket proxy लाई विशेष रूपमा codex (ChatGPT backend) सँग जोडिएको छ। यसले API/dashboard कै समान port मा /v1/responses, /responses, र /api/v1/responses पथहरूमा सुन्छ। पहिलो response.create frame मा यसले आन्तरिक codex-responses-ws bridge मार्फत प्रमाणीकरण + तयारी गर्छ, एउटा codex OAuth connection चयन गर्छ, र wreq-js transport मार्फत wss://chatgpt.com/backend-api/codex/responses मा tunnel गर्छ। गैर-codex models अस्वीकार गरिन्छन् (codex_ws_provider_required)। quota-share routing का लागि model: "qtSd/<group>/codex/<model>" प्रयोग गर्नुहोस्। यो app/server-ws.mjs + scripts/dev/responses-ws-proxy.mjs + src/app/api/internal/codex-responses-ws/route.ts मा कार्यान्वयन गरिएको छ।

प्रमाणीकरण: handshake का क्रममा Bearer API key। bundled HTTP server (server-ws.mjs) सक्रिय entrypoint हुनुपर्छ (app/server-ws.mjs अवस्थित हुँदा पूर्वनिर्धारित रूपमा यही हुन्छ)।

Model id: मूल ChatGPT id प्रयोग गर्नुहोस् (codex/ prefix बिना)

OpenAI Codex CLI ले supports_websockets = true हुँदा model name लाई client-side मै प्रमाणीकरण गर्छ र codex/gpt-5.5 जस्ता provider-prefixed ids अस्वीकार गर्छ (The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account)। मूल id पठाउनुहोस् (जस्तै gpt-5.5)। OmniRoute को bridge codex-only भएकाले upstream मा tunnel गर्नुअघि यसले मूल id लाई codex model का रूपमा (resolveCodexWsModelInfo) पुनः resolve गर्छ — यद्यपि मूल gpt-5.5 सामान्यतया HTTP मार्फत अर्को प्रदायकमा route हुने थियो।

OpenAI Codex CLI कन्फिगर गर्ने

~/.codex/config.toml मा WebSocket समर्थन भएको custom provider थपेर Codex CLI लाई OmniRoute तर्फ निर्देशित गर्नुहोस् (अवस्थित config लाई नछुन छुट्टै CODEX_HOME प्रयोग गर्नुहोस्):

model = "gpt-5.5"                 # मूल id — "codex/gpt-5.5" होइन
model_provider = "omniroute"

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

CLI ले base_url + /responses लाई WebSocket मा upgrade गर्छ र OmniRoute ले त्यसलाई चयन गरिएको codex OAuth connection मा tunnel गर्छ। स्थानीय server विरुद्ध end-to-end प्रमाणीकरण गरिएको छ: ChatGPT ले codex.rate_limits + response.created फर्काउँछ र completion लाई stream गर्छ।


कोटा तथा समस्या रिपोर्टिङ

विधि पथ विवरण
GET /v1/quotas/check दर्ता गरिएको कुञ्जी जारी गर्नुअघि provider + accountId का लागि कोटा पूर्व-प्रमाणीकरण गर्छ
POST /v1/issues/report कोटा/कुञ्जी जारी गर्ने विफलता GitHub मा रिपोर्ट गर्छ (GITHUB_ISSUES_REPO + token आवश्यक)

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


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

कुनै पनि API कुञ्जीले आफ्नै प्रयोग र कोटाहरू पढ्न सक्छ—व्यवस्थापन प्रमाणीकरण आवश्यक पर्दैन। यो त्यही endpoint हो जसलाई client (CLI, OmniCopilot panel) ले कुञ्जी धारकलाई उनीहरूको खर्च देखाउन प्रयोग गर्छ।

# पाठ स्वरूप (ऐतिहासिक अनुबन्ध—टर्मिनलका लागि सादा पाठ)
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 सक्षम हुनुपर्छ (पूर्वनिर्धारित रूपमा बन्द हुन्छ—dashboard को API-कुञ्जी manager ले प्रत्येक कुञ्जीका लागि यसलाई toggle गर्छ)। यो सक्षम नभएमा endpoint ले 403 उत्तर दिन्छ।

?format=json ले विभेदित संरचना फर्काउँछ, जसले गर्दा caller ले अस्वीकृतिबाट कहिल्यै data field पढ्दैन। सफल हुँदा:

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

अस्वीकृत हुँदा (401 खराब कुञ्जी / 403 अनुमति नभएको), यही route ले { "allowed": false, "error": { "message": "…" } } फर्काउँछ—उपस्थित-तर-खाली personal/provider (कुञ्जीलाई अनुमति छ, तर अहिलेसम्म केही जानकारी प्राप्त भएको छैन) अस्वीकृतिभन्दा फरक अवस्था हो, र JSON स्वरूपले मात्र तिनलाई छुट्याउँछ।

प्रमाणीकरण: caller को आफ्नै 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 ले upstream call नगरी क्यासबाट उत्तर दिन्छ, त्यसैले रिपोर्ट गरिएको X-OmniRoute-Response-Latency लगभग शून्य हुन्छ (मूल upstream विलम्बताको परवाह नगरी)। विलम्बता-संवेदनशील client हरूले (benchmarking, p50/p99 monitoring) X-OmniRoute-Cache-Latency response header जाँच गर्नुपर्छ:

मान अर्थ
synthetic क्यासबाट उत्तर दिइएको; विलम्बता वास्तविक upstream समय होइन
(अनुपस्थित) वास्तविक upstream call बाट आएको उत्तर

प्रति-कुञ्जी क्यास बाइपास

API कुञ्जीहरूले cacheDefaultMode मार्फत सिम्यान्टिक क्यासका read हरूबाट बाहिरिन सक्छन्:

मान व्यवहार
legacy सामान्य क्यास व्यवहार (पूर्वनिर्धारित)
bypass क्यास lookup पूर्ण रूपमा छोड्छ; सधैँ upstream मा अनुरोध गर्छ

कुञ्जी सिर्जना गर्दा (POST /api/keys) सेट गर्नुहोस् वा (PATCH /api/keys/[id]) अपडेट गर्नुहोस्:

{ "cacheDefaultMode": "bypass" }

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

कुञ्जीका settings जेसुकै भए पनि कुनै पनि अनुरोधले क्यास बाइपास गर्न सक्छ:

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 मोडेल मूल्य निर्धारण

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

Endpoint Method Description
/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)

सेटिङहरू

Endpoint Method Description
/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 विवरण
/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 विवरण
/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 होइन

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

Endpoint Method विवरण
/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 अभिलेखका रूपमा डाउनलोड गर्ने

क्लाउड सिङ्क

Endpoint Method विवरण
/api/sync/cloud Various क्लाउड सिङ्क सञ्चालनहरू
/api/sync/initialize POST सिङ्क प्रारम्भ गर्ने
/api/cloud/* Various क्लाउड व्यवस्थापन

टनेलहरू

Endpoint Method विवरण
/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 उपकरणहरू

Endpoint Method विवरण
/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 एजेन्टहरू

Endpoint Method विवरण
/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) समावेश हुन्छन्।

लचिलोपन र दर सीमाहरू

Endpoint Method विवरण
/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) आवश्यक पर्छ। प्रदायक ब्रेकर, जडान कूलडाउन र मोडेल लकआउटबीचको पूर्ण विवरणका लागि लचिलोपन (विस्तारित) हेर्नुहोस्।

मूल्याङ्कनहरू

Endpoint Method विवरण
/api/evals GET/POST मूल्याङ्कन सुइटहरूको सूची देखाउने / मूल्याङ्कन चलाउने

नीतिहरू

Endpoint Method विवरण
/api/policies GET/POST/DELETE राउटिङ नीतिहरू व्यवस्थापन गर्ने

अनुपालन

Endpoint Method विवरण
/api/compliance/audit-log GET अनुपालन अडिट लग (पछिल्ला N वटा)

v1beta (Gemini-सङ्गत)

Endpoint Method विवरण
/v1beta/models GET Gemini ढाँचामा मोडेलहरूको सूची देखाउने
/v1beta/models/{...path} POST Gemini generateContent एन्डपोइन्ट

मूल Gemini SDK सङ्गतता अपेक्षा गर्ने क्लाइन्टहरूका लागि यी एन्डपोइन्टहरूले Gemini को API ढाँचा अनुकरण गर्छन्।

आन्तरिक / प्रणाली 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/…) चयन गर्छ। अर्को विक्रेताको मोडेल पुनः निर्यात गर्ने गेटवेहरूले योग्य id (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
}

उदाहरण मोडेल id हरू: 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-key टोकन बजेटहरू (माथिको USD-आधारित बजेटभन्दा फरक)। अनुरोध पथमै लागू गरिन्छ: कुनै key को हालको window प्रयोग यसको सीमामा पुगेपछि, अनुरोधहरू 429 Too Many Requests सहित अस्वीकार गरिन्छन्। सीमाहरूलाई कुनै विशिष्ट model, provider मा सीमित गर्न वा key भरि global रूपमा लागू गर्न सकिन्छ; धेरै सीमाहरू अनुरोधसँग मेल खाएमा, सबैभन्दा प्रतिबन्धात्मक सीमा लागू हुन्छ।

# कुनै key का टोकन सीमाहरूको सूची देखाउनुहोस् (प्रत्यक्ष window प्रयोगसहित)
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): apiKeyIdscopeType (model | provider | global) आवश्यक छन्। scopeType global नभएसम्म scopeValue आवश्यक हुन्छ (उदाहरणका लागि, model स्कोपका लागि model id वा provider स्कोपका लागि provider id)। tokenLimit धनात्मक पूर्णाङ्क हुनुपर्छ (string बाट रूपान्तरित)। वैकल्पिक: id (सिर्जना गर्न नदिनुहोस्, अद्यावधिक गर्न दिनुहोस्), resetInterval (daily | weekly | monthly, पूर्वनिर्धारित monthly), resetTime (HH:MM), enabled (पूर्वनिर्धारित true)। GET प्रतिक्रियाहरूले प्रत्येक सीमामा tokensUsed, remaining, windowStart, periodStartAt, र nextResetAt थप्छन्। यो व्यवस्थापन-श्रेणीको endpoint हो (प्रमाणीकरण authz pipeline द्वारा केन्द्रीय रूपमा लागू गरिन्छ)।

अनुरोध प्रशोधन

  1. Client ले /v1/* मा अनुरोध पठाउँछ
  2. Route handler ले handleChat, handleEmbedding, handleAudioTranscription, वा handleImageGeneration कल गर्छ
  3. Model समाधान गरिन्छ (प्रत्यक्ष provider/model वा alias/combo)
  4. Account उपलब्धता filtering सहित स्थानीय DB बाट credentials चयन गरिन्छ
  5. Chat का लागि: handleChatCore ले semantic/signature cache जाँच्छ र combo compression settings समाधान गर्छ
  6. सक्षम हुँदा provider translation अघि proactive compression चल्छ (lite, Caveman, RTK, वा stacked)
  7. Provider executor ले upstream अनुरोध पठाउँछ
  8. प्रतिक्रिया client format मा फिर्ता अनुवाद गरिन्छ (chat) वा जस्ताको तस्तै फर्काइन्छ (embeddings/images/audio)
  9. Usage, compression analytics, र request logs अभिलेख गरिन्छन्
  10. Combo नियमहरूअनुसार त्रुटिहरूमा fallback लागू हुन्छ

पूर्ण वास्तुकला सन्दर्भ: ARCHITECTURE.md


Combo व्यवस्थापन

उच्च-स्तरीय routing combos (/api/combos* अन्तर्गत पहिले नै सारांशित) लाई model id pattern बाट 1:1 पनि map गर्न सकिन्छ, जसले OpenAI-style model id लाई combo मा पारदर्शी रूपमा redirect गर्न अनुमति दिन्छ।

विधि पथ विवरण
GET /api/model-combo-mappings सबै model→combo mappings को सूची देखाउनुहोस्
POST /api/model-combo-mappings Mapping सिर्जना गर्नुहोस् — body: {pattern, comboId, priority?, enabled?, description?}
GET /api/model-combo-mappings/[id] एउटै mapping प्राप्त गर्नुहोस्
PUT /api/model-combo-mappings/[id] अवस्थित mapping का fields अद्यावधिक गर्नुहोस्
DELETE /api/model-combo-mappings/[id] Mapping हटाउनुहोस्

प्रमाणीकरण: व्यवस्थापन session/API key (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]/assignmentsPOST /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.oauthproviderBreaker.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 द्वारा प्रमाणीकरण गरिएको body: {content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}
GET /api/memory/[id] एउटा मेमोरी प्राप्त गर्नुहोस्
DELETE /api/memory/[id] एउटा मेमोरी मेटाउनुहोस्
GET /api/memory/health मेमोरी उपप्रणालीको स्वास्थ्य (DB जडान, embeddings backend, vector index को स्थिति)

प्रमाणीकरण: व्यवस्थापन session/API key (requireManagementAuth)। type enum: FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (src/lib/memory/types.ts मा MemoryType हेर्नुहोस्)।


MCP सर्भर

OmniRoute मा 3 वटा transports (stdio, SSE, streamable-http) र सीमित tools सहितको अन्तर्निर्मित Model Context Protocol सर्भर समावेश छ। तलका dashboard endpoints ले स्थिति/audit डेटा पढ्छन् र HTTP transports लाई proxy गर्छन्।

विधि पथ विवरण
GET /api/mcp/status Heartbeat, transport, online स्थिति, अन्तिम call, शीर्ष tools, 24h सफलता दर
GET /api/mcp/tools name, description, scopes, phase, auditLevel, sourceEndpoints सहित MCP tools को सूची
GET /api/mcp/sse SSE transport का लागि खुला SSE stream (MCP निष्क्रिय भएमा वा transport नमिलेमा 503 फर्काउँछ)
POST /api/mcp/sse SSE transport मा JSON-RPC frame पठाउनुहोस्
GET /api/mcp/stream Streamable HTTP transport को SSE पक्ष खोल्नुहोस् (सर्भरद्वारा सुरु गरिएका सन्देशहरू)
POST /api/mcp/stream Streamable HTTP transport मा JSON-RPC frame पठाउनुहोस्
DELETE /api/mcp/stream Streamable HTTP session समाप्त गर्नुहोस्
GET /api/mcp/audit Audit log मा query गर्नुहोस् — ?limit=, ?offset=, ?tool=, `?success=true false, ?apiKeyId=`
GET /api/mcp/audit/stats समग्र audit तथ्याङ्क (कुल सङ्ख्या, सफलता दर, औसत अवधि, शीर्ष tools)

प्रमाणीकरण: sse/stream transports ले MCP-विशिष्ट प्रमाणीकरण सतह (mcp scope भएको Bearer API key) पालना गर्छन्; status/tools/audit* routes dashboard बाट पढ्न सकिन्छ (dashboard host सम्म पुग्न आवश्यक प्रमाणीकरणबाहेक थप प्रमाणीकरण आवश्यक पर्दैन)।

दुवै HTTP transports लाई settings.mcpEnabledsettings.mcpTransport द्वारा नियन्त्रण गरिन्छ — transport नमिलेमा 400 र MCP निष्क्रिय अवस्थामा 503 फर्काइन्छ।


A2A सर्भर

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

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 स्थानीय राउटिङ तालिका प्रयोग गरेर तार्किक मोडेल id लाई ठोस प्रदायक/मोडेलमा समाधान गर्छ
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 समय-अवधिमा सीमित तथ्याङ्क (पूर्वनिर्धारित 24h)

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

{
  "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 Shannon entropy-आधारित विविधता ट्र्याकिङ: प्रदायक फैलावट मापन गरेर विफलताको एकल बिन्दुहरू रोक्छ

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

{
  "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 का अनुकूलनयोग्य GPT हरूसँग मिल्दोजुल्दो, तर एजेन्टहरूका लागि) व्यवस्थापन गर्नुहोस्।

विधि पथ विवरण
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 वेबहुकमा परीक्षण इभेन्ट पठाउनुहोस्

प्रमाणीकरण: व्यवस्थापन सत्र आवश्यक छ।

सम्पूर्ण इभेन्ट प्रकारहरूका लागि वेबहुक फ्रेमवर्क हेर्नुहोस्।


Skills फ्रेमवर्क

Skills (एजेन्टिक एक्सटेन्सन फ्रेमवर्क) व्यवस्थापन गर्नुहोस्।

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

प्रमाणीकरण: व्यवस्थापन सत्र वा व्यवस्थापन-स्कोप भएको API key आवश्यक हुन्छ।

पूर्ण विवरणका लागि Skills फ्रेमवर्क हेर्नुहोस्।


Plugins

OmniRoute plugins (तेस्रो-पक्ष एक्सटेन्सनहरू) व्यवस्थापन गर्नुहोस्।

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

प्रमाणीकरण: व्यवस्थापन सत्र आवश्यक हुन्छ।

पूर्ण विवरणका लागि Plugins फ्रेमवर्क हेर्नुहोस्।


Shadow राउटिङ

प्रदायकहरूको Shadow / A-B तुलना छुट्टै REST सतह होइन — यसलाई combo राउटिङमार्फत कन्फिगर गरिन्छ (Auto-Combo हेर्नुहोस्)। प्रत्येक combo का तुलना मेट्रिक्स GET /api/combos/metrics द्वारा उपलब्ध गराइन्छन्।


Guardrails

रनटाइम guardrails (PII पहिचान, prompt injection पहिचान, vision bridging) निरीक्षण गर्नुहोस्। Guardrails प्रत्येक अनुरोधमा चल्छन्; प्रत्येक कलका लागि अप्ट-आउट x-omniroute-disabled-guardrails अनुरोध हेडरमार्फत गरिन्छ — स्थायी रूपमा सक्षम/असक्षम गर्ने सतह उपलब्ध छैन।

विधि पाथ विवरण
GET /api/guardrails दर्ता गरिएका guardrails र तिनको स्थिति (नाम / सक्षम / प्राथमिकता) सूचीबद्ध गर्नुहोस्
POST /api/guardrails/test नमुना इनपुटमा कल-अघिको पाइपलाइनको ड्राइ-रन गर्नुहोस् — बडी: {input, disabledGuardrails?}

प्रमाणीकरण: व्यवस्थापन सत्र आवश्यक हुन्छ।

पूर्ण विवरणका लागि सुरक्षा > Guardrails हेर्नुहोस्।



प्रमाणीकरण

चार प्रकारका क्रेडेन्सियल परिवारहरू (ड्यासबोर्ड सत्र, स्थानीय 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) हेर्नुहोस्।