# API_REFERENCE (नेपाली) 🌐 **Languages:** 🇺🇸 [English](../../../../reference/API_REFERENCE.md) · 🇪🇹 [am](../../../am/docs/reference/API_REFERENCE.md) · 🇸🇦 [ar](../../../ar/docs/reference/API_REFERENCE.md) · 🇦🇿 [az](../../../az/docs/reference/API_REFERENCE.md) · 🇧🇬 [bg](../../../bg/docs/reference/API_REFERENCE.md) · 🇧🇩 [bn](../../../bn/docs/reference/API_REFERENCE.md) · 🇨🇿 [cs](../../../cs/docs/reference/API_REFERENCE.md) · 🇩🇰 [da](../../../da/docs/reference/API_REFERENCE.md) · 🇩🇪 [de](../../../de/docs/reference/API_REFERENCE.md) · 🇬🇷 [el](../../../el/docs/reference/API_REFERENCE.md) · 🇪🇸 [es](../../../es/docs/reference/API_REFERENCE.md) · 🇪🇪 [et](../../../et/docs/reference/API_REFERENCE.md) · 🇮🇷 [fa](../../../fa/docs/reference/API_REFERENCE.md) · 🇫🇮 [fi](../../../fi/docs/reference/API_REFERENCE.md) · 🇫🇷 [fr](../../../fr/docs/reference/API_REFERENCE.md) · 🇮🇪 [ga](../../../ga/docs/reference/API_REFERENCE.md) · 🇮🇳 [gu](../../../gu/docs/reference/API_REFERENCE.md) · 🇳🇬 [ha](../../../ha/docs/reference/API_REFERENCE.md) · 🇮🇱 [he](../../../he/docs/reference/API_REFERENCE.md) · 🇮🇳 [hi](../../../hi/docs/reference/API_REFERENCE.md) · 🇭🇷 [hr](../../../hr/docs/reference/API_REFERENCE.md) · 🇭🇺 [hu](../../../hu/docs/reference/API_REFERENCE.md) · 🇦🇲 [hy](../../../hy/docs/reference/API_REFERENCE.md) · 🇮🇩 [id](../../../id/docs/reference/API_REFERENCE.md) · 🇳🇬 [ig](../../../ig/docs/reference/API_REFERENCE.md) · 🇮🇹 [it](../../../it/docs/reference/API_REFERENCE.md) · 🇯🇵 [ja](../../../ja/docs/reference/API_REFERENCE.md) · 🇬🇪 [ka](../../../ka/docs/reference/API_REFERENCE.md) · 🇰🇭 [km](../../../km/docs/reference/API_REFERENCE.md) · 🇮🇳 [kn](../../../kn/docs/reference/API_REFERENCE.md) · 🇰🇷 [ko](../../../ko/docs/reference/API_REFERENCE.md) · 🇱🇹 [lt](../../../lt/docs/reference/API_REFERENCE.md) · 🇱🇻 [lv](../../../lv/docs/reference/API_REFERENCE.md) · 🇮🇳 [ml](../../../ml/docs/reference/API_REFERENCE.md) · 🇮🇳 [mr](../../../mr/docs/reference/API_REFERENCE.md) · 🇲🇾 [ms](../../../ms/docs/reference/API_REFERENCE.md) · 🇲🇹 [mt](../../../mt/docs/reference/API_REFERENCE.md) · 🇲🇲 [my](../../../my/docs/reference/API_REFERENCE.md) · 🇳🇱 [nl](../../../nl/docs/reference/API_REFERENCE.md) · 🇳🇴 [no](../../../no/docs/reference/API_REFERENCE.md) · 🇮🇳 [or](../../../or/docs/reference/API_REFERENCE.md) · 🇮🇳 [pa](../../../pa/docs/reference/API_REFERENCE.md) · 🇵🇭 [phi](../../../phi/docs/reference/API_REFERENCE.md) · 🇵🇱 [pl](../../../pl/docs/reference/API_REFERENCE.md) · 🇵🇹 [pt](../../../pt/docs/reference/API_REFERENCE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/API_REFERENCE.md) · 🇷🇴 [ro](../../../ro/docs/reference/API_REFERENCE.md) · 🇷🇺 [ru](../../../ru/docs/reference/API_REFERENCE.md) · 🇱🇰 [si](../../../si/docs/reference/API_REFERENCE.md) · 🇸🇰 [sk](../../../sk/docs/reference/API_REFERENCE.md) · 🇸🇮 [sl](../../../sl/docs/reference/API_REFERENCE.md) · 🇷🇸 [sr](../../../sr/docs/reference/API_REFERENCE.md) · 🇸🇪 [sv](../../../sv/docs/reference/API_REFERENCE.md) · 🇰🇪 [sw](../../../sw/docs/reference/API_REFERENCE.md) · 🇮🇳 [ta](../../../ta/docs/reference/API_REFERENCE.md) · 🇮🇳 [te](../../../te/docs/reference/API_REFERENCE.md) · 🇹🇭 [th](../../../th/docs/reference/API_REFERENCE.md) · 🇹🇷 [tr](../../../tr/docs/reference/API_REFERENCE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/API_REFERENCE.md) · 🇵🇰 [ur](../../../ur/docs/reference/API_REFERENCE.md) · 🇺🇿 [uz](../../../uz/docs/reference/API_REFERENCE.md) · 🇻🇳 [vi](../../../vi/docs/reference/API_REFERENCE.md) · 🇳🇬 [yo](../../../yo/docs/reference/API_REFERENCE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/API_REFERENCE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/API_REFERENCE.md) --- --- title: "API सन्दर्भ" version: 3.8.51 lastUpdated: 2026-08-31 --- # API सन्दर्भ 🌐 **Languages:** 🇺🇸 [English](../../../../reference/API_REFERENCE.md) · 🇪🇹 [am](../../../am/docs/reference/API_REFERENCE.md) · 🇸🇦 [ar](../../../ar/docs/reference/API_REFERENCE.md) · 🇦🇿 [az](../../../az/docs/reference/API_REFERENCE.md) · 🇧🇬 [bg](../../../bg/docs/reference/API_REFERENCE.md) · 🇧🇩 [bn](../../../bn/docs/reference/API_REFERENCE.md) · 🇨🇿 [cs](../../../cs/docs/reference/API_REFERENCE.md) · 🇩🇰 [da](../../../da/docs/reference/API_REFERENCE.md) · 🇩🇪 [de](../../../de/docs/reference/API_REFERENCE.md) · 🇬🇷 [el](../../../el/docs/reference/API_REFERENCE.md) · 🇪🇸 [es](../../../es/docs/reference/API_REFERENCE.md) · 🇪🇪 [et](../../../et/docs/reference/API_REFERENCE.md) · 🇮🇷 [fa](../../../fa/docs/reference/API_REFERENCE.md) · 🇫🇮 [fi](../../../fi/docs/reference/API_REFERENCE.md) · 🇫🇷 [fr](../../../fr/docs/reference/API_REFERENCE.md) · 🇮🇪 [ga](../../../ga/docs/reference/API_REFERENCE.md) · 🇮🇳 [gu](../../../gu/docs/reference/API_REFERENCE.md) · 🇳🇬 [ha](../../../ha/docs/reference/API_REFERENCE.md) · 🇮🇱 [he](../../../he/docs/reference/API_REFERENCE.md) · 🇮🇳 [hi](../../../hi/docs/reference/API_REFERENCE.md) · 🇭🇷 [hr](../../../hr/docs/reference/API_REFERENCE.md) · 🇭🇺 [hu](../../../hu/docs/reference/API_REFERENCE.md) · 🇦🇲 [hy](../../../hy/docs/reference/API_REFERENCE.md) · 🇮🇩 [id](../../../id/docs/reference/API_REFERENCE.md) · 🇳🇬 [ig](../../../ig/docs/reference/API_REFERENCE.md) · 🇮🇹 [it](../../../it/docs/reference/API_REFERENCE.md) · 🇯🇵 [ja](../../../ja/docs/reference/API_REFERENCE.md) · 🇬🇪 [ka](../../../ka/docs/reference/API_REFERENCE.md) · 🇰🇭 [km](../../../km/docs/reference/API_REFERENCE.md) · 🇮🇳 [kn](../../../kn/docs/reference/API_REFERENCE.md) · 🇰🇷 [ko](../../../ko/docs/reference/API_REFERENCE.md) · 🇱🇹 [lt](../../../lt/docs/reference/API_REFERENCE.md) · 🇱🇻 [lv](../../../lv/docs/reference/API_REFERENCE.md) · 🇮🇳 [ml](../../../ml/docs/reference/API_REFERENCE.md) · 🇮🇳 [mr](../../../mr/docs/reference/API_REFERENCE.md) · 🇲🇾 [ms](../../../ms/docs/reference/API_REFERENCE.md) · 🇲🇹 [mt](../../../mt/docs/reference/API_REFERENCE.md) · 🇲🇲 [my](../../../my/docs/reference/API_REFERENCE.md) · 🇳🇱 [nl](../../../nl/docs/reference/API_REFERENCE.md) · 🇳🇴 [no](../../../no/docs/reference/API_REFERENCE.md) · 🇮🇳 [or](../../../or/docs/reference/API_REFERENCE.md) · 🇮🇳 [pa](../../../pa/docs/reference/API_REFERENCE.md) · 🇵🇭 [phi](../../../phi/docs/reference/API_REFERENCE.md) · 🇵🇱 [pl](../../../pl/docs/reference/API_REFERENCE.md) · 🇵🇹 [pt](../../../pt/docs/reference/API_REFERENCE.md) · 🇧🇷 [pt-BR](../../../pt-BR/docs/reference/API_REFERENCE.md) · 🇷🇴 [ro](../../../ro/docs/reference/API_REFERENCE.md) · 🇷🇺 [ru](../../../ru/docs/reference/API_REFERENCE.md) · 🇱🇰 [si](../../../si/docs/reference/API_REFERENCE.md) · 🇸🇰 [sk](../../../sk/docs/reference/API_REFERENCE.md) · 🇸🇮 [sl](../../../sl/docs/reference/API_REFERENCE.md) · 🇷🇸 [sr](../../../sr/docs/reference/API_REFERENCE.md) · 🇸🇪 [sv](../../../sv/docs/reference/API_REFERENCE.md) · 🇰🇪 [sw](../../../sw/docs/reference/API_REFERENCE.md) · 🇮🇳 [ta](../../../ta/docs/reference/API_REFERENCE.md) · 🇮🇳 [te](../../../te/docs/reference/API_REFERENCE.md) · 🇹🇭 [th](../../../th/docs/reference/API_REFERENCE.md) · 🇹🇷 [tr](../../../tr/docs/reference/API_REFERENCE.md) · 🇺🇦 [uk-UA](../../../uk-UA/docs/reference/API_REFERENCE.md) · 🇵🇰 [ur](../../../ur/docs/reference/API_REFERENCE.md) · 🇺🇿 [uz](../../../uz/docs/reference/API_REFERENCE.md) · 🇻🇳 [vi](../../../vi/docs/reference/API_REFERENCE.md) · 🇳🇬 [yo](../../../yo/docs/reference/API_REFERENCE.md) · 🇨🇳 [zh-CN](../../../zh-CN/docs/reference/API_REFERENCE.md) · 🇹🇼 [zh-TW](../../../zh-TW/docs/reference/API_REFERENCE.md) OmniRoute API को मूल सन्दर्भ। यसले सार्वजनिक `/v1` सतह र सबैभन्दा बढी प्रयोग हुने व्यवस्थापन एन्डपोइन्टहरू समेट्छ; मेसिनले पढ्न सक्ने [`docs/openapi.yaml`](../openapi.yaml) र `src/app/api/` अन्तर्गतको रुट ट्री विस्तृत स्रोतहरू हुन्। --- ## विषयसूची - [च्याट कम्प्लिसनहरू](#chat-completions) - [विशेष व्यवस्थित सत्र लिजहरू](#exclusive-managed-session-leases) - [एम्बेडिङहरू](#embeddings) - [छवि उत्पादन](#image-generation) - [कागजात OCR](#document-ocr) - [मोडेलहरूको सूची](#list-models) - [प्रदायक प्लगइन म्यानिफेस्ट](#provider-plugin-manifest) - [अनुकूलता एन्डपोइन्टहरू](#compatibility-endpoints) - [Files API](#files-api) - [Batches API](#batches-api) - [Search API](#search-api) - [WebSocket स्ट्रिमिङ](#websocket-streaming) - [कोटा र समस्या रिपोर्टिङ](#quotas--issues-reporting) - [सिमान्टिक क्यास](#semantic-cache) - [ड्यासबोर्ड र व्यवस्थापन](#dashboard--management) - [कम्बो व्यवस्थापन](#combo-management) - [वेबहुकहरू](#webhooks) - [दर्ता गरिएका कुञ्जीहरू (स्वचालित व्यवस्थापन)](#registered-keys-auto-management) - [एजेन्ट प्रोटोकल](#agents-protocol) - [व्यवस्थापन प्रोक्सीहरू](#management-proxies) - [लचिलोपन (विस्तारित)](#resilience-extended) - [सीपहरू](#skills) - [मेमोरी](#memory) - [MCP सर्भर](#mcp-server) - [A2A सर्भर](#a2a-server) - [क्लाउड, मूल्याङ्कन र आकलन](#cloud-evals--assess) - [अनुरोध प्रशोधन](#request-processing) - [प्रमाणीकरण](#authentication) --- ## च्याट कम्प्लिसनहरू ```bash 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=; provider=; latency_ms=` (`` कम्बो रणनीति हो, वा गैर-कम्बो अनुरोधका लागि `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-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` सूची हुनुपर्छ। डेटाबेस म्युटेसन सीमाले कुञ्जी सिर्जना र आंशिक अद्यावधिकहरूमा दुवै फिल्डलाई सँगै लागू गर्छ। ```http POST /api/v1/session-leases Authorization: Bearer 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 उपलब्ध गराउँछन्: ```json { "action": "renew", "generation": 1 } ``` ```json { "action": "release", "generation": 1, "reason": "OWNER_EXIT" } ``` एउटा सक्रिय लिज मालिकले आफ्नो हालको बाइन्डिङका लागि गोपनीयता-सुरक्षित प्रदर्शन मेटाडेटा स्पष्ट रूपमा अनुरोध गर्न सक्छ: ```json { "action": "status", "generation": 1 } ``` ```json { "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` कसरी प्रदर्शन गर्ने भन्ने निर्णय गर्नुपर्छ। त्यसपछि प्रत्येक व्यवस्थित इन्फरेन्स अनुरोधले दुवै नियन्त्रण हेडरहरू उपलब्ध गराउँछ: ```http X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters> X-OmniRoute-Lease-Generation: 1 ``` ठ्याक्कै मालिक, generation, सक्रिय जडान, र प्रमाणीकृत API कुञ्जीलाई प्रत्येक समर्थित अपस्ट्रिम प्रयासअघि तुरुन्तै सुरक्षित गरिन्छ। अर्को कुञ्जीसँग मालिक र generation पुनः चलाउँदा, त्यस कुञ्जीले उही जडान अनुमति दिए पनि असफल हुन्छ। कच्चा मालिकहरूलाई स्थायी रूपमा भण्डारण, लग, अनुरोध स्न्यापसटमा राख्ने, वा अपस्ट्रिममा फर्वार्ड गरिँदैन। अस्थायी प्रतिस्पर्धाले `Retry-After` सहित HTTP `429` र निम्न प्रतिक्रिया फर्काउँछ: ```json { "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:` | सक्षम हुँदा एउटा मात्र इन्जिन, जस्तै `engine:rtk`। | | `` | नामद्वारा पहिला (केस-असंवेदनशील रूपमा), त्यसपछि id द्वारा मिलान गरिने नामित combo। | टिप्पणीहरू: - अज्ञात मानहरू बेवास्ता गरिन्छन् (अनुरोध कहिल्यै अस्वीकार हुँदैन); समाधान सामान्य अपरेटर प्राथमिकतामा फर्कन्छ। - धेरै combos ले एउटै नाम साझा गरेमा, निर्धारणात्मक मिलानका लागि combo **id** पठाउनुहोस्। - `off` वा `default` नाम भएको combo लाई नामद्वारा चयन गर्न सकिँदैन (ती कुञ्जीशब्दहरू पहिला व्याख्या गरिन्छन्); यस्तो combo लाई यसको id द्वारा सन्दर्भ गर्नुहोस्। - मुख्य कम्प्रेसन स्विच कठोर गेट हो: कम्प्रेसन विश्वव्यापी रूपमा असक्षम हुँदा, यो हेडरले त्यसलाई सक्षम गर्न सक्दैन। लागू गरिएको योजना प्रतिक्रिया हेडरमा प्रतिध्वनित गरिन्छ: ``` X-OmniRoute-Compression: ; source= ``` जहाँ `` `request-header`, `routing-override`, `active-profile`, `auto-trigger`, `default`, वा `off` मध्ये एक हुन्छ। --- ## एम्बेडिङहरू ```bash 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` मा **जस्ताको तस्तै फर्वार्ड गर्छ**: ```json { "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 सहित अस्वीकार गर्छन्। ```json { "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 फर्काउँछन्। पुराना स्ट्रिङ/टोकन अनुरोधहरूमा इनपुटबाहेकका एक्सटेन्सन फिल्डहरू अपरिवर्तित रूपमा पास भइरहन्छन्। ```bash # सबै एम्बेडिङ मोडेलहरू सूचीबद्ध गर्नुहोस् GET /v1/embeddings ``` --- ## छवि उत्पादन ```bash 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 (स्थानीय)। ```bash # सबै छवि मोडेलहरूको सूची देखाउनुहोस् GET /v1/images/generations ``` --- ## कागजात OCR ```bash 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-आकारको बडीमा प्रतिक्रिया दिन्छन्: ```json { "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` ले प्रयोग गर्छ। --- ## मोडेलहरूको सूची ```bash GET /v1/models Authorization: Bearer your-api-key → OpenAI ढाँचामा सबै च्याट, एम्बेडिङ र छवि मोडेलहरू + संयोजनहरू फर्काउँछ ``` ### मोडेल ID उपसर्गहरू (`?prefix=`) अधिकांश मोडेलहरू **प्रदायक उपसर्ग** अन्तर्गत उपलब्ध गराइन्छन्। तपाईंले कुन उपसर्ग प्राप्त गर्नुहुन्छ भन्ने कुरा `MODELS_CATALOG_PREFIX_MODE` फिचर फ्ल्यागद्वारा नियन्त्रित हुन्छ, र त्यसलाई क्वेरी प्यारामिटरमार्फत **प्रत्येक अनुरोधका लागि** ओभरराइड गर्न सकिन्छ — अरू सबैका लागि सर्भर-व्यापी सेटिङ परिवर्तन नगरी सफा सूची चाहने क्लाइन्टका लागि यो उपयोगी हुन्छ: ```bash 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 एक्सटेन्सन](../guides/VSCODE-COPILOT.md) ले यही गर्छ। ### सोचाइ-रहित मोडेल भेरियन्टहरू सोच्न सक्षम Claude मोडेलहरूका लागि, `/v1/models` ले `claude-3-omniroute-no-thinking/` उपसर्ग भएको **सोचाइ-रहित** भेरियन्ट पनि उपलब्ध गराउँछ: ``` claude-3-omniroute-no-thinking// ``` यो ID चयन गर्दा (जस्तै सधैँ `thinking` ब्लक संलग्न गर्ने Claude Code कन्फिगमा), तर्क प्रक्रियालाई निष्क्रिय पारेर वास्तविक `/` मा पुनः रिजल्भ हुन्छ — `/v1/messages` पथमा `thinking:{type:"disabled"}`, वा `/v1/chat/completions` पथमा `reasoning`/`reasoning_effort` फिल्डहरू हटाइन्छन्। यो भेरियन्ट सोचाइलाई समर्थन गर्ने **र** `disabled` लाई स्वीकार गर्ने Claude-परिवारका मोडेलहरूका लागि मात्र सूचीबद्ध हुन्छ (त्यसैले, उदाहरणका लागि, `disabled` अस्वीकार गर्ने adaptive-only मोडेलहरू समावेश गरिँदैनन्)। अपरेटरहरूले `ModelSpec.noThinkingAlias` मार्फत प्रत्येक मोडेलका लागि यो भेरियन्टलाई जबरजस्ती सक्रिय वा निष्क्रिय गर्न सक्छन्। --- ## प्रदायक प्लगइन म्यानिफेस्ट ```bash 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 कुञ्जीहरू पनि स्वीकार गर्छ। ```bash # पुनःक्रमाङ्कन 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": "..." } ``` ### समर्पित प्रदायक रुटहरू ```bash 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 (`firecrawl` → `jina-reader` → `tavily-search` → `tinyfish` → `nimble-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 स्ट्रिमिङ ```bash 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 मात्र) ```bash # HTTP API कै समान host:port (पूर्वनिर्धारित 20128); connection upgrade गर्नुहोस्: wscat -c "ws://localhost:20128/v1/responses?api_key=" # (वा: -H "Authorization: Bearer ") # पहिलो 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//codex/"` प्रयोग गर्नुहोस्। यो `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` प्रयोग गर्नुहोस्): ```toml 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) ``` ```bash 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) ले कुञ्जी धारकलाई उनीहरूको खर्च देखाउन प्रयोग गर्छ। ```bash # पाठ स्वरूप (ऐतिहासिक अनुबन्ध—टर्मिनलका लागि सादा पाठ) curl -H "Authorization: Bearer " \ http://localhost:20128/api/usage/om-usage # संरचित स्वरूप—UI ले प्रयोग गर्ने curl -H "Authorization: Bearer " \ "http://localhost:20128/api/usage/om-usage?format=json" ``` कुञ्जीमा **`allowUsageCommand`** सक्षम हुनुपर्छ (पूर्वनिर्धारित रूपमा बन्द हुन्छ—dashboard को API-कुञ्जी manager ले प्रत्येक कुञ्जीका लागि यसलाई toggle गर्छ)। यो सक्षम नभएमा endpoint ले `403` उत्तर दिन्छ। `?format=json` ले विभेदित संरचना फर्काउँछ, जसले गर्दा caller ले अस्वीकृतिबाट कहिल्यै data field पढ्दैन। सफल हुँदा: ```jsonc { "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` पछाडि नै रहन्छ। --- ## सिम्यान्टिक क्यास ```bash # क्यासका तथ्याङ्क प्राप्त गर्नुहोस् GET /api/cache/stats # सबै क्यासहरू खाली गर्नुहोस् DELETE /api/cache/stats ``` उत्तरको उदाहरण: ```json { "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]`) अपडेट गर्नुहोस्: ```json { "cacheDefaultMode": "bypass" } ``` ### प्रति-अनुरोध बाइपास कुञ्जीका settings जेसुकै भए पनि कुनै पनि अनुरोधले क्यास बाइपास गर्न सक्छ: ``` X-OmniRoute-No-Cache: true ``` --- ## ड्यासबोर्ड र व्यवस्थापन व्यवस्थापन रुटहरू (`/api/*`, सार्वजनिक auth/login बाहेक) साधारण inference API कुञ्जीहरूद्वारा **अधिकृत हुँदैनन्**। क्रेडेन्सियलका प्रकारहरू, स्कोपहरू, र curl उदाहरणहरू: [व्यवस्थापन प्रमाणीकरण](../guides/MANAGEMENT-AUTH.md)। ### प्रमाणीकरण | एन्डपोइन्ट | विधि | विवरण | | ----------------------------- | ------- | ------------------------------------ | | `/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](../guides/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](../ops/MONITORING_GUIDE.md#credentialhealth-probe-cache-vs-sqlite-test_status) हेर्नुहोस्। | | `/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`) आवश्यक पर्छ। प्रदायक ब्रेकर, जडान कूलडाउन र मोडेल लकआउटबीचको पूर्ण विवरणका लागि [लचिलोपन (विस्तारित)](#resilience-extended) हेर्नुहोस्। ### मूल्याङ्कनहरू | 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+)_ ```bash POST /api/system/env/repair Content-Type: application/json { "provider": "claude-code" } ``` कुनै विशिष्ट प्रदायकका हराएका वा बिग्रिएका OAuth वातावरण चरहरू मर्मत गर्छ। यसले निम्न परिणाम फर्काउँछ: ```json { "success": true, "repaired": ["CLAUDE_CODE_OAUTH_CLIENT_ID", "CLAUDE_CODE_OAUTH_CLIENT_SECRET"], "backupPath": "/home/user/.omniroute/backups/env-repair-2026-04-11.bak" } ``` --- ## अडियो ट्रान्सक्रिप्सन ```bash POST /v1/audio/transcriptions Authorization: Bearer your-api-key Content-Type: multipart/form-data ``` कन्फिगर गरिएको कुनै पनि STT प्रदायक प्रयोग गरेर अडियो फाइलहरू ट्रान्सक्राइब गर्नुहोस्। पहिलो पाथ खण्डले नेटिभ प्रदायक (`openai/…`, `deepgram/…`) चयन गर्छ। अर्को विक्रेताको मोडेल पुनः निर्यात गर्ने गेटवेहरूले योग्य id (`openrouter/deepgram/nova-3`) प्रयोग गर्छन्। **अनुरोध:** ```bash curl -X POST http://localhost:20128/v1/audio/transcriptions \ -H "Authorization: Bearer your-api-key" \ -F "file=@recording.mp3" \ -F "model=openai/whisper-1" ``` **प्रतिक्रिया:** ```json { "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 ढाँचा प्रयोग गर्ने क्लाइन्टहरूका लागि: ```bash # च्याट एन्डपोइन्ट (Ollama ढाँचा) POST /v1/api/chat # मोडेल सूचीकरण (Ollama ढाँचा) GET /api/tags ``` अनुरोधहरू Ollama र आन्तरिक ढाँचाहरूबीच स्वचालित रूपमा रूपान्तरण हुन्छन्। ## टोकनयुक्त VS Code / हेडररहित एलियासहरू कुनै इन्टिग्रेसनले `Authorization` हेडर समावेश गर्न नसक्दा र API कुञ्जीलाई आधार URL मै राख्नुपर्दा यी एलियासहरू प्रयोग गर्नुहोस्। ```bash # 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 ``` उदाहरण: ```bash 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 बाहिरको टेलिमेट्रीमा देखिन सक्छन्। तिनलाई पूर्वनिर्धारित प्रमाणीकरण मोडका रूपमा नभई अनुकूलता विकल्पका रूपमा लिनुहोस्। --- ## टेलिमेट्री ```bash # लेटेन्सी टेलिमेट्रीको सारांश प्राप्त गर्नुहोस् (प्रति प्रदायक p50/p95/p99) GET /api/telemetry/summary ``` **प्रतिक्रिया:** ```json { "providers": { "claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 }, "github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 } } } ``` --- ## बजेट ```bash # सबै 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-key **टोकन** बजेटहरू (माथिको USD-आधारित बजेटभन्दा फरक)। अनुरोध पथमै लागू गरिन्छ: कुनै key को हालको window प्रयोग यसको सीमामा पुगेपछि, अनुरोधहरू `429 Too Many Requests` सहित अस्वीकार गरिन्छन्। सीमाहरूलाई कुनै विशिष्ट `model`, `provider` मा सीमित गर्न वा key भरि `global` रूपमा लागू गर्न सकिन्छ; धेरै सीमाहरू अनुरोधसँग मेल खाएमा, सबैभन्दा प्रतिबन्धात्मक सीमा लागू हुन्छ। ```bash # कुनै 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`): `apiKeyId` र `scopeType` (`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`](../architecture/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` | वेबहुकहरूको सूची देखाउनुहोस् (गोप्य मानहरूलाई `...` का रूपमा मास्क गरिन्छ) | | 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` हेर्नुहोस्। ```bash # 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=` पठाउनुहोस् | | 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 मा पनि उपलब्ध छन्। ```bash # एउटा मोडेल लकआउट खाली गर्नुहोस् 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`](../../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.mcpEnabled` र `settings.mcpTransport` द्वारा नियन्त्रण गरिन्छ — transport नमिलेमा `400` र MCP निष्क्रिय अवस्थामा `503` फर्काइन्छ। --- ## A2A सर्भर OmniRoute ले निरीक्षण/ड्यासबोर्ड प्रयोगका लागि REST र्यापरसहित A2A (एजेन्ट-टु-एजेन्ट) JSON-RPC 2.0 एन्डपोइन्ट उपलब्ध गराउँछ। ### JSON-RPC ```bash 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`। ### एजेन्ट कार्ड ```bash 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=` | **प्रतिक्रियाको उदाहरण** (`GET /api/acp/agents`): ```json { "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 फ्रेमवर्क](../frameworks/ACP.md) हेर्नुहोस्। --- ## विश्लेषण र अवलोकनीयता राउटिङ, कम्प्रेसन र प्रदायक विविधता अनुगमन गर्नका लागि रियल-टाइम विश्लेषण एन्डपोइन्टहरू। यिनैले `/dashboard/analytics/*` पृष्ठहरूलाई सञ्चालन गर्छन्। ### स्वचालित-राउटिङ विश्लेषण | विधि | पथ | विवरण | | ---- | ------------------------------------ | ------------------------------------------------------------------------------------- | | GET | `/api/analytics/auto-routing` | समग्र स्वचालित-राउटिङ तथ्याङ्क: कुल कलहरू, रणनीति वितरण, टियर वितरण, शीर्ष प्रदायकहरू | | GET | `/api/analytics/auto-routing?days=7` | समय-अवधिमा सीमित तथ्याङ्क (पूर्वनिर्धारित 24h) | **प्रतिक्रियाको उदाहरण**: ```json { "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` | समग्र कम्प्रेसन तथ्याङ्क: बचत भएका टोकनहरू, बचत %, मोड वितरण, इन्जिन प्रयोग | **प्रतिक्रियाको उदाहरण**: ```json { "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-आधारित विविधता ट्र्याकिङ: प्रदायक फैलावट मापन गरेर विफलताको एकल बिन्दुहरू रोक्छ | **प्रतिक्रियाको उदाहरण**: ```json { "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}` | **प्रमाणीकरण:** एडमिन स्कोप भएको व्यवस्थापन सत्र आवश्यक हुन्छ। --- ## CLI उपकरण व्यवस्थापन OmniRoute सँग एकीकृत हुने CLI उपकरणहरू (antigravity, chipotle, commandCode, devin-cli, आदि) व्यवस्थापन गर्नुहोस्। पूर्ण सूचीका लागि [प्रदायक सन्दर्भ](./PROVIDER_REFERENCE.md) हेर्नुहोस्। | विधि | पथ | विवरण | | ---- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 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=` (एउटा) वा `?provider=

