mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-09-17 20:32:25 +03:00
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
1769 lines
178 KiB
Markdown
1769 lines
178 KiB
Markdown
# 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=<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-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 <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 उपलब्ध गराउँछन्:
|
||
|
||
```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:<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` मध्ये एक हुन्छ।
|
||
|
||
---
|
||
|
||
## एम्बेडिङहरू
|
||
|
||
```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/<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` मार्फत प्रत्येक मोडेलका लागि यो भेरियन्टलाई जबरजस्ती सक्रिय वा निष्क्रिय गर्न सक्छन्।
|
||
|
||
---
|
||
|
||
## प्रदायक प्लगइन म्यानिफेस्ट
|
||
|
||
```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=<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` प्रयोग गर्नुहोस्):
|
||
|
||
```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 <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 पढ्दैन। सफल हुँदा:
|
||
|
||
```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` | वेबहुकहरूको सूची देखाउनुहोस् (गोप्य मानहरूलाई `<prefix>...` का रूपमा मास्क गरिन्छ) |
|
||
| POST | `/api/webhooks` | वेबहुक सिर्जना गर्नुहोस् — बडी: `{url, events?: ["*"], secret?, description?}` |
|
||
| GET | `/api/webhooks/[id]` | वेबहुक प्राप्त गर्नुहोस् |
|
||
| PUT | `/api/webhooks/[id]` | url/events/secret/description अद्यावधिक गर्नुहोस् |
|
||
| DELETE | `/api/webhooks/[id]` | वेबहुक हटाउनुहोस् |
|
||
| POST | `/api/webhooks/[id]/test` | वेबहुक URL मा परीक्षण पेलोड पठाउनुहोस् र डेलिभरी स्थिति फर्काउनुहोस् |
|
||
|
||
**प्रमाणीकरण:** व्यवस्थापन सत्र/API कुञ्जी (`requireManagementAuth`)।
|
||
|
||
---
|
||
|
||
## दर्ता गरिएका कुञ्जीहरू (स्वतः-व्यवस्थापन)
|
||
|
||
दैनिक/प्रतिघण्टा कोटासहित ब्याकिङ प्रदायक/खाता प्रयोग गरेर API कुञ्जीहरू जारी र रोटेट गर्न स्वतः-कुञ्जी व्यवस्थापन उपप्रणालीद्वारा प्रयोग गरिन्छ।
|
||
|
||
| विधि | पाथ | विवरण |
|
||
| ------ | ------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| GET | `/api/v1/registered-keys` | दर्ता गरिएका कुञ्जीहरूको सूची देखाउनुहोस् (मास्क गरिएको प्रिफिक्स मात्र) |
|
||
| POST | `/api/v1/registered-keys` | नयाँ दर्ता गरिएको कुञ्जी जारी गर्नुहोस् — बडी: `{name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}`। कच्चा कुञ्जी **एक पटक मात्र** फर्काउँछ। कोटा अस्वीकार भएमा `429` फर्काउँछ। |
|
||
| GET | `/api/v1/registered-keys/[id]` | दर्ता गरिएको कुञ्जीको मेटाडेटा प्राप्त गर्नुहोस् (कच्चा सामग्रीबिना) |
|
||
| DELETE | `/api/v1/registered-keys/[id]` | दर्ता गरिएको कुञ्जी रद्द गर्नुहोस् |
|
||
| POST | `/api/v1/registered-keys/[id]/revoke` | स्पष्ट रद्दीकरण एन्डपोइन्ट (DELETE कै समान प्रभाव) |
|
||
|
||
**प्रमाणीकरण:** Bearer API कुञ्जी (`isAuthenticated`)। `/v1/quotas/check` र `/v1/issues/report` पनि हेर्नुहोस्।
|
||
|
||
---
|
||
|
||
## एजेन्ट्स प्रोटोकल
|
||
|
||
OmniRoute प्रयोगकर्ताहरूको तर्फबाट टाढैबाट कार्यान्वयन गरिने क्लाउड एजेन्ट कार्यहरू (Claude Code, Codex Cloud, OpenHands, आदि)।
|
||
|
||
| विधि | पथ | विवरण |
|
||
| ------ | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||
| GET | `/api/v1/agents/tasks` | कार्यहरू सूचीबद्ध गर्छ — वैकल्पिक `?provider=`, `?status=`, `?limit=` (1–500, पूर्वनिर्धारित 50) |
|
||
| POST | `/api/v1/agents/tasks` | कार्य सिर्जना गर्छ — अनुरोधको मुख्य भाग `CreateCloudAgentTaskSchema` (`providerId`, `prompt`, `source`, `options?`) द्वारा प्रमाणीकरण गरिन्छ। कार्य आवरणसहित `201` फर्काउँछ |
|
||
| DELETE | `/api/v1/agents/tasks?id=...` | कार्य मेटाउँछ |
|
||
| GET | `/api/v1/agents/tasks/[id]` | कार्य पढ्छ — `external_id` सेट गरिएको हुँदा अपस्ट्रिम क्लाउड एजेन्टबाट स्थिति समकालिक रूपमा ताजा गर्छ |
|
||
| POST | `/api/v1/agents/tasks/[id]` | विभेदित कार्य: `{action: "approve"}`, `{action: "message", message}`, वा `{action: "cancel"}` |
|
||
| DELETE | `/api/v1/agents/tasks/[id]` | id द्वारा निर्दिष्ट कार्य मेटाउँछ |
|
||
|
||
> **प्रमाणीकरण:** प्रत्येक विधिमा व्यवस्थापन प्रमाणीकरण आवश्यक छ (`requireCloudAgentManagementAuth`)। v3.8.0 भन्दा पहिले यी अप्रमाणीकृत थिए — महत्त्वपूर्ण परिवर्तनका लागि कमिट `588a0333` हेर्नुहोस्।
|
||
|
||
```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=<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=<agentId>` |
|
||
|
||
**प्रतिक्रियाको उदाहरण** (`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<string, number>}` |
|
||
|
||
**प्रमाणीकरण:** एडमिन स्कोप भएको व्यवस्थापन सत्र आवश्यक हुन्छ।
|
||
|
||
---
|
||
|
||
## 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=<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` | वेबहुकमा परीक्षण इभेन्ट पठाउनुहोस् |
|
||
|
||
**प्रमाणीकरण:** व्यवस्थापन सत्र आवश्यक छ।
|
||
|
||
सम्पूर्ण इभेन्ट प्रकारहरूका लागि [वेबहुक फ्रेमवर्क](../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`) हेर्नुहोस्।
|