` वा कुनै प्यारामिटर छैन (सबै) | **प्रमाणीकरण:** व्यवस्थापन सत्र आवश्यक छ। --- ## मेमोरी प्रणाली स्थायी मेमोरी (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` | वेबहुकमा परीक्षण इभेन्ट पठाउनुहोस् | **प्रमाणीकरण:** व्यवस्थापन सत्र आवश्यक छ। सम्पूर्ण इभेन्ट प्रकारहरूका लागि [वेबहुक फ्रेमवर्क](../frameworks/WEBHOOKS.md) हेर्नुहोस्। --- ## 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 फ्रेमवर्क](../frameworks/SKILLS.md) हेर्नुहोस्। --- ## 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 फ्रेमवर्क](../frameworks/PLUGIN_SDK.md) हेर्नुहोस्। --- ## Shadow राउटिङ प्रदायकहरूको Shadow / A-B तुलना **छुट्टै REST सतह होइन** — यसलाई combo राउटिङमार्फत कन्फिगर गरिन्छ ([Auto-Combo](../routing/AUTO-COMBO.md) हेर्नुहोस्)। प्रत्येक 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](../security/GUARDRAILS.md) हेर्नुहोस्। --- --- ## प्रमाणीकरण चार प्रकारका क्रेडेन्सियल परिवारहरू (ड्यासबोर्ड सत्र, स्थानीय CLI टोकन, `oma_live_…` पहुँच टोकन, व्यवस्थापन-स्कोप गरिएको API कुञ्जी) र तिनीहरू इन्फरेन्स कुञ्जीहरूभन्दा कसरी फरक छन् भन्ने जानकारीका लागि [व्यवस्थापन प्रमाणीकरण](../guides/MANAGEMENT-AUTH.md) हेर्नुहोस्। - ड्यासबोर्ड रुटहरू (`/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`) हेर्नुहोस्।