# 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) · 🇰🇷 [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) · 🇳🇵 [ne](../../../ne/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) --- 🌐 **ಭಾಷೆಗಳು:** 🇺🇸 [English](./API_REFERENCE.md) | 🇪🇹 [አማርኛ](../i18n/am/docs/reference/API_REFERENCE.md) | 🇸🇦 [العربية](../i18n/ar/docs/reference/API_REFERENCE.md) | 🇦🇿 [Azərbaycan dili](../i18n/az/docs/reference/API_REFERENCE.md) | 🇧🇬 [Български](../i18n/bg/docs/reference/API_REFERENCE.md) | 🇧🇩 [বাংলা](../i18n/bn/docs/reference/API_REFERENCE.md) | 🇨🇿 [Čeština](../i18n/cs/docs/reference/API_REFERENCE.md) | 🇩🇰 [Dansk](../i18n/da/docs/reference/API_REFERENCE.md) | 🇩🇪 [Deutsch](../i18n/de/docs/reference/API_REFERENCE.md) | 🇬🇷 [Ελληνικά](../i18n/el/docs/reference/API_REFERENCE.md) | 🇪🇸 [Español](../i18n/es/docs/reference/API_REFERENCE.md) | 🇪🇪 [Eesti](../i18n/et/docs/reference/API_REFERENCE.md) | 🇮🇷 [فارسی](../i18n/fa/docs/reference/API_REFERENCE.md) | 🇫🇮 [Suomi](../i18n/fi/docs/reference/API_REFERENCE.md) | 🇫🇷 [Français](../i18n/fr/docs/reference/API_REFERENCE.md) | 🇮🇪 [Gaeilge](../i18n/ga/docs/reference/API_REFERENCE.md) | 🇮🇳 [ગુજરાતી](../i18n/gu/docs/reference/API_REFERENCE.md) | 🇳🇬 [Hausa](../i18n/ha/docs/reference/API_REFERENCE.md) | 🇮🇱 [עברית](../i18n/he/docs/reference/API_REFERENCE.md) | 🇮🇳 [हिन्दी](../i18n/hi/docs/reference/API_REFERENCE.md) | 🇭🇷 [Hrvatski](../i18n/hr/docs/reference/API_REFERENCE.md) | 🇭🇺 [Magyar](../i18n/hu/docs/reference/API_REFERENCE.md) | 🇦🇲 [Հայերեն](../i18n/hy/docs/reference/API_REFERENCE.md) | 🇮🇩 [Bahasa Indonesia](../i18n/id/docs/reference/API_REFERENCE.md) | 🇳🇬 [Igbo](../i18n/ig/docs/reference/API_REFERENCE.md) | 🇮🇹 [Italiano](../i18n/it/docs/reference/API_REFERENCE.md) | 🇯🇵 [日本語](../i18n/ja/docs/reference/API_REFERENCE.md) | 🇬🇪 [ქართული](../i18n/ka/docs/reference/API_REFERENCE.md) | 🇰🇭 [ខ្មែរ](../i18n/km/docs/reference/API_REFERENCE.md) | 🇮🇳 [ಕನ್ನಡ](../i18n/kn/docs/reference/API_REFERENCE.md) | 🇰🇷 [한국어](../i18n/ko/docs/reference/API_REFERENCE.md) | 🇱🇹 [Lietuvių](../i18n/lt/docs/reference/API_REFERENCE.md) | 🇱🇻 [Latviešu](../i18n/lv/docs/reference/API_REFERENCE.md) | 🇮🇳 [മലയാളം](../i18n/ml/docs/reference/API_REFERENCE.md) | 🇮🇳 [मराठी](../i18n/mr/docs/reference/API_REFERENCE.md) | 🇲🇾 [Bahasa Melayu](../i18n/ms/docs/reference/API_REFERENCE.md) | 🇲🇹 [Malti](../i18n/mt/docs/reference/API_REFERENCE.md) | 🇲🇲 [မြန်မာ](../i18n/my/docs/reference/API_REFERENCE.md) | 🇳🇵 [नेपाली](../i18n/ne/docs/reference/API_REFERENCE.md) | 🇳🇱 [Nederlands](../i18n/nl/docs/reference/API_REFERENCE.md) | 🇳🇴 [Norsk](../i18n/no/docs/reference/API_REFERENCE.md) | 🇮🇳 [ଓଡ଼ିଆ](../i18n/or/docs/reference/API_REFERENCE.md) | 🇮🇳 [ਪੰਜਾਬੀ](../i18n/pa/docs/reference/API_REFERENCE.md) | 🇵🇭 [Filipino](../i18n/phi/docs/reference/API_REFERENCE.md) | 🇵🇱 [Polski](../i18n/pl/docs/reference/API_REFERENCE.md) | 🇵🇹 [Português (Portugal)](../i18n/pt/docs/reference/API_REFERENCE.md) | 🇧🇷 [Português (Brasil)](../i18n/pt-BR/docs/reference/API_REFERENCE.md) | 🇷🇴 [Română](../i18n/ro/docs/reference/API_REFERENCE.md) | 🇷🇺 [Русский](../i18n/ru/docs/reference/API_REFERENCE.md) | 🇱🇰 [සිංහල](../i18n/si/docs/reference/API_REFERENCE.md) | 🇸🇰 [Slovenčina](../i18n/sk/docs/reference/API_REFERENCE.md) | 🇸🇮 [Slovenščina](../i18n/sl/docs/reference/API_REFERENCE.md) | 🇷🇸 [Српски](../i18n/sr/docs/reference/API_REFERENCE.md) | 🇸🇪 [Svenska](../i18n/sv/docs/reference/API_REFERENCE.md) | 🇰🇪 [Kiswahili](../i18n/sw/docs/reference/API_REFERENCE.md) | 🇮🇳 [தமிழ்](../i18n/ta/docs/reference/API_REFERENCE.md) | 🇮🇳 [తెలుగు](../i18n/te/docs/reference/API_REFERENCE.md) | 🇹🇭 [ไทย](../i18n/th/docs/reference/API_REFERENCE.md) | 🇹🇷 [Türkçe](../i18n/tr/docs/reference/API_REFERENCE.md) | 🇺🇦 [Українська](../i18n/uk-UA/docs/reference/API_REFERENCE.md) | 🇵🇰 [اردو](../i18n/ur/docs/reference/API_REFERENCE.md) | 🇺🇿 [Oʻzbekcha](../i18n/uz/docs/reference/API_REFERENCE.md) | 🇻🇳 [Tiếng Việt](../i18n/vi/docs/reference/API_REFERENCE.md) | 🇳🇬 [Yorùbá](../i18n/yo/docs/reference/API_REFERENCE.md) | 🇨🇳 [中文 (简体)](../i18n/zh-CN/docs/reference/API_REFERENCE.md) | 🇹🇼 [中文 (繁體)](../i18n/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) - [ಫೈಲ್ಗಳ API](#files-api) - [ಬ್ಯಾಚ್ಗಳ API](#batches-api) - [ಹುಡುಕಾಟ 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` ಎಂದು ಹೊಂದಿಸಿ (ನೋ-ಕ್ಯಾಶ್ನಂತೆಯೇ; ಪ್ರತಿ-ಕರೆ ಟೋಕನ್/ವೆಚ್ಚದ ಹೆಚ್ಚುವರಿ ಹೊರೆಯನ್ನು ತಪ್ಪಿಸುತ್ತದೆ) | | `X-OmniRoute-Progress` | ವಿನಂತಿ | ಪ್ರಗತಿ ಈವೆಂಟ್ಗಳಿಗಾಗಿ `true` ಎಂದು ಹೊಂದಿಸಿ | | `X-Session-Id` | ವಿನಂತಿ | ಬಾಹ್ಯ ಸೆಷನ್ ಅಫಿನಿಟಿಗಾಗಿ ಸ್ಟಿಕಿ ಸೆಷನ್ ಕೀ | | `x_session_id` | ವಿನಂತಿ | ಅಂಡರ್ಸ್ಕೋರ್ ರೂಪಾಂತರವನ್ನೂ ಸ್ವೀಕರಿಸಲಾಗುತ್ತದೆ (ನೇರ HTTP) | | `X-OmniRoute-Session-Id` | ವಿನಂತಿ | ಕರೆ ಮಾಡುವವರು ಒದಗಿಸಿದ ಸೆಷನ್/ಸಂಭಾಷಣೆ ಟ್ಯಾಗ್ (ಮೆಮೊರಿಗೂ ಒದಗಿಸಲಾಗುತ್ತದೆ). ಇದ್ದಾಗ, ಪ್ರತಿ-ಸೆಷನ್ ವೆಚ್ಚದ ಗುಣಲಕ್ಷಣಕ್ಕಾಗಿ `call_logs.session_tag` ಗೆ ಯಥಾವತ್ತಾಗಿ ಉಳಿಸಲಾಗುತ್ತದೆ (#8249) — ಇಲ್ಲದಿದ್ದಾಗ ಎಂದಿಗೂ ಸಂಶ್ಲೇಷಿಸಲಾಗುವುದಿಲ್ಲ | | `Idempotency-Key` | ವಿನಂತಿ | ನಕಲು ನಿವಾರಣಾ ಕೀ (5s ವಿಂಡೋ) | | `X-Request-Id` | ವಿನಂತಿ | ಪರ್ಯಾಯ ನಕಲು ನಿವಾರಣಾ ಕೀ | | `X-OmniRoute-Cache` | ಪ್ರತಿಕ್ರಿಯೆ | `HIT` ಅಥವಾ `MISS` (ಸ್ಟ್ರೀಮಿಂಗ್ ಅಲ್ಲದ) | | `X-OmniRoute-Idempotent` | ಪ್ರತಿಕ್ರಿಯೆ | ನಕಲು ನಿವಾರಿಸಿದ್ದರೆ `true` | | `X-OmniRoute-Progress` | ಪ್ರತಿಕ್ರಿಯೆ | ಪ್ರಗತಿ ಟ್ರ್ಯಾಕಿಂಗ್ ಚಾಲನೆಯಲ್ಲಿದ್ದರೆ `enabled` | | `X-OmniRoute-Session-Id` | ಪ್ರತಿಕ್ರಿಯೆ | OmniRoute ಬಳಸಿದ ಪರಿಣಾಮಕಾರಿ ಸೆಷನ್ ID | | `X-OmniRoute-Request-Id` | ಪ್ರತಿಕ್ರಿಯೆ | ವಿನಂತಿ ಸಹಸಂಬಂಧ ID (ತಿಳಿದಿರುವಾಗ) | | `X-OmniRoute-Version` | ಪ್ರತಿಕ್ರಿಯೆ | OmniRoute ಬಿಲ್ಡ್ ಆವೃತ್ತಿ (ಯಾವಾಗಲೂ ಇರುತ್ತದೆ) | | `X-OmniRoute-Cost-Saved` | ಪ್ರತಿಕ್ರಿಯೆ | HIT ಮೂಲಕ ಕ್ಯಾಶ್ ತಪ್ಪಿಸಿದ USD ವೆಚ್ಚ (ಕ್ಯಾಶ್ ಹಿಟ್ಗಳಿಗೆ ಮಾತ್ರ) | | `X-OmniRoute-Decision` | ಪ್ರತಿಕ್ರಿಯೆ | ರೂಟಿಂಗ್ ಟ್ರೇಸ್: `strategy=; provider=; latency_ms=` (`` ಎಂಬುದು ಕಾಂಬೊ ತಂತ್ರ, ಅಥವಾ ಕಾಂಬೊ ಅಲ್ಲದ ವಿನಂತಿಗೆ `single`) — ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ ಪ್ರತಿಕ್ರಿಯೆಗಳಲ್ಲಿ ಯಾವಾಗಲೂ ಇರುತ್ತದೆ | > Nginx ಸೂಚನೆ: ನೀವು ಅಂಡರ್ಸ್ಕೋರ್ ಹೆಡರ್ಗಳನ್ನು ಅವಲಂಬಿಸಿದ್ದರೆ (ಉದಾಹರಣೆಗೆ `x_session_id`), `underscores_in_headers on;` ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ. > **ವೆಚ್ಚದ ಟೆಲಿಮೆಟ್ರಿ ಹೆಡರ್ಗಳು:** ಸ್ಟ್ರೀಮಿಂಗ್ ಅಲ್ಲದ ಯಶಸ್ವಿ ಪ್ರತಿಕ್ರಿಯೆಗಳು `X-OmniRoute-*` ವೆಚ್ಚ-ಟೆಲಿಮೆಟ್ರಿ ಸಮೂಹವನ್ನೂ ಒಳಗೊಂಡಿರುತ್ತವೆ — `X-OmniRoute-Response-Cost` (USD, ನಿಗದಿತ 10 ದಶಮಾಂಶಗಳು; ಉಚಿತ/ಬೆಲೆ ನಿಗದಿಪಡಿಸದವುಗಳಿಗೆ `0.0000000000`), `X-OmniRoute-Tokens-In` / `X-OmniRoute-Tokens-Out`, `X-OmniRoute-Model`, `X-OmniRoute-Provider`, `X-OmniRoute-Latency-Ms`, `X-OmniRoute-Cache-Hit`, ಮತ್ತು `X-OmniRoute-Fallback-Attempts` (> 0 ಆಗಿರುವಾಗ ಮಾತ್ರ), ಜೊತೆಗೆ `X-OmniRoute-Request-Id` ಮತ್ತು `X-OmniRoute-Version`. ಇವುಗಳನ್ನು ಚಾಟ್ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಗಳು, `/v1/responses`, `/v1/messages`, **ಮತ್ತು ಮೀಡಿಯಾ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು** — `/v1/embeddings`, `/v1/images/generations`, `/v1/audio/speech`, `/v1/audio/transcriptions`, `/v1/rerank`, `/v1/videos/generations`, `/v1/music/generations`, ಮತ್ತು `/v1/moderations` (ವೆಚ್ಚ ಯಾವಾಗಲೂ `0`) — ಹೊರಸೂಸುತ್ತವೆ. ಬೆಲೆ ಲಭ್ಯವಿದ್ದಾಗ ಮೀಡಿಯಾ ವೆಚ್ಚವನ್ನು ಪ್ರತಿ ಮಾಡ್ಯಾಲಿಟಿಗೆ (ಪ್ರತಿ-ಚಿತ್ರ, ಪ್ರತಿ-ಸೆಕೆಂಡ್, ಪ್ರತಿ-ಅಕ್ಷರ, ಪ್ರತಿ ಹುಡುಕಾಟ-ಘಟಕ) ಲೆಕ್ಕಹಾಕಲಾಗುತ್ತದೆ; ಇಲ್ಲದಿದ್ದರೆ `0` (ಫೇಲ್-ಓಪನ್). > **ಕ್ಯಾಶ್-ಹಿಟ್ ವೆಚ್ಚದ ಅರ್ಥವ್ಯಾಪ್ತಿ:** ಸೆಮ್ಯಾಂಟಿಕ್-ಕ್ಯಾಶ್ HIT (`X-OmniRoute-Cache-Hit: true`) ನಲ್ಲಿ ಅಪ್ಸ್ಟ್ರೀಮ್ ಕರೆ ಮಾಡಲಾಗುವುದಿಲ್ಲ, ಆದ್ದರಿಂದ `X-OmniRoute-Response-Cost` ಎಂಬುದು `0.0000000000` ಆಗಿರುತ್ತದೆ (ಹಿಟ್ ಅನ್ನು ಒದಗಿಸುವ **ಹೆಚ್ಚುವರಿ** ವೆಚ್ಚ). ಮೂಲ/ಆಗಬಹುದಾಗಿದ್ದ ವೆಚ್ಚವನ್ನು `X-OmniRoute-Cost-Saved` ನಲ್ಲಿ ಪ್ರತ್ಯೇಕವಾಗಿ ವರದಿ ಮಾಡಲಾಗುತ್ತದೆ. ಬಿಲ್ಲಿಂಗ್ ಬಳಕೆದಾರರು `X-OmniRoute-Response-Cost` ಮೊತ್ತವನ್ನು ಕೂಡಿಸಬೇಕು (ಹಿಟ್ಗಳಿಗೆ ಯಾವುದೇ ವೆಚ್ಚವಿಲ್ಲ); ಕ್ಯಾಶ್ ವಿಶ್ಲೇಷಣೆಯು `X-OmniRoute-Cost-Saved` ಅನ್ನು ಒಟ್ಟುಗೂಡಿಸಬಹುದು. ## ವಿಶೇಷ ನಿರ್ವಹಿತ ಸೆಷನ್ ಲೀಸ್ಗಳು ವಿಶೇಷ ನಿರ್ವಹಿತ ಸೆಷನ್ ಲೀಸ್ ಮಾಡುವುದು ಆಯ್ಕೆಮಾಡಬಹುದಾದ, ಕ್ಲೈಂಟ್-ತಟಸ್ಥ ರೌಟಿಂಗ್ ಒಪ್ಪಂದವಾಗಿದೆ: ಒಬ್ಬ ಸಕ್ರಿಯ ಮಾಲೀಕರು ಒಂದು ಅರ್ಹ OmniRoute ಸಂಪರ್ಕವನ್ನು ಹೊಂದಿರುತ್ತಾರೆ. ಇದು ಯಾವುದೇ ಮಾದರಿಯನ್ನು ಲೀಸ್ ಮಾಡುವುದಿಲ್ಲ, OAuth ಅಗತ್ಯಪಡಿಸುವುದಿಲ್ಲ, ನಿರ್ದಿಷ್ಟ ಕ್ಲೈಂಟ್ ಅನ್ನು ಗುರುತಿಸುವುದಿಲ್ಲ ಅಥವಾ ನಿರ್ದಿಷ್ಟ ಪೂರೈಕೆದಾರರನ್ನು ಕಡ್ಡಾಯಗೊಳಿಸುವುದಿಲ್ಲ. ದೃಢೀಕರಣಕ್ಕಾಗಿ ಬಳಸುವ API ಕೀ `lease:exclusive` ವ್ಯಾಪ್ತಿಯನ್ನೂ, ಸ್ಪಷ್ಟವಾಗಿ ಖಾಲಿಯಲ್ಲದ `allowedConnections` ಪಟ್ಟಿಯನ್ನೂ ಹೊಂದಿರಬೇಕು. ಕೀ ರಚನೆ ಮತ್ತು ಭಾಗಶಃ ನವೀಕರಣಗಳ ವೇಳೆ ಡೇಟಾಬೇಸ್ ಮ್ಯುಟೇಶನ್ ಗಡಿಯು ಎರಡೂ ಕ್ಷೇತ್ರಗಳನ್ನು ಒಟ್ಟಿಗೆ ಜಾರಿಗೊಳಿಸುತ್ತದೆ. ```http POST /api/v1/session-leases Authorization: Bearer Content-Type: application/json X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters> {"action":"acquire","model":"glm/glm-4.6"} ``` ಯಶಸ್ವಿ ಸ್ವಾಧೀನ, ನವೀಕರಣ ಮತ್ತು ಬಿಡುಗಡೆ ಪ್ರತಿಕ್ರಿಯೆಗಳು ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳು, `state` ಮತ್ತು ನಿಖರವಾದ ಧನಾತ್ಮಕ `generation` ಅನ್ನು ಬಹಿರಂಗಪಡಿಸುತ್ತವೆ, ಆದರೆ ಆಯ್ಕೆಮಾಡಿದ ಸಂಪರ್ಕ ಅಥವಾ ರುಜುವಾತುಗಳನ್ನು ಎಂದಿಗೂ ಬಹಿರಂಗಪಡಿಸುವುದಿಲ್ಲ. ನವೀಕರಣ ಮತ್ತು ಬಿಡುಗಡೆಯು 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" } } ``` ಈ ಆಯ್ಕೆಮಾಡಬಹುದಾದ ಸ್ಥಿತಿ ಕ್ರಿಯೆಯನ್ನು ಒಂದೇ ಡೇಟಾಬೇಸ್ ವಹಿವಾಟಿನಲ್ಲಿ ಅಪಾರದರ್ಶಕ ಮಾಲೀಕ, ದೃಢೀಕರಿಸಿದ ನಿರ್ವಹಿತ API ಕೀ ಮತ್ತು ನಿಖರವಾದ ಸಕ್ರಿಯ generation ಮೂಲಕ ಫೆನ್ಸ್ ಮಾಡಲಾಗುತ್ತದೆ. `displayName` ಕೇವಲ ಟ್ರಿಮ್ ಮಾಡಲಾದ ಸಂರಚಿತ ಸಂಪರ್ಕದ ಹೆಸರಾಗಿದೆ; ಸುರಕ್ಷಿತವಾಗಿ ಸಂರಚಿತ ಹೆಸರು ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದಿದ್ದಾಗ ಅದು `null` ಆಗಿರುತ್ತದೆ. OmniRoute ಎಂದಿಗೂ ಇಮೇಲ್ ಅಥವಾ ರಚಿಸಲಾದ ಖಾತೆ ಗುರುತನ್ನು ಬದಲಿಯಾಗಿ ಬಳಸುವುದಿಲ್ಲ. ಪೂರೈಕೆದಾರ ಮೌಲ್ಯವು ಸೂಕ್ಷ್ಮವಲ್ಲದ ಪ್ರದರ್ಶನ ಲೇಬಲ್ ಆಗಿದ್ದು, ಎಂದಿಗೂ ರಚಿಸಲಾದ ಹೊಂದಾಣಿಕೆಯ-ಪೂರೈಕೆದಾರ ಗುರುತಿಸುವಿಕೆಯಾಗಿರುವುದಿಲ್ಲ. ರುಜುವಾತುಗಳು, ಟೋಕನ್ಗಳು, ಕುಕೀಗಳು, ಕಚ್ಚಾ ಸಂಪರ್ಕ ಅಥವಾ API ಕೀ idಗಳು, ಮಾಲೀಕರ ಹ್ಯಾಶ್ಗಳು, ಫೆನ್ಸಿಂಗ್ ರಹಸ್ಯಗಳು ಮತ್ತು ಆಂತರಿಕ ರೌಟಿಂಗ್ ಡೇಟಾವನ್ನು ಹೊರಗಿಡಲಾಗುತ್ತದೆ. ತಪ್ಪಾದ ಕೀ, ತಪ್ಪಾದ ಮಾಲೀಕ, ಹಳೆಯ generation, ಕಾಣೆಯಾದ, ಅವಧಿ ಮೀರಿದ, ಬಿಡುಗಡೆ ಮಾಡಲಾದ ಮತ್ತು ಅಮಾನ್ಯಗೊಳಿಸಲಾದ ಲುಕ್ಅಪ್ಗಳೆಲ್ಲವೂ ಸಂಪರ್ಕ ಮೆಟಾಡೇಟಾವಿಲ್ಲದೆ ಒಂದೇ `409 LEASE_FENCE_STALE` ದೋಷವನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತವೆ. ಸಾಮರ್ಥ್ಯಕ್ಕಾಗಿ ಕಾಯುವ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಪಡೆದ ಕ್ಲೈಂಟ್ ಪರಿಶೀಲಿಸಲು ಯಾವುದೇ ಸಕ್ರಿಯ ಬೈಂಡಿಂಗ್ ಹೊಂದಿರುವುದಿಲ್ಲ. ರೌಟಿಂಗ್ ಸಕ್ರಿಯ ಲೀಸ್ ಅನ್ನು ಪರಿವರ್ತಿಸಿದಾಗ, ಅದೇ generation ಮಾನ್ಯವಾಗಿ ಉಳಿಯುತ್ತದೆ ಮತ್ತು ಸ್ಥಿತಿಯು ಹಳೆಯದನ್ನು ಎಂದಿಗೂ ಹಿಂದಿರುಗಿಸದೆ ಹೊಸ ಬೈಂಡಿಂಗ್ ಅನ್ನು ಅಣುವೀಯವಾಗಿ ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಸ್ವಾಧೀನ, ನವೀಕರಣ, ಬಿಡುಗಡೆ ಮತ್ತು ಕಾಯುವಿಕೆಯ ಪ್ರತಿಕ್ರಿಯೆಗಳು ತಮ್ಮ ಹಿಂದಿನ ಸ್ವರೂಪಗಳನ್ನೇ ಉಳಿಸಿಕೊಳ್ಳುವುದರಿಂದ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಕ್ಲೈಂಟ್ಗಳು ಬದಲಾಗುವುದಿಲ್ಲ. ಈ ಸರ್ವರ್ ಒಪ್ಪಂದವು ಮೂಲ 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 } ``` ಈ ಪ್ರತಿಕ್ರಿಯೆಯ ಅರ್ಥ ಸಾಮಾನ್ಯ ಅರ್ಹ ಸೆಟ್ ಖಾಲಿಯಾಗಿರಲಿಲ್ಲ ಮತ್ತು ಪ್ರತಿಯೊಂದು ಮುಕ್ತ ಅಭ್ಯರ್ಥಿಯನ್ನೂ ಬೇರೊಬ್ಬರ ಸಕ್ರಿಯ ಲೀಸ್ ಹಿಡಿದಿತ್ತು ಎಂಬುದಷ್ಟೇ. ಬೆಂಬಲವಿಲ್ಲದ ಮಾದರಿಗಳು/ಪೂರೈಕೆದಾರರು, ನೀತಿ ಅಸಾಮರಸ್ಯ, ಕೂಲ್ಡೌನ್, ಕೋಟಾ, ಆರೋಗ್ಯ ಮತ್ತು ಇತರ ಸಾಮಾನ್ಯ ಅರ್ಹತಾ ವೈಫಲ್ಯಗಳು ತಮ್ಮ ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ OmniRoute ಪ್ರತಿಕ್ರಿಯೆಗಳನ್ನೇ ಉಳಿಸಿಕೊಳ್ಳುತ್ತವೆ. ### `x-omniroute-compression` ಪ್ರತಿ ವಿನಂತಿಗೆ ಕಂಪ್ರೆಷನ್ ಯೋಜನೆಯ ಓವರ್ರೈಡ್. ಇದಕ್ಕೆ ಅತ್ಯುನ್ನತ ಆದ್ಯತೆ ಇದೆ — ಇದು ರೌಟಿಂಗ್-ಕಾಂಬೊ ಓವರ್ರೈಡ್, ಸಕ್ರಿಯ ಪ್ರೊಫೈಲ್, ಸ್ವಯಂ-ಟ್ರಿಗರ್ ಮತ್ತು ಪ್ಯಾನೆಲ್ Default ಅನ್ನು ಮೀರಿಸುತ್ತದೆ. ಮೌಲ್ಯಗಳು: | ಮೌಲ್ಯ | ಪರಿಣಾಮ | | ------------- | -------------------------------------------------------------------------------------------- | | `off` | ಈ ವಿನಂತಿಗೆ ಕಂಪ್ರೆಷನ್ ಇಲ್ಲ. | | `default` | ಪ್ಯಾನೆಲ್ನಿಂದ ಪಡೆದ Default ಪ್ರೊಫೈಲ್ (ಸಕ್ರಿಯ ಪ್ರೊಫೈಲ್ ಅನ್ನು ನಿರ್ಲಕ್ಷಿಸುತ್ತದೆ). | | `engine:` | ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ ಒಂದೇ ಎಂಜಿನ್, ಉದಾ. `engine:rtk`. | | `` | ಹೆಸರಿನ ಆಧಾರದ ಮೇಲೆ ಮೊದಲು (ಕೇಸ್-ಇನ್ಸೆನ್ಸಿಟಿವ್ ಆಗಿ), ನಂತರ id ಆಧಾರದ ಮೇಲೆ ಹೊಂದಿಸಲಾದ ಹೆಸರಿತ ಕಾಂಬೊ. | ಟಿಪ್ಪಣಿಗಳು: - ಅಜ್ಞಾತ ಮೌಲ್ಯಗಳನ್ನು ನಿರ್ಲಕ್ಷಿಸಲಾಗುತ್ತದೆ (ವಿನಂತಿಯನ್ನು ಎಂದಿಗೂ ತಿರಸ್ಕರಿಸಲಾಗುವುದಿಲ್ಲ); ರೆಸಲ್ಯೂಷನ್ ಸಾಮಾನ್ಯ ಆಪರೇಟರ್ ಆದ್ಯತೆಯ ಕ್ರಮಕ್ಕೆ ಮುಂದುವರಿಯುತ್ತದೆ. - ಹಲವು ಕಾಂಬೊಗಳು ಒಂದೇ ಹೆಸರನ್ನು ಹಂಚಿಕೊಂಡಿದ್ದರೆ, ನಿರ್ಣಾಯಕ ಹೊಂದಾಣಿಕೆಗಾಗಿ ಕಾಂಬೊ **id** ಅನ್ನು ರವಾನಿಸಿ. - `off` ಅಥವಾ `default` ಹೆಸರಿನ ಕಾಂಬೊವನ್ನು ಹೆಸರಿನ ಮೂಲಕ ಆಯ್ಕೆಮಾಡಲಾಗುವುದಿಲ್ಲ (ಆ ಕೀವರ್ಡ್ಗಳನ್ನು ಮೊದಲು ಅರ್ಥೈಸಲಾಗುತ್ತದೆ); ಅಂತಹ ಕಾಂಬೊವನ್ನು ಅದರ id ಮೂಲಕ ಉಲ್ಲೇಖಿಸಿ. - ಮಾಸ್ಟರ್ ಕಂಪ್ರೆಷನ್ ಸ್ವಿಚ್ ಕಟ್ಟುನಿಟ್ಟಾದ ಗೇಟ್ ಆಗಿದೆ: ಕಂಪ್ರೆಷನ್ ಅನ್ನು ಜಾಗತಿಕವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದಾಗ, ಈ ಹೆಡರ್ ಅದನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಅನ್ವಯಿಸಲಾದ ಯೋಜನೆಯನ್ನು ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ನಲ್ಲಿ ಮರಳಿ ಪ್ರತಿಧ್ವನಿಸಲಾಗುತ್ತದೆ: ``` X-OmniRoute-Compression: ; source= ``` ಇಲ್ಲಿ `` ಎಂಬುದು `request-header`, `routing-override`, `active-profile`, `auto-trigger`, `default`, ಅಥವಾ `off` ಇವುಗಳಲ್ಲಿ ಒಂದಾಗಿರುತ್ತದೆ. --- ## ಎಂಬೆಡಿಂಗ್ಗಳು ```bash POST /v1/embeddings Authorization: Bearer your-api-key Content-Type: application/json { "model": "nebius/Qwen/Qwen3-Embedding-8B", "input": "The food was delicious" } ``` ಲಭ್ಯವಿರುವ ಪೂರೈಕೆದಾರರು: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, **OpenRouter**, Jina AI. ಕ್ಯಾಟಲಾಗ್ ಐಡಿಗಳು `provider/model` ಸ್ವರೂಪದಲ್ಲಿರುತ್ತವೆ (ಉದಾಹರಣೆ: `jina-ai/jina-embeddings-v5-omni-small`). ರಿಜಿಸ್ಟ್ರಿಯಲ್ಲಿ ಕಾಣಿಸುವ ಪೂರೈಕೆದಾರ ಪೂರ್ವಪ್ರತ್ಯಯವಿಲ್ಲದ Jina ಮಾದರಿ ಐಡಿಗಳೂ (ಉದಾಹರಣೆಗೆ `jina-embeddings-v5-text-small`, `jina-reranker-v3.5`) ಪರಿಹರಿಸಲ್ಪಡುತ್ತವೆ. Jina embed/rerank/classify/segment ಮೊದಲು ಡ್ಯಾಶ್ಬೋರ್ಡ್ನ `jina-ai` ರುಜುವಾತುಗಳನ್ನು ಬಳಸುತ್ತವೆ; ಯಾವುದೇ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಕೀ ಇಲ್ಲದಿದ್ದಾಗ ಮಾತ್ರ `JINA_AI_API_KEY` ಅನ್ನು ಪರ್ಯಾಯವಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. `jina-reader` ಕಾರ್ಡ್ Reader / `r.jina.ai` ಗಾಗಿ ಮಾತ್ರ (`POST /v1/web/fetch`) ಮತ್ತು ಅದು ಎಂದಿಗೂ ಎಂಬೆಡಿಂಗ್ಗಳು ಅಥವಾ ರೀರ್ಯಾಂಕ್ ಸೇವೆಯನ್ನು ಒದಗಿಸುವುದಿಲ್ಲ. ಬಹುಮಾಧ್ಯಮ ಬೆಂಬಲವನ್ನು ಸೂಚಿಸುವ ರಿಜಿಸ್ಟ್ರಿ ಮಾದರಿಗಳು, ಪೂರೈಕೆದಾರ-ತಟಸ್ಥವಾದ ರಚನಾತ್ಮಕ ಐಟಂಗಳನ್ನು ಗರಿಷ್ಠ 32ರವರೆಗೆ ಸ್ವೀಕರಿಸುತ್ತವೆ. ಮಾಧ್ಯಮ ಐಟಂ ಪ್ರಕಾರಗಳು `text`, `image`, `audio`, `video`, ಮತ್ತು `document`. ಅವುಗಳ ಮಾಧ್ಯಮ `source` `{"type":"url","url":"https://..."}` ಅಥವಾ `{"type":"base64","data":"...","media_type":"..."}` ಆಗಿರುತ್ತದೆ. Jina v5 Omni (`jina-ai/jina-embeddings-v5-omni-small`, `jina-ai/jina-embeddings-v5-omni-nano`, ಮತ್ತು ಫ್ಯಾಮಿಲಿ ಅಲಿಯಾಸ್ `jina-ai/jina-embeddings-v5-omni` → omni-small) Jinaದ ಸ್ಥಳೀಯ EmbeddingsV5Request ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನೂ ಸ್ವೀಕರಿಸುತ್ತದೆ ಮತ್ತು ಅವುಗಳನ್ನು `https://api.jina.ai/v1/embeddings` ಗೆ **ಯಾವುದೇ ಬದಲಾವಣೆಯಿಲ್ಲದೆ ಫಾರ್ವರ್ಡ್ ಮಾಡುತ್ತದೆ**: ```json { "model": "jina-ai/jina-embeddings-v5-omni-small", "task": "retrieval.query", "normalized": true, "input": [ { "text": "a red bicycle" }, { "image": "https://example.com/bike.png" }, { "content": [{ "text": "caption" }, { "image": "data:image/png;base64,..." }] } ] } ``` ಸ್ಥಳೀಯ `{ image | audio | video | pdf }` ಮೌಲ್ಯವು ಸಾರ್ವಜನಿಕ HTTPS URL, `data:` URI, ಅಥವಾ ಕಚ್ಚಾ base64 ಆಗಿರಬಹುದು. OmniRoute ಆ ಆಬ್ಜೆಕ್ಟ್ಗಳನ್ನು ಸ್ಟ್ರಿಂಗ್ ಆಗಿ ಪರಿವರ್ತಿಸುವುದಿಲ್ಲ ಅಥವಾ ಸ್ಥಳೀಯ ಇಮೇಜ್ URLಗಳನ್ನು ಫೆಚ್ ಮಾಡುವುದಿಲ್ಲ — ಸಾರ್ವಜನಿಕ ಮಾಧ್ಯಮವನ್ನು Jina ಸ್ವತಃ ಹಿಂಪಡೆಯುತ್ತದೆ. ಹೆಚ್ಚುವರಿ Jina ಫೀಲ್ಡ್ಗಳನ್ನು (`task`, `normalized`, `truncate`, `embedding_type`) ಫಾರ್ವರ್ಡ್ ಮಾಡಲಾಗುತ್ತದೆ. ಪಠ್ಯ-ಮಾತ್ರ Jina SKUಗಳು ಪಠ್ಯೇತರ ಡಾಕ್ಯುಮೆಂಟ್ಗಳನ್ನು ಇನ್ನೂ ತಿರಸ್ಕರಿಸುತ್ತವೆ. ಭದ್ರತೆ ಮತ್ತು ಸಾರಿಗೆ ಮಿತಿಗಳು: - ದೂರಸ್ಥ ಮಾಧ್ಯಮ URLಗಳು ಸಾರ್ವಜನಿಕ HTTPS ಆಗಿರಬೇಕು. ಕ್ಯಾನಾನಿಕಲ್ `{type,source:url}` ಐಟಂಗಳನ್ನು ಸರ್ವರ್ ಬದಿಯಲ್ಲಿ ಫೆಚ್ ಮಾಡಲಾಗುತ್ತದೆ (ರೀಡೈರೆಕ್ಟ್ ಮರುಮೌಲ್ಯಮಾಪನ, ಕಾಲಮಿತಿ, ಗಾತ್ರ ಮಿತಿಗಳು, ಸಾರ್ವಜನಿಕ DNS, ಸಂಪರ್ಕ ಪಿನ್ನಿಂಗ್) ಮತ್ತು ಪೂರೈಕೆದಾರರ ಕರೆಗೆ ಮೊದಲು ಇನ್ಲೈನ್ ಮಾಡಲಾಗುತ್ತದೆ. Jina-ಸ್ಥಳೀಯ `{image:"https://..."}` ಐಟಂಗಳನ್ನು ಅದೇ ಸಾರ್ವಜನಿಕ-HTTPS ಪರಿಶೀಲನೆಯ ನಂತರ ಯಥಾವತ್ತಾಗಿ ಫಾರ್ವರ್ಡ್ ಮಾಡಲಾಗುತ್ತದೆ; Jina URL ಅನ್ನು ಫೆಚ್ ಮಾಡುತ್ತದೆ. - ಇನ್ಲೈನ್ base64 ಮಾಧ್ಯಮವನ್ನು ಪ್ರತಿ ಐಟಂಗೆ ಡಿಕೋಡ್ ಮಾಡಿದ 8 MiB ಮತ್ತು ಸಂಪೂರ್ಣ ವಿನಂತಿಗೆ ಡಿಕೋಡ್ ಮಾಡಿದ 16 MiBಗೆ ಮಿತಿಗೊಳಿಸಲಾಗಿದೆ. ಪೂರೈಕೆದಾರ ಪರಿವರ್ತನೆ (ಕ್ಯಾನಾನಿಕಲ್ ಐಟಂಗಳನ್ನು ಎಂದಿಗೂ ಬದಲಾವಣೆಯಿಲ್ಲದೆ ಫಾರ್ವರ್ಡ್ ಮಾಡುವುದಿಲ್ಲ): - Jina ಬಹುಮಾಧ್ಯಮ ಮಾದರಿಗಳು: ಪ್ರತಿ ಉನ್ನತ-ಹಂತದ ಐಟಂ, ಇನ್ಲೈನ್ ಮಾಧ್ಯಮಕ್ಕಾಗಿ ಡೇಟಾ 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 ಪೂರೈಕೆದಾರರನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತದೆ; ಕೇವಲ model id (ಉದಾ. `mistral-ocr-latest`) ಅದರ ನೋಂದಾಯಿತ ಪೂರೈಕೆದಾರರಿಗೆ ಪರಿಹರಿಸಲ್ಪಡುತ್ತದೆ ಮತ್ತು `model` ಅನ್ನು ಬಿಟ್ಟರೆ ಅದು ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ Mistral (`mistral-ocr-latest`) ಅನ್ನು ಬಳಸುತ್ತದೆ. ನೋಂದಾಯಿತ ಪೂರೈಕೆದಾರರು (`open-sse/config/ocrRegistry.ts`): | ಪೂರೈಕೆದಾರ id | Model id | `model` ಮೌಲ್ಯ | ಟಿಪ್ಪಣಿಗಳು | | ----------------------------- | -------------------- | ------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------- | | `mistral` | `mistral-ocr-latest` | `mistral/mistral-ocr-latest` (ಅಥವಾ ಕೇವಲ `mistral-ocr-latest`) | ಸಿಂಕ್ರೊನಸ್ — ಒಂದೇ upstream ಕರೆಯಿಂದ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ನೇರವಾಗಿ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ. | | `azure-document-intelligence` | `prebuilt-read` | `azure-document-intelligence/prebuilt-read` | ಅಸಿಂಕ್ರೊನಸ್ upstream (`analyze` + poll) — ಕೆಳಗೆ ನೋಡಿ. | | `vertex-deepseek-ocr` | `deepseek-ocr-maas` | `vertex-deepseek-ocr/deepseek-ocr-maas` | ಸಿಂಕ್ರೊನಸ್, Vertex AI ನ `openapi/chat/completions` ಪಾಲುದಾರ endpoint ಮೂಲಕ — auth/URL ಗಾಗಿ ಕೆಳಗೆ ನೋಡಿ. | ಎಲ್ಲಾ ಮೂರು ಪೂರೈಕೆದಾರರು ಒಂದೇ Mistral-ಆಕಾರದ body ಯಲ್ಲಿ ಪ್ರತಿಕ್ರಿಯಿಸುತ್ತಾರೆ: ```json { "pages": [{ "index": 0, "markdown": "# ಹೊರತೆಗೆದ ಪಠ್ಯ..." }], "model": "mistral-ocr-latest", "usage_info": { "pages_processed": 1 } } ``` ### Azure Document Intelligence poll ಹರಿವು Azure Document Intelligence ನ `analyze` API ಅಸಿಂಕ್ರೊನಸ್ ಆಗಿದೆ: ಆರಂಭಿಕ ವಿನಂತಿಯು body ಬದಲಿಗೆ `Operation-Location` header ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ ಮತ್ತು ಫಲಿತಾಂಶಕ್ಕಾಗಿ poll ಮಾಡಬೇಕು. Handler (`open-sse/handlers/ocr.ts`) ಆ URL ಅನ್ನು ಪ್ರತಿ ಸೆಕೆಂಡಿಗೆ ಒಮ್ಮೆ, ಗರಿಷ್ಠ 30 ಪ್ರಯತ್ನಗಳವರೆಗೆ poll ಮಾಡುತ್ತದೆ; `ok` ಅಲ್ಲದ poll ಪ್ರತಿಕ್ರಿಯೆ ಅಥವಾ `"failed"` ಸ್ಥಿತಿ ಬಂದರೆ ತಕ್ಷಣ ವಿಫಲಗೊಳ್ಳುತ್ತದೆ (poll ಮಾಡುವುದನ್ನು ಮುಂದುವರಿಸುವುದಿಲ್ಲ) ಮತ್ತು ಪ್ರಯತ್ನಗಳ ಮಿತಿ ಮುಗಿದ ನಂತರವೂ ಕಾರ್ಯಾಚರಣೆ ಚಾಲನೆಯಲ್ಲಿದ್ದರೆ `504` ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಅಂತಿಮ Azure ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕರೆಮಾಡುವವರಿಗೆ ಹಿಂತಿರುಗಿಸುವ ಮೊದಲು Mistral ಬಳಸುವ ಅದೇ `pages`/`markdown` ಆಕಾರಕ್ಕೆ ಸಾಮಾನ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ, ಆದ್ದರಿಂದ ಕ್ಲೈಂಟ್ ಕೋಡ್ನಲ್ಲಿ ಪೂರೈಕೆದಾರರಿಗಾಗಿ ವಿಶೇಷ ನಿರ್ವಹಣೆ ಅಗತ್ಯವಿಲ್ಲ. ### Vertex AI DeepSeek OCR ದೃಢೀಕರಣ ಮತ್ತು endpoint ಪರಿಹಾರ `vertex-deepseek-ocr`, chat/image ಟ್ರಾಫಿಕ್ಗಾಗಿ OmniRoute ಈಗಾಗಲೇ ಬೆಂಬಲಿಸುವ ಅದೇ Vertex AI ದೃಢೀಕರಣವನ್ನು (`open-sse/executors/vertex.ts`) ಮರುಬಳಕೆ ಮಾಡುತ್ತದೆ: ಸಂಪರ್ಕದ API key, Service Account JSON ರುಜುವಾತಾಗಿರುತ್ತದೆ (JWT-bearer ಹರಿವಿನ ಮೂಲಕ ಅಲ್ಪಾವಧಿಯ OAuth access token ಗೆ ವಿನಿಮಯ ಮಾಡಲಾಗುತ್ತದೆ) ಅಥವಾ ಈಗಾಗಲೇ ರಚಿಸಲಾದ OAuth access token ಅನ್ನು ಯಥಾವತ್ತಾಗಿ ಬಳಸಲಾಗುತ್ತದೆ. Upstream endpoint URL ಎಂಬುದು Vertex ನ ಸಾಮಾನ್ಯ `openapi/chat/completions` ಪಾಲುದಾರ endpoint ಆಗಿದ್ದು, ಸಂಪರ್ಕದ 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` ಅದರ idಗೆ `claude-3-omniroute-no-thinking/` ಪೂರ್ವಪ್ರತ್ಯಯವನ್ನು ಸೇರಿಸಿದ **ಚಿಂತನೆ-ರಹಿತ** ರೂಪಾಂತರವನ್ನೂ ಪ್ರಕಟಿಸುತ್ತದೆ: ``` claude-3-omniroute-no-thinking// ``` ಈ id ಅನ್ನು ಆಯ್ಕೆ ಮಾಡುವುದರಿಂದ (ಉದಾ. ಯಾವಾಗಲೂ `thinking` ಬ್ಲಾಕ್ ಅನ್ನು ಲಗತ್ತಿಸುವ Claude Code ಕಾನ್ಫಿಗ್ನಲ್ಲಿ) ತಾರ್ಕಿಕ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ ನಿಜವಾದ `/` ಗೆ ಮರಳಿ ಪರಿಹರಿಸಲಾಗುತ್ತದೆ — `/v1/messages` ಪಥದಲ್ಲಿ `thinking:{type:"disabled"}`, ಅಥವಾ `/v1/chat/completions` ಪಥದಲ್ಲಿ `reasoning`/`reasoning_effort` ಫೀಲ್ಡ್ಗಳನ್ನು ಕೈಬಿಡಲಾಗುತ್ತದೆ. ಚಿಂತನೆಯನ್ನು ಬೆಂಬಲಿಸುವ **ಮತ್ತು** `disabled` ಅನ್ನು ಗೌರವಿಸುವ Claude-ಕುಟುಂಬದ ಮಾದರಿಗಳಿಗೆ ಮಾತ್ರ ಈ ರೂಪಾಂತರವನ್ನು ಪಟ್ಟಿಮಾಡಲಾಗುತ್ತದೆ (ಆದ್ದರಿಂದ, ಉದಾ. `disabled` ಅನ್ನು ತಿರಸ್ಕರಿಸುವ adaptive-only ಮಾದರಿಗಳನ್ನು ಹೊರಗಿಡಲಾಗುತ್ತದೆ). ಆಪರೇಟರ್ಗಳು `ModelSpec.noThinkingAlias` ಮೂಲಕ ಪ್ರತಿ ಮಾದರಿಗೆ ಈ ರೂಪಾಂತರವನ್ನು ಬಲವಂತವಾಗಿ ಆನ್ ಅಥವಾ ಆಫ್ ಮಾಡಬಹುದು. --- ## ಪೂರೈಕೆದಾರ ಪ್ಲಗಿನ್ ಮ್ಯಾನಿಫೆಸ್ಟ್ ```bash GET /api/v1/provider-plugin-manifest ``` Bifrost, CLIProxyAPI ಮತ್ತು ಭವಿಷ್ಯದ ಸೈಡ್ಕಾರ್ ರೂಟರ್ಗಳು ಬಳಸುವ JSON-ಸುರಕ್ಷಿತ ಪೂರೈಕೆದಾರ ಪ್ಲಗಿನ್ ಮ್ಯಾನಿಫೆಸ್ಟ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು TypeScript ಪೂರೈಕೆದಾರ ರಿಜಿಸ್ಟ್ರಿಯಿಂದ ರಚಿಸಲಾಗುತ್ತದೆ ಮತ್ತು ಉದ್ದೇಶಪೂರ್ವಕವಾಗಿ OAuth ಕ್ಲೈಂಟ್ ರಹಸ್ಯಗಳು, ರನ್ಟೈಮ್ ಪರಿಸರ ರೆಸಲ್ಯೂಶನ್, ಎಕ್ಸಿಕ್ಯೂಟರ್ ಫಂಕ್ಷನ್ಗಳು, ವಿನಂತಿ ಹೆಡರ್ಗಳು ಮತ್ತು ಖಾತೆ ಡೇಟಾವನ್ನು ಹೊರತುಪಡಿಸುತ್ತದೆ. ಸೈಡ್ಕಾರ್ ಪ್ರಕ್ರಿಯೆಯ ಹೊರಗೆ ರನ್ ಆಗುತ್ತಿರುವಾಗ ಮತ್ತು `open-sse/config/providerPluginManifestRegistry.ts` ಅನ್ನು ನೇರವಾಗಿ ಇಂಪೋರ್ಟ್ ಮಾಡಲು ಸಾಧ್ಯವಾಗದಿದ್ದಾಗ ಈ ಎಂಡ್ಪಾಯಿಂಟ್ ಬಳಸಿ. --- ## ಹೊಂದಾಣಿಕೆ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು | ವಿಧಾನ | ಪಥ | ಸ್ವರೂಪ | | ----- | ----------------------------------------- | --------------------------------------------- | | POST | `/v1/chat/completions` | OpenAI | | POST | `/v1/messages` | Anthropic | | POST | `/v1/responses` | OpenAI Responses | | POST | `/v1/embeddings` | OpenAI | | POST | `/v1/images/generations` | OpenAI Images | | POST | `/v1/images/edits` | OpenAI Images (ಎಡಿಟ್/ಇನ್ಪೇಂಟ್) | | POST | `/v1/videos/generations` | OpenAI-ಶೈಲಿಯ ವೀಡಿಯೊ ರಚನೆ | | POST | `/v1/music/generations` | OpenAI-ಶೈಲಿಯ ಸಂಗೀತ ರಚನೆ | | POST | `/v1/audio/transcriptions` | OpenAI Audio (STT) | | POST | `/v1/audio/speech` | OpenAI TTS (ಆಡಿಯೊ ಬಾಡಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ) | | POST | `/v1/rerank` | Cohere/Voyage-ಶೈಲಿಯ ಮರುಶ್ರೇಣೀಕರಣ | | POST | `/v1/classify` | Jina ವರ್ಗೀಕರಣ (`api.jina.ai`) | | POST | `/v1/segment` | Jina ಸೆಗ್ಮೆಂಟರ್ (`segment.jina.ai`) | | POST | `/v1/moderations` | OpenAI Moderations | | GET | `/v1/models` | OpenAI | | POST | `/v1/messages/count_tokens` | Anthropic | | GET | `/v1beta/models` | Gemini | | POST | `/v1beta/models/{...path}` | Gemini generateContent | | POST | `/v1/api/chat` | Ollama | | GET | `/api/v1/vscode/{token}/` | OpenAI ಕ್ಯಾಟಲಾಗ್ ಉಪನಾಮ | | GET | `/api/v1/vscode/{token}/models` | OpenAI ಮಾಡೆಲ್ಗಳ ಉಪನಾಮ | | POST | `/api/v1/vscode/{token}/chat/completions` | OpenAI ಟೋಕನೀಕರಿಸಿದ ಉಪನಾಮ | | POST | `/api/v1/vscode/{token}/responses` | OpenAI Responses ಟೋಕನೀಕರಿಸಿದ ಉಪನಾಮ | | POST | `/api/v1/vscode/{token}/api/chat` | Ollama ಟೋಕನೀಕರಿಸಿದ ಉಪನಾಮ | | GET | `/api/v1/vscode/{token}/api/tags` | Ollama ಟ್ಯಾಗ್ಗಳ ಟೋಕನೀಕರಿಸಿದ ಉಪನಾಮ | ಎಲ್ಲಾ POST ರೂಟ್ಗಳು ಒಂದೇ ಸ್ವರೂಪವನ್ನು ಅನುಸರಿಸುತ್ತವೆ: `Bearer your-api-key` + Zod-ಮೌಲ್ಯೀಕರಿಸಿದ JSON ಬಾಡಿ (`v1RerankSchema`, `v1ModerationSchema`, `v1AudioSpeechSchema`, ಇತ್ಯಾದಿ; `src/shared/validation/schemas.ts` ನೋಡಿ). ಸ್ಕೀಮಾ ವಿಫಲವಾದಾಗ 4xx ಅನ್ನು ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ. `Authorization: Bearer ...` ಅನ್ನು ಲಗತ್ತಿಸಲು ಸಾಧ್ಯವಾಗದ ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ, OmniRoute ಕ್ವೆರಿ-ಸ್ಟ್ರಿಂಗ್ ಹೊಂದಾಣಿಕೆ (`?token=...`, `?apiKey=...`, `?api_key=...`, `?key=...`) ಅಥವಾ ಕೆಳಗೆ ದಾಖಲಿಸಲಾದ ಮೀಸಲಾದ `/api/v1/vscode/{token}/...` ಎಂಡ್ಪಾಯಿಂಟ್ಗಳ ಮೂಲಕ URL ನಲ್ಲಿ API ಕೀಗಳನ್ನು ಸಹ ಸ್ವೀಕರಿಸುತ್ತದೆ. ```bash # ಮರುಶ್ರೇಣೀಕರಣ POST /v1/rerank { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] } # Jina ವರ್ಗೀಕರಣ (Foundation API ರುಜುವಾತುಗಳು) POST /v1/classify { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] } # Jina ಸೆಗ್ಮೆಂಟರ್ POST /v1/segment { "content": "...", "return_chunks": true } # Jina ಹುಡುಕಾಟ (s.jina.ai; ಪೂರೈಕೆದಾರ ಉಪನಾಮಗಳು: jina-search, jina-ai, jina) POST /v1/search { "query": "...", "provider": "jina-search" } # ಮಾಡರೇಷನ್ಗಳು POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." } # TTS — audio/mpeg (ಅಥವಾ ವಿನಂತಿಸಿದ ಸ್ವರೂಪದ) ಬಾಡಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" } # ಚಿತ್ರ ಎಡಿಟ್ (multipart) POST /v1/images/edits -F image=@input.png -F prompt="..." -F mask=@mask.png # ವೀಡಿಯೊ / ಸಂಗೀತ ರಚನೆ (ಪೂರೈಕೆದಾರ-ಪೂರ್ವಪ್ರತ್ಯಯದ ಮಾಡೆಲ್ id) 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` ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತವೆ. --- ## ಫೈಲ್ಗಳ 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` | ಕಚ್ಚಾ ಫೈಲ್ನ ವಿಷಯವನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡಿ ಮರಳಿ ಕಳುಹಿಸಿ | **ದೃಢೀಕರಣ:** ಬೇರರ್ API ಕೀ — `getApiKeyRequestScope` ಮೂಲಕ ಫೈಲ್ಗಳ ವ್ಯಾಪ್ತಿಯನ್ನು ಪ್ರತಿ-API-ಕೀಗೆ ಸೀಮಿತಗೊಳಿಸಲಾಗಿದೆ. ಒಂದು ಕೀ ತನ್ನದೇ ಫೈಲ್ಗಳನ್ನು ಮಾತ್ರ ನೋಡುತ್ತದೆ, ಡೌನ್ಲೋಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು ಅಳಿಸುತ್ತದೆ; ಕೀ ಇಲ್ಲದ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಸೆಷನ್ ಸಂಪೂರ್ಣ ಇನ್ಸ್ಟಾನ್ಸ್ ಅನ್ನು ಓದುತ್ತದೆ; ಮಾಲೀಕರಿಲ್ಲದ ಫೈಲ್ಗೆ (ಅನಾಮಧೇಯ ಅಥವಾ ಡ್ಯಾಶ್ಬೋರ್ಡ್-ಸೆಷನ್ ಅಪ್ಲೋಡ್) ಪ್ರತಿ ಸೆಷನ್-ಅಲ್ಲದ ಕಾಲರ್ಗೆ ಪ್ರವೇಶ ನಿರಾಕರಿಸಲಾಗುತ್ತದೆ. `GET /v1/files` ಅನಾಮಧೇಯ ಕಾಲರ್ ಅನ್ನು — ಮತ್ತು ಗುರುತಿಸಲಾಗದ ಪ್ರಸ್ತುತಪಡಿಸಿದ ಕೀಯನ್ನು — `REQUIRE_API_KEY=false` ಆಗಿದ್ದರೂ ಸಹ, ಪ್ರತಿ ಟೆನೆಂಟ್ನ ಫೈಲ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುವ ಬದಲು `401` ನೊಂದಿಗೆ ತಿರಸ್ಕರಿಸುತ್ತದೆ (GHSA-m3hp-hq9g-fpmv, GHSA-2jm2-mpx8-6523). --- ## ಬ್ಯಾಚ್ಗಳ 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-ಕೀಗೆ ಸೀಮಿತಗೊಳಿಸಲಾಗಿದೆ: ಸ್ವಂತ ಕೀಗೆ ಮಾತ್ರ, ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಸೆಷನ್ಗೆ ಇನ್ಸ್ಟೆನ್ಸ್-ವ್ಯಾಪಿ ಪ್ರವೇಶ, ಮತ್ತು null-owner ದಾಖಲೆಗಳಿಗೆ ಸೆಷನ್ ಅಲ್ಲದ ಪ್ರತಿಯೊಬ್ಬ ಕರೆಗಾರನಿಗೂ ಪ್ರವೇಶ ನಿರಾಕರಿಸಲಾಗುತ್ತದೆ (ಹಿಂಪಡೆಯುವಿಕೆ, ಅಳಿಸುವಿಕೆ, ರದ್ದುಗೊಳಿಸುವಿಕೆ ಮತ್ತು ರಚಿಸುವಾಗಿನ `input_file_id` ಪರಿಶೀಲನೆ). `REQUIRE_API_KEY=false` ಆಗಿದ್ದರೂ ಸಹ `GET /v1/batches` ಅನಾಮಧೇಯ ಕರೆಗಾರನನ್ನು `401` ನೊಂದಿಗೆ ತಿರಸ್ಕರಿಸುತ್ತದೆ. --- ## ಸರ್ಚ್ API ವೆಬ್/ಹುಡುಕಾಟ ಪೂರೈಕೆದಾರ ಅಮೂರ್ತೀಕರಣ (Tavily, Brave, Exa, Serper, ಇತ್ಯಾದಿ). | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ---------------------- | --------------------------------------------------------------------------------------------------------------------- | | GET | `/v1/search` | ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ಹುಡುಕಾಟ ಪೂರೈಕೆದಾರರು + ಸಾಮರ್ಥ್ಯಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/v1/search` | ಹುಡುಕಾಟ ಕ್ವೆರಿಯನ್ನು ಚಲಾಯಿಸಿ — ಬಾಡಿಯನ್ನು `v1SearchSchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ, ಕ್ಯಾಶಿಂಗ್/ಕೋಅಲೆಸಿಂಗ್ ಬೆಂಬಲಿಸುತ್ತದೆ | | GET | `/v1/search/analytics` | ಪ್ರತಿ-ಪೂರೈಕೆದಾರ ಹಿಟ್/ಲೇಟೆನ್ಸಿ/ಕ್ಯಾಶ್ ಅಂಕಿಅಂಶಗಳು | **ದೃಢೀಕರಣ:** ಬೇರರ್ API ಕೀ (`extractApiKey` + `isValidApiKey`). ಹುಡುಕಾಟ ನೀತಿಯನ್ನು `enforceApiKeyPolicy` ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗುತ್ತದೆ. --- ## Web Fetch API ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾದ ವೆಬ್-ಫೆಚ್ ಪೂರೈಕೆದಾರರ (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract) ಮೂಲಕ URL ಒಂದರಿಂದ ವಿಷಯವನ್ನು ಹೊರತೆಗೆಯಿರಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | --------------- | ----------------------------------------------------------------------------------------- | | POST | `/v1/web/fetch` | URL ಅನ್ನು ಫೆಚ್/ಸ್ಕ್ರೇಪ್ ಮಾಡುತ್ತದೆ — ಬಾಡಿಯನ್ನು `v1WebFetchSchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ | **ದೃಢೀಕರಣ:** Bearer API ಕೀ (`extractApiKey` + `isValidApiKey`). ನೀತಿಯನ್ನು `enforceApiKeyPolicy` ಮೂಲಕ ಜಾರಿಗೊಳಿಸಲಾಗುತ್ತದೆ. **ಕೋಟಾ-ಅರಿವಿನ ಫಾಲ್ಬ್ಯಾಕ್ (#8297):** ಸ್ಪಷ್ಟವಾದ `provider` ನೀಡದಿದ್ದಾಗ, ಪೂಲ್ (`firecrawl` → `jina-reader` → `tavily-search` → `tinyfish` → `nimble-search`) ಅನ್ನು ನಿಗದಿತ ಆದ್ಯತೆಯ ಕ್ರಮದಲ್ಲಿ (ಮೊದಲು ಭರ್ತಿ ಮಾಡುವ ವಿಧಾನದಲ್ಲಿ) ಪರಿಶೀಲಿಸಲಾಗುತ್ತದೆ — ದರ-ಮಿತಿಗೊಳಿಸಲ್ಪಟ್ಟಿದ್ದರೂ ಕಾನ್ಫಿಗರ್ ಆಗಿರುವ ಪೂರೈಕೆದಾರನು ವಿನಂತಿಯನ್ನು ತಕ್ಷಣವೇ ಸ್ಥಗಿತಗೊಳಿಸುವ ಬದಲು ಬಿಟ್ಟುಹೋಗಲಾಗುತ್ತದೆ, ಮತ್ತು ಮರುಪ್ರಯತ್ನಿಸಬಹುದಾದ/ಕೋಟಾ ಸಂಬಂಧಿತ ಅಪ್ಸ್ಟ್ರೀಮ್ ವೈಫಲ್ಯವು (HTTP 429 ಯಾವಾಗಲೂ; Firecrawl/Tavily/TinyFish ಕೋಟಾ-ಶೈಲಿಯ ಉಚಿತ ಶ್ರೇಣಿಗಳಿಗೆ 402/403 — Jina Reader ಗೆ ಅಲ್ಲ, ಮತ್ತು ಸಾಮಾನ್ಯ 400 ತಪ್ಪಾದ ವಿನಂತಿಗೆ ಎಂದಿಗೂ ಅಲ್ಲ) ವಿನಂತಿಯ ಸಮಯದಲ್ಲಿ ಇನ್ನೂ ಪ್ರಯತ್ನಿಸದ ಕ್ರೆಡೆನ್ಶಿಯಲ್ ಹೊಂದಿರುವ ಮುಂದಿನ ಪೂರೈಕೆದಾರನಿಗೆ ಮುಂದುವರಿಯುತ್ತದೆ. ಪೂಲ್ನಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಪೂರೈಕೆದಾರವೂ ಮುಗಿದಾಗ, ಹಿಂದಿನ ಸಾಮಾನ್ಯ `400` ಬದಲು ಎಂಡ್ಪಾಯಿಂಟ್ ಒಂದೇ `429` ಅನ್ನು (`Retry-After` ಹೆಡರ್ನೊಂದಿಗೆ) ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ಸ್ಪಷ್ಟವಾದ `provider` ಅನ್ನು ವಿನಂತಿಸಿದಾಗ, **ಯಾವುದೇ** ಮೌನ ಫಾಲ್ಬ್ಯಾಕ್ ಇರುವುದಿಲ್ಲ — ದರ-ಮಿತಿಗೊಳಿಸಲ್ಪಟ್ಟ ಅಥವಾ ವಿಫಲವಾದ ಸ್ಪಷ್ಟ ಪೂರೈಕೆದಾರನು ತನ್ನದೇ ದೋಷವನ್ನು ತೋರಿಸುತ್ತಾನೆ (ದರ-ಮಿತಿಗೊಳಿಸಲ್ಪಟ್ಟಿದ್ದರೆ `429`, ಇಲ್ಲದಿದ್ದರೆ ಅಪ್ಸ್ಟ್ರೀಮ್ ಸ್ಥಿತಿ). --- ## WebSocket ಸ್ಟ್ರೀಮಿಂಗ್ ```bash GET /v1/ws?handshake=1 ``` WebSocket ಅಪ್ಗ್ರೇಡ್ ಹ್ಯಾಂಡ್ಶೇಕ್ ಅನ್ನು ಮೌಲ್ಯೀಕರಿಸಿ, ವೈರ್ ಪ್ರೋಟೋಕಾಲ್ ಉದಾಹರಣೆ ಸಂದೇಶಗಳನ್ನು (`request`, `cancel`) ಹಿಂದಿರುಗಿಸುತ್ತದೆ. ನಿಜವಾದ WS ಫ್ರೇಮ್ಗಳನ್ನು Next.js ರೂಟ್ ಟೇಬಲ್ನ ಹೊರಗಿರುವ ಬಂಡಲ್ ಮಾಡಲಾದ WS ಸರ್ವರ್ ನಿರ್ವಹಿಸುತ್ತದೆ. **ದೃಢೀಕರಣ:** ಹ್ಯಾಂಡ್ಶೇಕ್ ಸಮಯದಲ್ಲಿ Bearer API ಕೀ. ### WebSocket ಮೂಲಕ Responses API (codex ಮಾತ್ರ) ```bash # HTTP API ಯಂತೆಯೇ ಅದೇ host:port (ಡೀಫಾಲ್ಟ್ 20128); ಸಂಪರ್ಕವನ್ನು ಅಪ್ಗ್ರೇಡ್ ಮಾಡಿ: wscat -c "ws://localhost:20128/v1/responses?api_key=" # (ಅಥವಾ: -H "Authorization: Bearer ") # ಮೊದಲ ಫ್ರೇಮ್ response.create ಆಗಿಯೇ ಇರಬೇಕು: { "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] } ``` Responses-API-over-WebSocket ಪ್ರಾಕ್ಸಿಯನ್ನು **ಪ್ರತ್ಯೇಕವಾಗಿ `codex` ಗೆ ಮಾತ್ರ** (ChatGPT ಬ್ಯಾಕೆಂಡ್) ಸಂಪರ್ಕಿಸಲಾಗಿದೆ. ಇದು API/ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಂತೆಯೇ ಅದೇ ಪೋರ್ಟ್ನಲ್ಲಿ `/v1/responses`, `/responses`, ಮತ್ತು `/api/v1/responses` ಪಥಗಳಲ್ಲಿ ಆಲಿಸುತ್ತದೆ. ಮೊದಲ `response.create` ಫ್ರೇಮ್ನಲ್ಲಿ ಇದು ಆಂತರಿಕ `codex-responses-ws` ಬ್ರಿಡ್ಜ್ ಮೂಲಕ ದೃಢೀಕರಿಸಿ + ಸಿದ್ಧಪಡಿಸುತ್ತದೆ, codex OAuth ಸಂಪರ್ಕವನ್ನು ಆಯ್ಕೆಮಾಡುತ್ತದೆ ಮತ್ತು `wreq-js` ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ ಮೂಲಕ `wss://chatgpt.com/backend-api/codex/responses` ಗೆ ಟನಲ್ ಮಾಡುತ್ತದೆ. **codex ಅಲ್ಲದ ಮಾಡೆಲ್ಗಳನ್ನು ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ** (`codex_ws_provider_required`). ಕೋಟಾ-ಹಂಚಿಕೆ ರೂಟಿಂಗ್ಗಾಗಿ `model: "qtSd//codex/"` ಬಳಸಿ. ಇದನ್ನು `app/server-ws.mjs` + `scripts/dev/responses-ws-proxy.mjs` + `src/app/api/internal/codex-responses-ws/route.ts` ನಲ್ಲಿ ಅಳವಡಿಸಲಾಗಿದೆ. **ದೃಢೀಕರಣ:** ಹ್ಯಾಂಡ್ಶೇಕ್ ಸಮಯದಲ್ಲಿ Bearer API ಕೀ. ಬಂಡಲ್ ಮಾಡಲಾದ HTTP ಸರ್ವರ್ (`server-ws.mjs`) ಸಕ್ರಿಯ ಎಂಟ್ರಿಪಾಯಿಂಟ್ ಆಗಿರಬೇಕು (`app/server-ws.mjs` ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದಾಗ, ಡೀಫಾಲ್ಟ್ ಆಗಿ ಅದೇ ಸಕ್ರಿಯವಾಗಿರುತ್ತದೆ). #### ಮಾಡೆಲ್ id: ಮೂಲ ChatGPT id ಬಳಸಿ (`codex/` ಪ್ರಿಫಿಕ್ಸ್ ಇಲ್ಲದೆ) `supports_websockets = true` ಆಗಿರುವಾಗ OpenAI **Codex CLI** ಕ್ಲೈಂಟ್ ಬದಿಯಲ್ಲೇ ಮಾಡೆಲ್ ಹೆಸರನ್ನು ಮೌಲ್ಯೀಕರಿಸುತ್ತದೆ ಮತ್ತು `codex/gpt-5.5` ನಂತಹ **ಪೂರೈಕೆದಾರ-ಪ್ರಿಫಿಕ್ಸ್ ಹೊಂದಿರುವ id ಗಳನ್ನು ತಿರಸ್ಕರಿಸುತ್ತದೆ** (`The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account`). **ಮೂಲ** id ಅನ್ನು ಕಳುಹಿಸಿ (ಉದಾ. `gpt-5.5`). OmniRoute ನ ಬ್ರಿಡ್ಜ್ codex ಗೆ ಮಾತ್ರ ಸೀಮಿತವಾಗಿರುವುದರಿಂದ, ಅಪ್ಸ್ಟ್ರೀಮ್ಗೆ ಟನಲ್ ಮಾಡುವ ಮೊದಲು ಅದು ಮೂಲ id ಅನ್ನು codex ಮಾಡೆಲ್ ಆಗಿ (`resolveCodexWsModelInfo`) ಪುನಃ ಪರಿಹರಿಸುತ್ತದೆ — ಮೂಲ `gpt-5.5` HTTP ಮೂಲಕ ಇಲ್ಲದಿದ್ದರೆ ಬೇರೆ ಪೂರೈಕೆದಾರನಿಗೆ ರೂಟ್ ಆಗುತ್ತಿದ್ದರೂ ಸಹ. #### OpenAI Codex CLI ಅನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡುವುದು `~/.codex/config.toml` ಗೆ WebSocket ಬೆಂಬಲವಿರುವ ಕಸ್ಟಮ್ ಪೂರೈಕೆದಾರನನ್ನು ಸೇರಿಸುವ ಮೂಲಕ Codex CLI ಅನ್ನು OmniRoute ಕಡೆಗೆ ಸೂಚಿಸಿ (ಈಗಿರುವ ಕಾನ್ಫಿಗ್ಗೆ ಬದಲಾವಣೆ ಆಗದಂತೆ ಪ್ರತ್ಯೇಕ `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" # ಕೊನೆಯಲ್ಲಿ ಸ್ಲ್ಯಾಶ್ ಇರಬಾರದು; WS URL ಅನ್ನು ವ್ಯುತ್ಪನ್ನಗೊಳಿಸಲಾಗುತ್ತದೆ (ಪ್ರೊಡಕ್ಷನ್ನಲ್ಲಿ https/wss ಬಳಸಿ) wire_api = "responses" # Feb 2026 ರಿಂದ ಬೆಂಬಲಿತವಾಗಿರುವ ಏಕೈಕ ಮೌಲ್ಯ supports_websockets = true # Responses-over-WS ಟ್ರಾನ್ಸ್ಪೋರ್ಟ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ env_key = "OMNIROUTE_API_KEY" # OmniRoute API ಕೀಯನ್ನು ಹೊಂದಿರುತ್ತದೆ (Bearer) ``` ```bash export OMNIROUTE_API_KEY=sk-... # OmniRoute API ಕೀ (REQUIRE_API_KEY=false ಆಗಿದ್ದರೆ ಯಾವುದೇ ಕೀ) codex exec "Responda apenas: PONG" ``` CLI, `base_url + /responses` ಅನ್ನು WebSocket ಗೆ ಅಪ್ಗ್ರೇಡ್ ಮಾಡುತ್ತದೆ ಮತ್ತು OmniRoute ಅದನ್ನು ಆಯ್ಕೆಮಾಡಿದ codex OAuth ಸಂಪರ್ಕಕ್ಕೆ ಟನಲ್ ಮಾಡುತ್ತದೆ. ಸ್ಥಳೀಯ ಸರ್ವರ್ ವಿರುದ್ಧ ಎಂಡ್-ಟು-ಎಂಡ್ ಆಗಿ ಮೌಲ್ಯೀಕರಿಸಲಾಗಿದೆ: ChatGPT `codex.rate_limits` + `response.created` ಅನ್ನು ಹಿಂದಿರುಗಿಸಿ, ಪೂರ್ಣಗೊಳಿಸುವಿಕೆಯನ್ನು ಸ್ಟ್ರೀಮ್ ಮಾಡುತ್ತದೆ. --- ## ಕೋಟಾಗಳು ಮತ್ತು ಸಮಸ್ಯೆಗಳ ವರದಿಗೊಳಿಸುವಿಕೆ | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ----- | ------------------- | ------------------------------------------------------------------------------------------ | | GET | `/v1/quotas/check` | ನೋಂದಾಯಿತ ಕೀ ನೀಡುವ ಮೊದಲು `provider` + `accountId` ಗಾಗಿ ಕೋಟಾವನ್ನು ಪೂರ್ವ-ಮೌಲ್ಯೀಕರಿಸಿ | | POST | `/v1/issues/report` | ಕೋಟಾ/ಕೀ ನೀಡುವಿಕೆಯ ವೈಫಲ್ಯವನ್ನು GitHub ಗೆ ವರದಿ ಮಾಡಿ (`GITHUB_ISSUES_REPO` + ಟೋಕನ್ ಅಗತ್ಯವಿದೆ) | **ದೃಢೀಕರಣ:** Bearer API ಕೀ (`isAuthenticated`). --- ## ಸ್ವಯಂ-ಸೇವಾ ಬಳಕೆ (`/api/usage/om-usage`) ಯಾವುದೇ API ಕೀ **ತನ್ನದೇ** ಬಳಕೆ ಮತ್ತು ಕೋಟಾಗಳನ್ನು ಓದಬಹುದು — ನಿರ್ವಹಣಾ ದೃಢೀಕರಣದ ಅಗತ್ಯವಿಲ್ಲ. ಕೀ ಹೊಂದಿರುವವರಿಗೆ ಅವರ ವೆಚ್ಚವನ್ನು ತೋರಿಸಲು ಕ್ಲೈಂಟ್ (CLI, OmniCopilot ಪ್ಯಾನೆಲ್) ಬಳಸುವ ಎಂಡ್ಪಾಯಿಂಟ್ ಇದಾಗಿದೆ. ```bash # ಪಠ್ಯ ರೂಪ (ಐತಿಹಾಸಿಕ ಒಪ್ಪಂದ — ಟರ್ಮಿನಲ್ಗಾಗಿ ಸರಳ ಪಠ್ಯ) curl -H "Authorization: Bearer " \ http://localhost:20128/api/usage/om-usage # ರಚಿತ ರೂಪ — UI ಬಳಸುವ ರೂಪ curl -H "Authorization: Bearer " \ "http://localhost:20128/api/usage/om-usage?format=json" ``` ಕೀಗಾಗಿ **`allowUsageCommand`** ಸಕ್ರಿಯವಾಗಿರಬೇಕು (ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ನಿಷ್ಕ್ರಿಯವಾಗಿರುತ್ತದೆ — ಡ್ಯಾಶ್ಬೋರ್ಡ್ನ API-ಕೀ ನಿರ್ವಾಹಕವು ಪ್ರತಿ ಕೀಗೂ ಇದನ್ನು ಟಾಗಲ್ ಮಾಡುತ್ತದೆ). ಇದು ಇಲ್ಲದಿದ್ದರೆ ಎಂಡ್ಪಾಯಿಂಟ್ `403` ಎಂದು ಉತ್ತರಿಸುತ್ತದೆ. `?format=json` ಪ್ರತ್ಯೇಕಿಸಬಹುದಾದ ರಚನೆಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ಕರೆ ಮಾಡುವವರು ನಿರಾಕರಣೆಯಿಂದ ಡೇಟಾ ಕ್ಷೇತ್ರವನ್ನು ಎಂದಿಗೂ ಓದುವುದಿಲ್ಲ. ಯಶಸ್ವಿಯಾದಾಗ: ```jsonc { "allowed": true, // ಕೀ ಪ್ರತಿ-ಕೀ ಬಳಕೆಯ ಮಿತಿಗಳನ್ನು (ದೈನಂದಿನ/ಸಾಪ್ತಾಹಿಕ USD) ಆಯ್ಕೆ ಮಾಡಿಕೊಂಡಿದ್ದಾಗ ಮಾತ್ರ ಇರುತ್ತದೆ: "personal": { "dailySpentUsd": 1.25, "dailyLimitUsd": 5, "dailyResetAtIso": "…", "weeklySpentUsd": 8, "weeklyLimitUsd": 20, "weeklyResetAtIso": "…" /* … */, }, // ಆಯ್ಕೆಮಾಡಿದ ಪೂರೈಕೆದಾರರ ಕೋಟಾ ಸ್ನ್ಯಾಪ್ಶಾಟ್, ಅಥವಾ ಇನ್ನೂ ಯಾವುದೂ ಕ್ಯಾಶ್ ಆಗಿರದಿದ್ದರೆ null: "provider": { "connectionId": "…", "provider": "claude", "plan": "…", "quotas": {/* … */}, }, // ಪ್ರತಿಯೊಂದು ಸಂಪರ್ಕದ ಸ್ನ್ಯಾಪ್ಶಾಟ್, ಇದರಿಂದ UI ಹಲವಾರು ಪೂರೈಕೆದಾರರನ್ನು ಅಕ್ಕಪಕ್ಕದಲ್ಲಿ ಪ್ರದರ್ಶಿಸಬಹುದು: "providers": [ { "connectionId": "…", "provider": "claude" /* … */ }, { "provider": "codex" /* … */ }, ], } ``` ನಿರಾಕರಣೆಯಾದಾಗ (`401` ತಪ್ಪಾದ ಕೀ / `403` ಅನುಮತಿ ಇಲ್ಲ), ಇದೇ ಮಾರ್ಗವು `{ "allowed": false, "error": { "message": "…" } }` ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ — ಇದ್ದರೂ ಖಾಲಿಯಾಗಿರುವ `personal`/`provider` (ಕೀಗೆ ಅನುಮತಿ ಇದೆ, ಇನ್ನೂ ಯಾವುದೇ ಮಾಹಿತಿ ಲಭ್ಯವಾಗಿಲ್ಲ) ನಿರಾಕರಣೆಗಿಂತ ಭಿನ್ನವಾದ ಸ್ಥಿತಿಯಾಗಿದೆ ಮತ್ತು JSON ರೂಪ ಮಾತ್ರ ಅವುಗಳನ್ನು ಪ್ರತ್ಯೇಕಿಸುತ್ತದೆ. **ದೃಢೀಕರಣ:** ಕರೆ ಮಾಡುವವರ ಸ್ವಂತ Bearer API ಕೀ, `isValidApiKey` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗಿದೆ — ಇದು ನಿರ್ವಹಣಾ ಇಂಟರ್ಫೇಸ್ (`/api/keys/…`) _ಅಲ್ಲ_; ಅದು `requireManagementAuth` ನ ಹಿಂದೆಯೇ ಉಳಿಯುತ್ತದೆ. --- ## ಅರ್ಥಾತ್ಮಕ ಕ್ಯಾಶ್ ```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 ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು **ಅಪ್ಸ್ಟ್ರೀಮ್ ಕರೆ ಇಲ್ಲದೆ** ಕ್ಯಾಶ್ನಿಂದ ಒದಗಿಸುತ್ತದೆ, ಆದ್ದರಿಂದ ವರದಿಯಾದ `X-OmniRoute-Response-Latency` ಬಹುತೇಕ ಶೂನ್ಯವಾಗಿರುತ್ತದೆ (ಮೂಲ ಅಪ್ಸ್ಟ್ರೀಮ್ ವಿಳಂಬ ಎಷ್ಟೇ ಇದ್ದರೂ). ವಿಳಂಬದ ಕುರಿತು ಸೂಕ್ಷ್ಮವಾಗಿರುವ ಕ್ಲೈಂಟ್ಗಳು (ಬೆಂಚ್ಮಾರ್ಕಿಂಗ್, p50/p99 ಮೇಲ್ವಿಚಾರಣೆ) `X-OmniRoute-Cache-Latency` ಪ್ರತಿಕ್ರಿಯೆ ಹೆಡರ್ ಅನ್ನು ಪರಿಶೀಲಿಸಬೇಕು: | ಮೌಲ್ಯ | ಅರ್ಥ | | ----------- | ------------------------------------------------------------------------ | | `synthetic` | ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಕ್ಯಾಶ್ನಿಂದ ಒದಗಿಸಲಾಗಿದೆ; ವಿಳಂಬವು ನೈಜ ಅಪ್ಸ್ಟ್ರೀಮ್ ಸಮಯವಲ್ಲ | | _(ಇಲ್ಲ)_ | ನೈಜ ಅಪ್ಸ್ಟ್ರೀಮ್ ಕರೆಯಿಂದ ಬಂದ ಪ್ರತಿಕ್ರಿಯೆ | ### ಪ್ರತಿ-ಕೀ ಕ್ಯಾಶ್ ಬೈಪಾಸ್ API ಕೀಗಳು `cacheDefaultMode` ಮೂಲಕ ಅರ್ಥಾತ್ಮಕ ಕ್ಯಾಶ್ ಓದುವಿಕೆಯಿಂದ ಹೊರಗುಳಿಯಬಹುದು: | ಮೌಲ್ಯ | ವರ್ತನೆ | | -------- | ------------------------------------------------------------------------------- | | `legacy` | ಸಾಮಾನ್ಯ ಕ್ಯಾಶ್ ವರ್ತನೆ (ಪೂರ್ವನಿಯೋಜಿತ) | | `bypass` | ಕ್ಯಾಶ್ ಹುಡುಕಾಟವನ್ನು ಸಂಪೂರ್ಣವಾಗಿ ಬಿಟ್ಟುಬಿಡಿ; ಯಾವಾಗಲೂ ಅಪ್ಸ್ಟ್ರೀಮ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ | ಕೀ ರಚಿಸುವಾಗ (`POST /api/keys`) ಹೊಂದಿಸಿ ಅಥವಾ (`PATCH /api/keys/[id]`) ನವೀಕರಿಸಿ: ```json { "cacheDefaultMode": "bypass" } ``` ### ಪ್ರತಿ-ವಿನಂತಿಯ ಬೈಪಾಸ್ ಕೀ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಲೆಕ್ಕಿಸದೆ ಯಾವುದೇ ವಿನಂತಿಯು ಕ್ಯಾಶ್ ಅನ್ನು ಬೈಪಾಸ್ ಮಾಡಬಹುದು: ``` X-OmniRoute-No-Cache: true ``` --- ## ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮತ್ತು ನಿರ್ವಹಣೆ ನಿರ್ವಹಣಾ ಮಾರ್ಗಗಳು (`/api/*`, ಸಾರ್ವಜನಿಕ auth/login ಹೊರತುಪಡಿಸಿ) ಸಾಮಾನ್ಯ inference API ಕೀಗಳಿಂದ **ಅಧಿಕೃತಗೊಳ್ಳುವುದಿಲ್ಲ**. ಕ್ರೆಡೆನ್ಶಿಯಲ್ ವರ್ಗಗಳು, ಸ್ಕೋಪ್ಗಳು ಮತ್ತು curl ಉದಾಹರಣೆಗಳಿಗಾಗಿ ನೋಡಿ: [ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ](../guides/MANAGEMENT-AUTH.md). ### ದೃಢೀಕರಣ | Endpoint | Method | ವಿವರಣೆ | | ----------------------------- | ------- | ---------------------------------- | | `/api/auth/login` | POST | ಲಾಗಿನ್ | | `/api/auth/logout` | POST | ಲಾಗ್ಔಟ್ | | `/api/settings/require-login` | GET/PUT | ಲಾಗಿನ್ ಅಗತ್ಯವಿರುವುದನ್ನು ಟಾಗಲ್ ಮಾಡಿ | ### ಪೂರೈಕೆದಾರರ ನಿರ್ವಹಣೆ | Endpoint | Method | ವಿವರಣೆ | | ---------------------------- | --------------------- | --------------------------------------------------------------------------------------------------------------------- | | `/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 ಫೈಲ್ನಿಂದ ವೈವಿಧ್ಯಮಯ ಪೂರೈಕೆದಾರರ LIST ಅನ್ನು ಆಮದು ಮಾಡಿ (#6836); ಪ್ರತಿ-ಸಾಲಿನ ಭಾಗಶಃ-ವೈಫಲ್ಯ ಫಲಿತಾಂಶಗಳು | | `/api/provider-nodes*` | ವಿವಿಧ | ಪೂರೈಕೆದಾರ ನೋಡ್ ನಿರ್ವಹಣೆ | | `/api/provider-models` | GET/POST/PATCH/DELETE | ಕಸ್ಟಮ್ ಮಾದರಿಗಳು (ಸೇರಿಸಿ, ನವೀಕರಿಸಿ, ಮರೆಮಾಡಿ/ತೋರಿಸಿ, ಅಳಿಸಿ) | ### OAuth ಹರಿವುಗಳು | Endpoint | Method | ವಿವರಣೆ | | -------------------------------- | ------ | ------------------------- | | `/api/oauth/[provider]/[action]` | ವಿವಿಧ | ಪೂರೈಕೆದಾರ-ನಿರ್ದಿಷ್ಟ OAuth | ### ರೂಟಿಂಗ್ ಮತ್ತು ಸಂರಚನೆ | Endpoint | Method | ವಿವರಣೆ | | --------------------- | -------- | ----------------------------------------- | | `/api/models/alias` | GET/POST | ಮಾದರಿ ಅಲಿಯಾಸ್ಗಳು | | `/api/models/catalog` | GET | ಪೂರೈಕೆದಾರ + ಪ್ರಕಾರದ ಪ್ರಕಾರ ಎಲ್ಲಾ ಮಾದರಿಗಳು | | `/api/combos*` | ವಿವಿಧ | ಕಾಂಬೊ ನಿರ್ವಹಣೆ | | `/api/keys*` | ವಿವಿಧ | API ಕೀ ನಿರ್ವಹಣೆ | | `/api/pricing` | GET | ಮಾದರಿ ಬೆಲೆ ನಿಗದಿ | ### ಬಳಕೆ ಮತ್ತು ವಿಶ್ಲೇಷಣೆ | Endpoint | Method | ವಿವರಣೆ | | -------------------------------- | --------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `/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 | ಪೂರೈಕೆದಾರ/ಮಾದರಿ ಪ್ರತಿ ರೋಲಿಂಗ್ ವಿಳಂಬ ಒಟ್ಟುಸಂಖ್ಯೆ (avg/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 | ವಿವರಣೆ | | ------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | `/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 | ಚಿಂತನೆ/ತಾರ್ಕಿಕತೆ **ವಿನಂತಿ** ಮರುಬರಹ ಮೋಡ್ (passthrough / auto-strip / custom / adaptive). ಕಂಪ್ರೆಷನ್ನಿಂದ ಸ್ವತಂತ್ರವಾಗಿದೆ. [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`, ಮತ್ತು ಕೊನೆಯ ಬಳಕೆಯ ಸಮಯ (ಮರುಪ್ರಾರಂಭದ ವೇಳೆ ಮರುಹೊಂದಿಸಲಾಗುತ್ತದೆ; ನಿರ್ವಹಣಾ auth) | | `/api/modality-bridge/video/runtime` | GET | ನಿರ್ವಹಣಾ auth/probe ಮೊದಲು ಕಟ್ಟುನಿಟ್ಟಾದ ವಿಶ್ವಾಸಾರ್ಹ-loopback ಪರಿಶೀಲನೆ; ಶುದ್ಧೀಕರಿಸಿದ FFmpeg/ffprobe ಲಭ್ಯತೆ ಮತ್ತು ಆವೃತ್ತಿಗಳು (no-store) | | `/api/modality-bridge/video/extract` | POST | ಆಂತರಿಕ ದೃಢೀಕೃತ ವಿಶ್ವಾಸಾರ್ಹ-loopback ಬೈಟ್ ಬ್ರೋಕರ್; 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` | ವಿವಿಧ | ಕ್ಲೌಡ್ ಸಿಂಕ್ ಕಾರ್ಯಾಚರಣೆಗಳು | | `/api/sync/initialize` | POST | ಸಿಂಕ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ | | `/api/cloud/*` | ವಿವಿಧ | ಕ್ಲೌಡ್ ನಿರ್ವಹಣೆ | ### ಟನೆಲ್ಗಳು | 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 | ವಿನಂತಿ ಕ್ಯೂ, ಸಂಪರ್ಕ cooldown, ಪೂರೈಕೆದಾರ breaker ಮತ್ತು ಕಾಯುವಿಕೆ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಪಡೆಯಿರಿ/ನವೀಕರಿಸಿ | | `/api/resilience/reset` | POST | ಪೂರೈಕೆದಾರ circuit breakerಗಳನ್ನು ಮರುಹೊಂದಿಸಿ | | `/api/resilience/model-cooldowns` | GET | ಉಳಿದಿರುವ ಸಮಯದ ಪ್ರಕಾರ ವಿಂಗಡಿಸಿದ ಸಕ್ರಿಯ ಪ್ರತಿ-(provider, connection, model) lockoutಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | `/api/resilience/model-cooldowns` | DELETE | ಮಾದರಿ lockout ಅನ್ನು ತೆರವುಗೊಳಿಸಿ — body `{provider, model}` ಅಥವಾ ಎಲ್ಲವನ್ನೂ ಅಳಿಸಲು `{all: true}` | | `/api/rate-limits` | GET | ಪ್ರತಿ-ಖಾತೆಯ ದರ ಮಿತಿ ಸ್ಥಿತಿ | | `/api/rate-limit` | GET | ಜಾಗತಿಕ ದರ ಮಿತಿ ಸಂರಚನೆ | > ಎಲ್ಲಾ ನಾಲ್ಕು `/api/resilience/*` ಮಾರ್ಗಗಳಿಗೆ **ನಿರ್ವಹಣಾ auth** (`requireManagementAuth`) ಅಗತ್ಯವಿದೆ. ಪೂರೈಕೆದಾರ breaker ಮತ್ತು ಸಂಪರ್ಕ cooldown ಹಾಗೂ ಮಾದರಿ lockout ನಡುವಿನ ಸಂಪೂರ್ಣ ವಿವರಕ್ಕಾಗಿ [ಸ್ಥಿತಿಸ್ಥಾಪಕತೆ (ವಿಸ್ತೃತ)](#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` endpoint | ಸ್ಥಳೀಯ Gemini SDK ಹೊಂದಾಣಿಕೆಯನ್ನು ನಿರೀಕ್ಷಿಸುವ ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ ಈ endpointಗಳು Gemini API ಸ್ವರೂಪವನ್ನು ಪ್ರತಿಬಿಂಬಿಸುತ್ತವೆ. ### ಆಂತರಿಕ / ಸಿಸ್ಟಮ್ APIಗಳು | Endpoint | Method | ವಿವರಣೆ | | ------------------------ | ------ | ----------------------------------------------------------- | | `/api/init` | GET | ಅಪ್ಲಿಕೇಶನ್ ಆರಂಭೀಕರಣ ಪರಿಶೀಲನೆ (ಮೊದಲ ಚಾಲನೆಯಲ್ಲಿ ಬಳಸಲಾಗುತ್ತದೆ) | | `/api/tags` | GET | Ollama-ಹೊಂದಾಣಿಕೆಯ ಮಾದರಿ ಟ್ಯಾಗ್ಗಳು (Ollama ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ) | | `/api/restart` | POST | ಸುಗಮ ಸರ್ವರ್ ಮರುಪ್ರಾರಂಭವನ್ನು ಪ್ರಚೋದಿಸಿ | | `/api/shutdown` | POST | ಸುಗಮ ಸರ್ವರ್ ಸ್ಥಗಿತವನ್ನು ಪ್ರಚೋದಿಸಿ | | `/api/system/env/repair` | POST | OAuth ಪೂರೈಕೆದಾರರ environment variableಗಳನ್ನು ದುರಸ್ತಿ ಮಾಡಿ | > **ಸೂಚನೆ:** ಈ endpointಗಳನ್ನು ಸಿಸ್ಟಮ್ ಆಂತರಿಕವಾಗಿ ಅಥವಾ Ollama ಕ್ಲೈಂಟ್ ಹೊಂದಾಣಿಕೆಗಾಗಿ ಬಳಸುತ್ತದೆ. ಸಾಮಾನ್ಯವಾಗಿ ಅಂತಿಮ ಬಳಕೆದಾರರು ಇವುಗಳನ್ನು ಕರೆ ಮಾಡುವುದಿಲ್ಲ. ### OAuth ಪರಿಸರ ದುರಸ್ತಿ _(v3.6.1+)_ ```bash POST /api/system/env/repair Content-Type: application/json { "provider": "claude-code" } ``` ನಿರ್ದಿಷ್ಟ ಪೂರೈಕೆದಾರರಿಗಾಗಿ ಕಾಣೆಯಾದ ಅಥವಾ ದೋಷಗೊಂಡ OAuth environment variableಗಳನ್ನು ದುರಸ್ತಿ ಮಾಡುತ್ತದೆ. ಹಿಂತಿರುಗಿಸುವುದು: ```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/…`). ಮತ್ತೊಂದು ಮಾರಾಟಗಾರರ ಮಾದರಿಯನ್ನು ಮರು-ರಫ್ತು ಮಾಡುವ ಗೇಟ್ವೇಗಳು ಅರ್ಹತೆಯುಳ್ಳ ಐಡಿಯನ್ನು ಬಳಸುತ್ತವೆ (`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 } ``` **ಮಾದರಿ ಐಡಿಗಳ ಉದಾಹರಣೆಗಳು:** `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` ಹೆಡರ್ ಅನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಾಗದಾಗ ಮತ್ತು ಮೂಲ URL ಒಳಗೆ API ಕೀಯನ್ನು ಅಳವಡಿಸಬೇಕಾದಾಗ ಈ ಪರ್ಯಾಯ ಹೆಸರುಗಳನ್ನು ಬಳಸಿ. ```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 ಕೀಲಿಗೆ ಅನ್ವಯಿಸುವ **ಟೋಕನ್** ಬಜೆಟ್ಗಳು (ಮೇಲಿನ USD-ಆಧಾರಿತ ಬಜೆಟ್ಗಿಂತ ಭಿನ್ನವಾಗಿವೆ). ವಿನಂತಿಯ ಪಥದಲ್ಲೇ ಇವುಗಳನ್ನು ಜಾರಿಗೊಳಿಸಲಾಗುತ್ತದೆ: ಕೀಲಿಯ ಪ್ರಸ್ತುತ ವಿಂಡೋ ಬಳಕೆಯು ಅದರ ಮಿತಿಯನ್ನು ತಲುಪಿದಾಗ, ವಿನಂತಿಗಳನ್ನು `429 Too Many Requests` ಮೂಲಕ ತಿರಸ್ಕರಿಸಲಾಗುತ್ತದೆ. ಮಿತಿಗಳನ್ನು ನಿರ್ದಿಷ್ಟ `model`, `provider` ಅಥವಾ ಕೀಲಿಯಾದ್ಯಂತ `global` ಆಗಿ ಅನ್ವಯಿಸಬಹುದು; ಹಲವು ಮಿತಿಗಳು ಒಂದು ವಿನಂತಿಗೆ ಹೊಂದಿಕೆಯಾದಾಗ, ಅತ್ಯಂತ ನಿರ್ಬಂಧಿತ ಮಿತಿಯು ಅನ್ವಯಿಸುತ್ತದೆ. ```bash # ಕೀಲಿಯ ಟೋಕನ್ ಮಿತಿಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಲೈವ್ ವಿಂಡೋ ಬಳಕೆಯನ್ನು ಒಳಗೊಂಡಿದೆ) GET /api/usage/token-limits?apiKeyId=key-123 # ಟೋಕನ್ ಮಿತಿಯನ್ನು ರಚಿಸಿ ಅಥವಾ ನವೀಕರಿಸಿ POST /api/usage/token-limits Content-Type: application/json { "apiKeyId": "key-123", "scopeType": "model", "scopeValue": "openai/gpt-4o", "tokenLimit": 1000000, "resetInterval": "monthly", "enabled": true } # id ಮೂಲಕ ಟೋಕನ್ ಮಿತಿಯನ್ನು ಅಳಿಸಿ DELETE /api/usage/token-limits?id=tl-abc ``` > **ಸ್ಕೀಮಾ ಟಿಪ್ಪಣಿಗಳು** (`setTokenLimitSchema`): `apiKeyId` ಮತ್ತು `scopeType` (`model` | `provider` | `global`) ಅಗತ್ಯವಾಗಿವೆ. `scopeType`, `global` ಆಗಿರದ ಹೊರತು `scopeValue` ಅಗತ್ಯವಾಗಿರುತ್ತದೆ (ಉದಾ. `model` ವ್ಯಾಪ್ತಿಗೆ ಮಾದರಿ id, `provider` ವ್ಯಾಪ್ತಿಗೆ ಪೂರೈಕೆದಾರರ id). `tokenLimit` ಧನಾತ್ಮಕ ಪೂರ್ಣಾಂಕವಾಗಿರಬೇಕು (ಸ್ಟ್ರಿಂಗ್ನಿಂದ ಪರಿವರ್ತಿಸಲಾಗುತ್ತದೆ). ಐಚ್ಛಿಕ: `id` (ರಚಿಸಲು ಬಿಟ್ಟುಬಿಡಿ, ನವೀಕರಿಸಲು ಒದಗಿಸಿ), `resetInterval` (`daily` | `weekly` | `monthly`, ಡೀಫಾಲ್ಟ್ `monthly`), `resetTime` (`HH:MM`), `enabled` (ಡೀಫಾಲ್ಟ್ `true`). `GET` ಪ್ರತಿಕ್ರಿಯೆಗಳು ಪ್ರತಿ ಮಿತಿಗೆ `tokensUsed`, `remaining`, `windowStart`, `periodStartAt`, ಮತ್ತು `nextResetAt` ಮಾಹಿತಿಯನ್ನು ಸೇರಿಸುತ್ತವೆ. ಇದು ನಿರ್ವಹಣಾ-ವರ್ಗದ ಎಂಡ್ಪಾಯಿಂಟ್ ಆಗಿದೆ (ದೃಢೀಕರಣವನ್ನು authz ಪೈಪ್ಲೈನ್ ಕೇಂದ್ರೀಯವಾಗಿ ಜಾರಿಗೊಳಿಸುತ್ತದೆ). ## ವಿನಂತಿ ಪ್ರಕ್ರಿಯೆ 1. ಕ್ಲೈಂಟ್ `/v1/*` ಗೆ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ 2. ರೂಟ್ ಹ್ಯಾಂಡ್ಲರ್ `handleChat`, `handleEmbedding`, `handleAudioTranscription`, ಅಥವಾ `handleImageGeneration` ಅನ್ನು ಕರೆಮಾಡುತ್ತದೆ 3. ಮಾದರಿಯನ್ನು ನಿರ್ಧರಿಸಲಾಗುತ್ತದೆ (ನೇರ provider/model ಅಥವಾ alias/combo) 4. ಖಾತೆ ಲಭ್ಯತೆಯ ಫಿಲ್ಟರಿಂಗ್ನೊಂದಿಗೆ ಸ್ಥಳೀಯ DB ಯಿಂದ ರುಜುವಾತುಗಳನ್ನು ಆಯ್ಕೆಮಾಡಲಾಗುತ್ತದೆ 5. ಚಾಟ್ಗಾಗಿ: `handleChatCore` ಅರ್ಥಾತ್ಮಕ/ಸಿಗ್ನೇಚರ್ ಕ್ಯಾಶ್ ಅನ್ನು ಪರಿಶೀಲಿಸುತ್ತದೆ ಮತ್ತು ಕಾಂಬೊ ಕಂಪ್ರೆಷನ್ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನಿರ್ಧರಿಸುತ್ತದೆ 6. ಸಕ್ರಿಯಗೊಳಿಸಿದಾಗ ಪೂರೈಕೆದಾರರ ಅನುವಾದಕ್ಕೂ ಮೊದಲು ಪೂರ್ವಸಕ್ರಿಯ ಕಂಪ್ರೆಷನ್ ರನ್ ಆಗುತ್ತದೆ (`lite`, Caveman, RTK, ಅಥವಾ ಸ್ಟ್ಯಾಕ್ ಮಾಡಿದ ವಿಧಾನ) 7. ಪೂರೈಕೆದಾರರ ಎಕ್ಸಿಕ್ಯೂಟರ್ ಅಪ್ಸ್ಟ್ರೀಮ್ ವಿನಂತಿಯನ್ನು ಕಳುಹಿಸುತ್ತದೆ 8. ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಮತ್ತೆ ಕ್ಲೈಂಟ್ ಸ್ವರೂಪಕ್ಕೆ ಅನುವಾದಿಸಲಾಗುತ್ತದೆ (ಚಾಟ್) ಅಥವಾ ಇದ್ದಂತೆಯೇ ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ (ಎಂಬೆಡಿಂಗ್ಗಳು/ಚಿತ್ರಗಳು/ಆಡಿಯೊ) 9. ಬಳಕೆ, ಕಂಪ್ರೆಷನ್ ವಿಶ್ಲೇಷಣೆಗಳು ಮತ್ತು ವಿನಂತಿ ಲಾಗ್ಗಳನ್ನು ದಾಖಲಿಸಲಾಗುತ್ತದೆ 10. ದೋಷಗಳು ಸಂಭವಿಸಿದಾಗ ಕಾಂಬೊ ನಿಯಮಗಳ ಪ್ರಕಾರ ಫಾಲ್ಬ್ಯಾಕ್ ಅನ್ವಯಿಸುತ್ತದೆ ಸಂಪೂರ್ಣ ಆರ್ಕಿಟೆಕ್ಚರ್ ಉಲ್ಲೇಖ: [`ARCHITECTURE.md`](../architecture/ARCHITECTURE.md) --- ## ಕಾಂಬೊ ನಿರ್ವಹಣೆ ಉನ್ನತ-ಮಟ್ಟದ ರೂಟಿಂಗ್ ಕಾಂಬೊಗಳನ್ನು (`/api/combos*` ಅಡಿಯಲ್ಲಿ ಈಗಾಗಲೇ ಸಾರಾಂಶಗೊಳಿಸಲಾಗಿದೆ) ಮಾದರಿ id ಪ್ಯಾಟರ್ನ್ನಿಂದ 1:1 ಅನುಪಾತದಲ್ಲಿ ಮ್ಯಾಪ್ ಮಾಡಬಹುದು; ಇದರಿಂದ OpenAI-ಶೈಲಿಯ ಮಾದರಿ id ಅನ್ನು ಕಾಂಬೊಗೆ ಪಾರದರ್ಶಕವಾಗಿ ಮರುನಿರ್ದೇಶಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | -------------------------------- | ------------------------------------------------------------------------------- | | GET | `/api/model-combo-mappings` | ಎಲ್ಲಾ model→combo ಮ್ಯಾಪಿಂಗ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/api/model-combo-mappings` | ಮ್ಯಾಪಿಂಗ್ ರಚಿಸಿ — ಬಾಡಿ: `{pattern, comboId, priority?, enabled?, description?}` | | GET | `/api/model-combo-mappings/[id]` | ಒಂದೇ ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ಪಡೆಯಿರಿ | | PUT | `/api/model-combo-mappings/[id]` | ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಮ್ಯಾಪಿಂಗ್ನ ಫೀಲ್ಡ್ಗಳನ್ನು ನವೀಕರಿಸಿ | | DELETE | `/api/model-combo-mappings/[id]` | ಮ್ಯಾಪಿಂಗ್ ಅನ್ನು ತೆಗೆದುಹಾಕಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ (`requireManagementAuth`). --- ## ವೆಬ್ಹುಕ್ಗಳು OmniRoute ಈವೆಂಟ್ಗಳಿಗಾಗಿ (ವಿನಂತಿ ಪೂರ್ಣಗೊಳಿಸುವಿಕೆ, ಕೋಟಾ ಮುಕ್ತಾಯ, ಕೀ ಬದಲಾವಣೆ ಇತ್ಯಾದಿ) ಹೊರಹೋಗುವ ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಗಳು. | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ------ | ------------------------- | ----------------------------------------------------------------------------------- | | GET | `/api/webhooks` | ವೆಬ್ಹುಕ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ (ರಹಸ್ಯಗಳನ್ನು `...` ರೂಪದಲ್ಲಿ ಮರೆಮಾಡಲಾಗುತ್ತದೆ) | | POST | `/api/webhooks` | ವೆಬ್ಹುಕ್ ರಚಿಸುತ್ತದೆ — ವಿನಂತಿಯ ಭಾಗ: `{url, events?: ["*"], secret?, description?}` | | GET | `/api/webhooks/[id]` | ವೆಬ್ಹುಕ್ ಅನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ | | PUT | `/api/webhooks/[id]` | url/events/secret/description ಅನ್ನು ನವೀಕರಿಸುತ್ತದೆ | | DELETE | `/api/webhooks/[id]` | ವೆಬ್ಹುಕ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ | | POST | `/api/webhooks/[id]/test` | ವೆಬ್ಹುಕ್ URL ಗೆ ಪರೀಕ್ಷಾ ಪೇಲೋಡ್ ಕಳುಹಿಸಿ, ವಿತರಣೆಯ ಸ್ಥಿತಿಯನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ (`requireManagementAuth`). --- ## ನೋಂದಾಯಿತ ಕೀಗಳು (ಸ್ವಯಂ-ನಿರ್ವಹಣೆ) ದೈನಂದಿನ/ಗಂಟೆಯ ಕೋಟಾಗಳೊಂದಿಗೆ, ಆಧಾರ ಒದಗಿಸುವವರು/ಖಾತೆಯ ಮೂಲಕ API ಕೀಗಳನ್ನು ನೀಡಲು ಮತ್ತು ಬದಲಾಯಿಸಲು ಸ್ವಯಂ-ಕೀ ನಿರ್ವಹಣಾ ಉಪವ್ಯವಸ್ಥೆಯಿಂದ ಬಳಸಲಾಗುತ್ತದೆ. | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ------ | ------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/v1/registered-keys` | ನೋಂದಾಯಿತ ಕೀಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ (ಮರೆಮಾಡಿದ ಪೂರ್ವಪ್ರತ್ಯಯ ಮಾತ್ರ) | | POST | `/api/v1/registered-keys` | ಹೊಸ ನೋಂದಾಯಿತ ಕೀಯನ್ನು ನೀಡುತ್ತದೆ — ವಿನಂತಿಯ ಭಾಗ: `{name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}`. ಮೂಲ ಕೀಯನ್ನು **ಒಮ್ಮೆ ಮಾತ್ರ** ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಕೋಟಾ ನಿರಾಕರಣೆಯಾದಾಗ `429` ಹಿಂತಿರುಗಿಸುತ್ತದೆ. | | GET | `/api/v1/registered-keys/[id]` | ನೋಂದಾಯಿತ ಕೀಯ ಮೆಟಾಡೇಟಾವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ (ಮೂಲ ಕೀ ಮೌಲ್ಯವಿಲ್ಲದೆ) | | DELETE | `/api/v1/registered-keys/[id]` | ನೋಂದಾಯಿತ ಕೀಯನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ | | POST | `/api/v1/registered-keys/[id]/revoke` | ಸ್ಪಷ್ಟ ರದ್ದುಗೊಳಿಸುವಿಕೆ ಎಂಡ್ಪಾಯಿಂಟ್ (DELETE ನಂತೆಯೇ ಪರಿಣಾಮ) | **ದೃಢೀಕರಣ:** Bearer API ಕೀ (`isAuthenticated`). `/v1/quotas/check` ಮತ್ತು `/v1/issues/report` ಅನ್ನೂ ನೋಡಿ. --- ## ಏಜೆಂಟ್ಗಳ ಪ್ರೋಟೋಕಾಲ್ OmniRoute ಬಳಕೆದಾರರ ಪರವಾಗಿ ದೂರದಿಂದ ಕಾರ್ಯಗತಗೊಳಿಸಲಾದ ಕ್ಲೌಡ್ ಏಜೆಂಟ್ ಕಾರ್ಯಗಳು (Claude Code, Codex Cloud, OpenHands ಇತ್ಯಾದಿ). | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ----------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | GET | `/api/v1/agents/tasks` | ಕಾರ್ಯಗಳ ಪಟ್ಟಿ — ಐಚ್ಛಿಕವಾಗಿ `?provider=`, `?status=`, `?limit=` (1–500, ಡೀಫಾಲ್ಟ್ 50) | | POST | `/api/v1/agents/tasks` | ಕಾರ್ಯವನ್ನು ರಚಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `CreateCloudAgentTaskSchema` (`providerId`, `prompt`, `source`, `options?`) ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ. ಕಾರ್ಯದ ಹೊದಿಕೆಯೊಂದಿಗೆ `201` ಹಿಂತಿರುಗಿಸುತ್ತದೆ | | DELETE | `/api/v1/agents/tasks?id=...` | ಕಾರ್ಯವನ್ನು ಅಳಿಸಿ | | GET | `/api/v1/agents/tasks/[id]` | ಕಾರ್ಯವನ್ನು ಓದಿ — `external_id` ಹೊಂದಿಸಿದ್ದರೆ, ಅಪ್ಸ್ಟ್ರೀಮ್ ಕ್ಲೌಡ್ ಏಜೆಂಟ್ನಿಂದ ಸ್ಥಿತಿಯನ್ನು ಸಮಕಾಲಿಕವಾಗಿ ನವೀಕರಿಸುತ್ತದೆ | | POST | `/api/v1/agents/tasks/[id]` | ವಿಭೇದಿತ ಕ್ರಿಯೆ: `{action: "approve"}`, `{action: "message", message}`, ಅಥವಾ `{action: "cancel"}` | | DELETE | `/api/v1/agents/tasks/[id]` | id ಮೂಲಕ ನಿರ್ದಿಷ್ಟ ಕಾರ್ಯವನ್ನು ಅಳಿಸಿ | > **ದೃಢೀಕರಣ:** ಪ್ರತಿಯೊಂದು ವಿಧಾನಕ್ಕೂ ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ ಅಗತ್ಯವಿದೆ (`requireCloudAgentManagementAuth`). v3.8.0 ಕ್ಕಿಂತ ಮೊದಲು ಇವು ದೃಢೀಕರಣರಹಿತವಾಗಿದ್ದವು — ಹೊಂದಾಣಿಕೆಯನ್ನು ಮುರಿಯುವ ಬದಲಾವಣೆಗಾಗಿ `588a0333` ಕಮಿಟ್ ನೋಡಿ. ```bash # Claude Code ಕ್ಲೌಡ್ ಕಾರ್ಯವನ್ನು ರಚಿಸಿ curl -X POST http://localhost:20128/api/v1/agents/tasks \ -H "Authorization: Bearer your-management-key" \ -H "Content-Type: application/json" \ -d '{"providerId":"claude-code-cloud","prompt":"Fix the failing test","source":{"repo":"...","branch":"..."}}' ``` --- ## ನಿರ್ವಹಣಾ ಪ್ರಾಕ್ಸಿಗಳು ಪೂರೈಕೆದಾರರು, ಖಾತೆಗಳು ಅಥವಾ ಜಾಗತಿಕವಾಗಿ ನಿಯೋಜಿಸಬಹುದಾದ ಔಟ್ಬೌಂಡ್ HTTP(S)/SOCKS ಪ್ರಾಕ್ಸಿಗಳು. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/v1/management/proxies` | ಪ್ರಾಕ್ಸಿಗಳ ಪಟ್ಟಿ (`?id=` ಬಳಸಿದರೆ ಒಂದನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ; `?id=&where_used=1` ಬಳಸಿದರೆ ನಿಯೋಜನೆ ಗ್ರಾಫ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ) | | POST | `/api/v1/management/proxies` | ಪ್ರಾಕ್ಸಿಯನ್ನು ರಚಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `createProxyRegistrySchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ | | PATCH | `/api/v1/management/proxies` | ಪ್ರಾಕ್ಸಿಯನ್ನು ನವೀಕರಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `updateProxyRegistrySchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ (`id` ಅಗತ್ಯವಿದೆ) | | DELETE | `/api/v1/management/proxies?id=...&force=1` | ಪ್ರಾಕ್ಸಿಯನ್ನು ಅಳಿಸಿ (ನಿಯೋಜನೆಗಳನ್ನು ಬೇರ್ಪಡಿಸಲು `force=1` ಬಳಸಿ) | | GET | `/api/v1/management/proxies/assignments` | ನಿಯೋಜನೆಗಳ ಪಟ್ಟಿ — `proxy_id`, `scope`, `scope_id` ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು; ಸಂಪರ್ಕಕ್ಕಾಗಿ ಸಕ್ರಿಯ ಪ್ರಾಕ್ಸಿಯನ್ನು ನಿರ್ಧರಿಸಲು `resolve_connection_id=` ಅನ್ನು ರವಾನಿಸಿ | | PUT | `/api/v1/management/proxies/assignments` | ನಿಯೋಜಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `proxyAssignmentSchema` (`{scope, scopeId?, proxyId?}`) ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ. ಡಿಸ್ಪ್ಯಾಚರ್ ಕ್ಯಾಶ್ ಅನ್ನು ತೆರವುಗೊಳಿಸುತ್ತದೆ | | PUT | `/api/v1/management/proxies/bulk-assign` | ಸಾಮೂಹಿಕವಾಗಿ ನಿಯೋಜಿಸಿ — ವಿನಂತಿಯ ಮುಖ್ಯಭಾಗವನ್ನು `bulkProxyAssignmentSchema` (`{scope, scopeIds[], proxyId?}`) ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ | | GET | `/api/v1/management/proxies/health?hours=24` | ಒಂದು ಕಾಲಾವಧಿಯಲ್ಲಿನ ಒಟ್ಟು ಪ್ರಾಕ್ಸಿ ಆರೋಗ್ಯ (ಯಶಸ್ಸು/ವೈಫಲ್ಯ ಎಣಿಕೆಗಳು, ವಿಳಂಬ) | **ದೃಢೀಕರಣ:** ಪ್ರತಿಯೊಂದು ಮಾರ್ಗದಲ್ಲೂ ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ ಅಗತ್ಯವಿದೆ (`requireManagementAuth`). > ಕಾರ್ಯದ ವಿವರಣೆಯಲ್ಲಿರುವ `POST /api/v1/management/proxies/[id]/assignments` ಮತ್ತು `POST /api/v1/management/proxies/[id]/health` ವಿನಂತಿಗಳನ್ನು ಮೇಲೆ ತೋರಿಸಲಾದ ಸಮತಟ್ಟಾದ `/assignments` ಮತ್ತು `/health` ಮಾರ್ಗಗಳು ನಿರ್ವಹಿಸುತ್ತವೆ — ಕೋಡ್ಬೇಸ್ನಲ್ಲಿ ಪ್ರತಿ-id ಉಪಮಾರ್ಗಗಳಿಲ್ಲ. --- ## ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವ (ವಿಸ್ತೃತ) OmniRoute ಮೂರು ಸ್ವತಂತ್ರ ತಾತ್ಕಾಲಿಕ-ವೈಫಲ್ಯ ಕಾರ್ಯವಿಧಾನಗಳನ್ನು ಒದಗಿಸುತ್ತದೆ; ಕೆಳಗಿನ ನಿರ್ವಹಣಾ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು ಅವುಗಳನ್ನು ಓದಲು ಮತ್ತು ಅತಿಕ್ರಮಿಸಲು ಆಪರೇಟರ್ಗಳಿಗೆ ಅವಕಾಶ ನೀಡುತ್ತವೆ: | ವ್ಯಾಪ್ತಿ | ಸ್ಥಿತಿ ಸಂಗ್ರಹಣೆ | ಓದುವುದು | ಮರುಹೊಂದಿಸುವುದು / ತೆರವುಗೊಳಿಸುವುದು | | ----------------- | ------------------------------------------ | ----------------------------------------- | ----------------------------------------------------------------- | | ಪೂರೈಕೆದಾರ ಬ್ರೇಕರ್ | `domain_circuit_breakers` + ಇನ್-ಮೆಮೊರಿ | `/api/monitoring/health` | `POST /api/resilience/reset` | | ಸಂಪರ್ಕ ಕೂಲ್ಡೌನ್ | ಪೂರೈಕೆದಾರ ಸಂಪರ್ಕಗಳಲ್ಲಿನ `rateLimitedUntil` | `/api/rate-limits`, `/api/providers/[id]` | (ಅಗತ್ಯವಾದಾಗ ಮರುಸಕ್ರಿಯಗೊಳ್ಳುತ್ತದೆ; ಪೂರೈಕೆದಾರ PUT ಮೂಲಕ ತೆರವುಗೊಳಿಸಿ) | | ಮಾದರಿ ಲಾಕ್ಔಟ್ | ಇನ್-ಮೆಮೊರಿ ಮಾದರಿ-ಲಭ್ಯತೆ ರಿಜಿಸ್ಟ್ರಿ | `GET /api/resilience/model-cooldowns` | `DELETE /api/resilience/model-cooldowns` | `PATCH /api/resilience`, `providerBreaker.oauth` ಮತ್ತು `providerBreaker.apikey` ಅಡಿಯಲ್ಲಿ ಪೂರೈಕೆದಾರ ಬ್ರೇಕರ್ ಅತಿಕ್ರಮಣಗಳನ್ನು ಸ್ವೀಕರಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ಪ್ರೊಫೈಲ್ `degradationThreshold`, `failureThreshold`, ಮತ್ತು `resetTimeoutMs` ಅನ್ನು ಬೆಂಬಲಿಸುತ್ತದೆ; ಇದೇ ಕ್ಷೇತ್ರಗಳನ್ನು Dashboard → Settings → Resilience ನಲ್ಲಿಯೂ ಒದಗಿಸಲಾಗಿದೆ. ```bash # ಒಂದೇ ಮಾದರಿಯ ಲಾಕ್ಔಟ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \ -H "Cookie: auth_token=..." \ -H "Content-Type: application/json" \ -d '{"provider":"openai","model":"gpt-4o-mini"}' # ಎಲ್ಲಾ ಲಾಕ್ಔಟ್ಗಳನ್ನು ಅಳಿಸಿ curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \ -H "Cookie: auth_token=..." \ -d '{"all":true}' ``` ಸಂಪೂರ್ಣ ಪರಿಕಲ್ಪನಾ ಉಲ್ಲೇಖ ಮತ್ತು ಬ್ರೇಕರ್ ಡೀಫಾಲ್ಟ್ಗಳಿಗಾಗಿ: [`CLAUDE.md`](../../CLAUDE.md) → "ಸ್ಥಿತಿಸ್ಥಾಪಕತ್ವದ ರನ್ಟೈಮ್ ಸ್ಥಿತಿ" ನೋಡಿ. --- ## ಕೌಶಲ್ಯಗಳು ಕಸ್ಟಮ್ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದಾದ ಹ್ಯಾಂಡ್ಲರ್ಗಳು ಹಾಗೂ ಮಾರ್ಕೆಟ್ಪ್ಲೇಸ್ ಏಕೀಕರಣಗಳೊಂದಿಗೆ OmniRoute ಅನ್ನು ವಿಸ್ತರಿಸುವ ಕೌಶಲ್ಯ ಫ್ರೇಮ್ವರ್ಕ್. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | --------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/skills` | ಸ್ಥಾಪಿಸಲಾದ ಕೌಶಲ್ಯಗಳ ಪಟ್ಟಿ — `?q=`, `?mode=on\|off\|auto`, `?source=skillsmp\|skillssh\|local` ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು, ಪುಟೀಕರಿಸಲಾಗಿದೆ | | GET | `/api/skills/[id]` | ಒಂದು ಕೌಶಲ್ಯವನ್ನು ಹಿಂಪಡೆಯಿರಿ | | PUT | `/api/skills/[id]` | ಕೌಶಲ್ಯವನ್ನು ನವೀಕರಿಸಿ (ಹೆಸರು, ವಿವರಣೆ, ಮೋಡ್, ಸ್ಕೀಮಾ, ಹ್ಯಾಂಡ್ಲರ್, ಟ್ಯಾಗ್ಗಳು) | | DELETE | `/api/skills/[id]` | ಕೌಶಲ್ಯವನ್ನು ಅಸ್ಥಾಪಿಸಿ | | POST | `/api/skills/install` | ರಾ ಮ್ಯಾನಿಫೆಸ್ಟ್ನಿಂದ ಕೌಶಲ್ಯವನ್ನು ಸ್ಥಾಪಿಸಿ — ಬಾಡಿ: `{name, version, description, schema:{input, output}, handlerCode, apiKeyId?}` | | GET | `/api/skills/executions` | ಇತ್ತೀಚಿನ ಕೌಶಲ್ಯ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆಗಳ ಪಟ್ಟಿ (ಇನ್ಪುಟ್ಗಳು/ಔಟ್ಪುಟ್ಗಳು/ಅವಧಿಯೊಂದಿಗಿನ ಆಡಿಟ್ ಟ್ರೇಲ್) | | GET | `/api/skills/marketplace?q=...` | SkillsMP ಮಾರ್ಕೆಟ್ಪ್ಲೇಸ್ನಿಂದ ಹುಡುಕಾಟ/ಜನಪ್ರಿಯ ಪಟ್ಟಿ (`skillsmpApiKey` ಸೆಟ್ಟಿಂಗ್ ಅಗತ್ಯವಿದೆ) | | POST | `/api/skills/marketplace/install` | SkillsMP ನಿಂದ id ಮೂಲಕ ಕೌಶಲ್ಯವನ್ನು ಸ್ಥಾಪಿಸಿ | | GET | `/api/skills/skillssh?q=&limit=` | skills.sh ರಿಜಿಸ್ಟ್ರಿಯನ್ನು ಹುಡುಕಿ | | POST | `/api/skills/skillssh/install` | skills.sh ನಿಂದ id ಮೂಲಕ ಕೌಶಲ್ಯವನ್ನು ಸ್ಥಾಪಿಸಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ. ಮಾರ್ಕೆಟ್ಪ್ಲೇಸ್ ಹುಡುಕಾಟ ಮಾರ್ಗಗಳು ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ ಅಥವಾ Bearer API ಕೀ (`isAuthenticated`) ಇವೆರಡರಲ್ಲಿ ಯಾವುದನ್ನಾದರೂ ಸ್ವೀಕರಿಸುತ್ತವೆ. --- ## ಮೆಮೊರಿ API ಕೀ / ಸೆಷನ್ಗೆ ಪ್ರತ್ಯೇಕವಾಗಿ ವ್ಯಾಪ್ತಿಗೊಳಿಸಲಾದ ನಿರಂತರ ಸಂಭಾಷಣಾತ್ಮಕ/ವಾಸ್ತವಾಂಶ ಮೆಮೊರಿ ಸಂಗ್ರಹ. | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ------ | -------------------- | ----------------------------------------------------------------------------------------------------------------- | | GET | `/api/memory` | ಮೆಮೊರಿಗಳ ಪಟ್ಟಿ — `?apiKeyId=`, `?type=`, `?sessionId=`, `?q=`, ಜೊತೆಗೆ `offset/limit` ಅಥವಾ `page/limit` ಪುಟವಿಭಜನೆ | | POST | `/api/memory` | ಮೆಮೊರಿ ರಚಿಸಿ — Zod ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾದ ಬಾಡಿ: `{content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}` | | GET | `/api/memory/[id]` | ಒಂದು ಮೆಮೊರಿಯನ್ನು ಹಿಂಪಡೆಯಿರಿ | | DELETE | `/api/memory/[id]` | ಒಂದು ಮೆಮೊರಿಯನ್ನು ಅಳಿಸಿ | | GET | `/api/memory/health` | ಮೆಮೊರಿ ಉಪವ್ಯವಸ್ಥೆಯ ಸ್ಥಿತಿ (DB ಸಂಪರ್ಕ, ಎಂಬೆಡಿಂಗ್ಗಳ ಬ್ಯಾಕೆಂಡ್, ವೆಕ್ಟರ್ ಸೂಚ್ಯಂಕದ ಸ್ಥಿತಿ) | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀ (`requireManagementAuth`). `type` enum: `FACTUAL`, `EPISODIC`, `SEMANTIC`, `PROCEDURAL` (`src/lib/memory/types.ts` ನಲ್ಲಿರುವ `MemoryType` ನೋಡಿ). --- ## MCP ಸರ್ವರ್ OmniRoute 3 ಸಾರಿಗೆ ವಿಧಾನಗಳು (stdio, SSE, streamable-http) ಮತ್ತು ವ್ಯಾಪ್ತಿ-ನಿರ್ಬಂಧಿತ ಪರಿಕರಗಳೊಂದಿಗೆ ಎಂಬೆಡ್ ಮಾಡಲಾದ Model Context Protocol ಸರ್ವರ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ಕೆಳಗಿನ ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು ಸ್ಥಿತಿ/ಲೆಕ್ಕಪರಿಶೋಧನಾ ಡೇಟಾವನ್ನು ಓದುತ್ತವೆ ಮತ್ತು HTTP ಸಾರಿಗೆ ವಿಧಾನಗಳಿಗೆ ಪ್ರಾಕ್ಸಿಯಾಗಿ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ. | ವಿಧಾನ | ಮಾರ್ಗ | ವಿವರಣೆ | | ------ | ---------------------- | ------------------------------------------------------------------------------------------------ | -------------------- | | GET | `/api/mcp/status` | ಹಾರ್ಟ್ಬೀಟ್, ಸಾರಿಗೆ ವಿಧಾನ, ಆನ್ಲೈನ್ ಸ್ಥಿತಿ, ಕೊನೆಯ ಕರೆ, ಪ್ರಮುಖ ಪರಿಕರಗಳು, 24 ಗಂಟೆಗಳ ಯಶಸ್ಸಿನ ಪ್ರಮಾಣ | | GET | `/api/mcp/tools` | `name`, `description`, `scopes`, `phase`, `auditLevel`, `sourceEndpoints` ಹೊಂದಿರುವ MCP ಪರಿಕರಗಳ ಪಟ್ಟಿ | | GET | `/api/mcp/sse` | SSE ಸಾರಿಗೆ ವಿಧಾನಕ್ಕಾಗಿ SSE ಸ್ಟ್ರೀಮ್ ತೆರೆಯಿರಿ (MCP ನಿಷ್ಕ್ರಿಯವಾಗಿದ್ದರೆ ಅಥವಾ ಸಾರಿಗೆ ವಿಧಾನ ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ `503` ಹಿಂತಿರುಗಿಸುತ್ತದೆ) | | POST | `/api/mcp/sse` | SSE ಸಾರಿಗೆ ವಿಧಾನದ ಮೂಲಕ JSON-RPC ಫ್ರೇಮ್ ಕಳುಹಿಸಿ | | GET | `/api/mcp/stream` | Streamable HTTP ಸಾರಿಗೆ ವಿಧಾನದ SSE ಭಾಗವನ್ನು ತೆರೆಯಿರಿ (ಸರ್ವರ್ ಪ್ರಾರಂಭಿಸಿದ ಸಂದೇಶಗಳು) | | POST | `/api/mcp/stream` | Streamable HTTP ಸಾರಿಗೆ ವಿಧಾನದ ಮೂಲಕ JSON-RPC ಫ್ರೇಮ್ ಕಳುಹಿಸಿ | | DELETE | `/api/mcp/stream` | Streamable HTTP ಸೆಷನ್ ಅನ್ನು ಕೊನೆಗೊಳಿಸಿ | | GET | `/api/mcp/audit` | ಲೆಕ್ಕಪರಿಶೋಧನಾ ಲಾಗ್ ಅನ್ನು ಪ್ರಶ್ನಿಸಿ — `?limit=`, `?offset=`, `?tool=`, `?success=true | false`, `?apiKeyId=` | | GET | `/api/mcp/audit/stats` | ಒಟ್ಟಾರೆ ಲೆಕ್ಕಪರಿಶೋಧನಾ ಅಂಕಿಅಂಶಗಳು (ಒಟ್ಟುಗಳು, ಯಶಸ್ಸಿನ ಪ್ರಮಾಣ, ಸರಾಸರಿ ಅವಧಿ, ಪ್ರಮುಖ ಪರಿಕರಗಳು) | **ದೃಢೀಕರಣ:** `sse`/`stream` ಸಾರಿಗೆ ವಿಧಾನಗಳು MCP-ನಿರ್ದಿಷ್ಟ ದೃಢೀಕರಣ ಮೇಲ್ಮೈಯನ್ನು ಅನುಸರಿಸುತ್ತವೆ (`mcp` ವ್ಯಾಪ್ತಿಯೊಂದಿಗೆ Bearer API ಕೀ); `status`/`tools`/`audit*` ಮಾರ್ಗಗಳನ್ನು ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಿಂದ ಓದಬಹುದು (ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಹೋಸ್ಟ್ ತಲುಪುವುದಕ್ಕಿಂತ ಹೆಚ್ಚುವರಿ ದೃಢೀಕರಣದ ಅಗತ್ಯವಿಲ್ಲ). > ಎರಡೂ HTTP ಸಾರಿಗೆ ವಿಧಾನಗಳನ್ನು `settings.mcpEnabled` ಮತ್ತು `settings.mcpTransport` ನಿಯಂತ್ರಿಸುತ್ತವೆ — ಸಾರಿಗೆ ವಿಧಾನ ಹೊಂದಿಕೆಯಾಗದಿದ್ದರೆ `400`, MCP ನಿಷ್ಕ್ರಿಯ ಸ್ಥಿತಿಯಲ್ಲಿದ್ದರೆ `503` ಹಿಂತಿರುಗಿಸಲಾಗುತ್ತದೆ. --- ## A2A ಸರ್ವರ್ ಪರಿಶೀಲನೆ/ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಬಳಕೆಗಾಗಿ OmniRoute ಒಂದು A2A (ಏಜೆಂಟ್ನಿಂದ-ಏಜೆಂಟ್ಗೆ) JSON-RPC 2.0 ಎಂಡ್ಪಾಯಿಂಟ್ ಜೊತೆಗೆ REST ರ್ಯಾಪರ್ ಅನ್ನು ಒದಗಿಸುತ್ತದೆ. ### JSON-RPC ```bash POST /a2a Authorization: Bearer your-api-key # OMNIROUTE_API_KEY ಹೊಂದಿಸದಿದ್ದರೆ ಐಚ್ಛಿಕ Content-Type: application/json { "jsonrpc": "2.0", "id": 1, "method": "message/send", "params": { "skill": "smart-routing", "messages": [{"role": "user", "content": "Route this coding task"}] } } ``` ಬೆಂಬಲಿತ ವಿಧಾನಗಳು (ಎಲ್ಲವೂ `settings.a2aEnabled` ಮೂಲಕ ನಿಯಂತ್ರಿತವಾಗಿವೆ): | ವಿಧಾನ | ವಿವರಣೆ | | ---------------- | --------------------------------------------------------------------------------------- | | `message/send` | ಸಿಂಕ್ರೊನಸ್ ಕೌಶಲ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ; `{task, artifacts, metadata}` ಅನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ | | `message/stream` | ಅದೇ ಕೌಶಲ ಗುಂಪಿನ ಸ್ಟ್ರೀಮಿಂಗ್ SSE ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ | | `tasks/get` | `taskId` ಮೂಲಕ ಕಾರ್ಯವನ್ನು ಪಡೆಯುತ್ತದೆ | | `tasks/cancel` | `taskId` ಮೂಲಕ ಕಾರ್ಯವನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ | ಅಂತರ್ನಿರ್ಮಿತ ಕೌಶಲಗಳು: `smart-routing`, `quota-management`, `provider-discovery`, `cost-analysis`, `health-report`. ### ಏಜೆಂಟ್ ಕಾರ್ಡ್ ```bash GET /.well-known/agent.json ``` ಸಾರ್ವಜನಿಕ A2A ಏಜೆಂಟ್ ಕಾರ್ಡ್ ಅನ್ನು (ಹೆಸರು, ವಿವರಣೆ, ಸಾಮರ್ಥ್ಯಗಳು, ಕೌಶಲ ಕ್ಯಾಟಲಾಗ್, ದೃಢೀಕರಣ ಯೋಜನೆ) ಹಿಂದಿರುಗಿಸುತ್ತದೆ — ಸಾರ್ವಜನಿಕವಾಗಿ 1h ಅವಧಿಗೆ ಕ್ಯಾಶ್ ಮಾಡಲಾಗುತ್ತದೆ. ದೃಢೀಕರಣದ ಅಗತ್ಯವಿಲ್ಲ. ### REST ಸಹಾಯಕಗಳು | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/a2a/status` | A2A ಸಕ್ರಿಯಗೊಳಿಸಿರುವ ಸ್ಥಿತಿ + ಕಾರ್ಯದ ಅಂಕಿಅಂಶಗಳು + ಕ್ಯಾಶ್ ಮಾಡಲಾದ ಏಜೆಂಟ್ ಕಾರ್ಡ್ ಸಾರಾಂಶ | | GET | `/api/a2a/tasks` | ಕಾರ್ಯಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ — `?state=submitted\|working\|completed\|failed\|cancelled`, `?skill=`, `?limit=` (≤200), `?offset=` | | POST | `/api/a2a/tasks` | (REST ಸಹಾಯಕವಾಗಿ ಅನುಷ್ಠಾನಗೊಳಿಸಿಲ್ಲ — JSON-RPC `message/send` ಮೂಲಕ ರಚಿಸಿ) | | GET | `/api/a2a/tasks/[id]` | ಒಂದು ಕಾರ್ಯವನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ | | POST | `/api/a2a/tasks/[id]/cancel` | ಕಾರ್ಯವನ್ನು ರದ್ದುಗೊಳಿಸುತ್ತದೆ | **ದೃಢೀಕರಣ:** REST ಸಹಾಯಕಗಳು ನಿರ್ವಹಣಾ ದೃಢೀಕರಣವಿಲ್ಲದೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ (ಡ್ಯಾಶ್ಬೋರ್ಡ್ನಿಂದ ಓದಬಹುದು); ಕಾನ್ಫಿಗರ್ ಮಾಡಿದ್ದರೆ JSON-RPC `/a2a` ಮಾರ್ಗವು Bearer `OMNIROUTE_API_KEY` ಅನ್ನು ಬಳಸುತ್ತದೆ. --- ## ಕ್ಲೌಡ್, ಮೌಲ್ಯಮಾಪನಗಳು ಮತ್ತು ನಿರ್ಧಾರಣೆ | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------- | | POST | `/api/cloud/auth` | Bearer ಕೀಲಿಯನ್ನು ಪರಿಶೀಲಿಸಿ ಮತ್ತು ಕ್ಲೌಡ್ ಸಿಂಕ್ ಕ್ಲೈಂಟ್ಗಳಿಗಾಗಿ ಮರೆಮಾಡಲಾದ ಪೂರೈಕೆದಾರ ಸಂಪರ್ಕಗಳು + ಮಾದರಿ ಅಲಿಯಾಸ್ಗಳನ್ನು ಹಿಂದಿರುಗಿಸುತ್ತದೆ | | POST | `/api/cloud/credentials/update` | ಕ್ಲೌಡ್ನೊಂದಿಗೆ ಸಿಂಕ್ ಮಾಡಿದ ಪೂರೈಕೆದಾರರ ಎನ್ಕ್ರಿಪ್ಟ್ ಮಾಡಿದ ರುಜುವಾತುಗಳನ್ನು ನವೀಕರಿಸುತ್ತದೆ | | POST | `/api/cloud/model/resolve` | ಸ್ಥಳೀಯ ರೂಟಿಂಗ್ ಕೋಷ್ಟಕವನ್ನು ಬಳಸಿಕೊಂಡು ತಾರ್ಕಿಕ ಮಾದರಿ ID ಅನ್ನು ನಿರ್ದಿಷ್ಟ ಪೂರೈಕೆದಾರ/ಮಾದರಿಗೆ ಪರಿಹರಿಸುತ್ತದೆ | | GET | `/api/cloud/models/alias` | ಕ್ಲೌಡ್ ಸಿಂಕ್ಗೆ ಬಹಿರಂಗಪಡಿಸಿದಂತೆ ಮಾದರಿ ಅಲಿಯಾಸ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ | | GET | `/api/assess` | ಇತ್ತೀಚಿನ ನಿರ್ಧಾರಣೆಯ ವರ್ಗೀಕರಣಗಳನ್ನು ಓದುತ್ತದೆ (ಪ್ರತಿ ಪೂರೈಕೆದಾರ/ಮಾದರಿಗೆ) | | POST | `/api/assess` | ನಿರ್ಧಾರಣೆಯನ್ನು ನಡೆಸುತ್ತದೆ — ವಿನಂತಿಯ ಭಾಗ: `{scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?}` | | GET | `/api/evals` | ಅಂತರ್ನಿರ್ಮಿತ ಮೌಲ್ಯಮಾಪನ ಸೂಟ್ಗಳು + ಇತ್ತೀಚಿನ ರನ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ | | POST | `/api/evals` | ಮೌಲ್ಯಮಾಪನ ರನ್ ಅನ್ನು ಪ್ರಚೋದಿಸುತ್ತದೆ | | POST | `/api/evals/suites` | ಕಸ್ಟಮ್ ಮೌಲ್ಯಮಾಪನ ಸೂಟ್ ಅನ್ನು ರಚಿಸುತ್ತದೆ — ವಿನಂತಿಯ ಭಾಗವನ್ನು `evalSuiteSaveSchema` ಮೂಲಕ ಮೌಲ್ಯೀಕರಿಸಲಾಗುತ್ತದೆ | | GET | `/api/evals/suites/[id]` | ಕಸ್ಟಮ್ ಮೌಲ್ಯಮಾಪನ ಸೂಟ್ ಅನ್ನು ಹಿಂಪಡೆಯುತ್ತದೆ | **ದೃಢೀಕರಣ:** `/api/cloud/auth` ನೇರವಾಗಿ Bearer ಕೀಲಿಯನ್ನು ಮೌಲ್ಯೀಕರಿಸುತ್ತದೆ; ಇತರ `/api/cloud/*`, `/api/evals/*`, ಮತ್ತು `/api/assess` ಮಾರ್ಗಗಳಿಗೆ ನಿರ್ವಹಣಾ ಸೆಷನ್/API ಕೀಲಿ ಅಗತ್ಯವಿದೆ. `/api/assess` POST, ವಿಭೇದಿತ-ಯೂನಿಯನ್ ವ್ಯಾಪ್ತಿ ಸ್ಕೀಮಾದೊಂದಿಗೆ `validateBody` ಅನ್ನು ಬಳಸುತ್ತದೆ. --- ## ACP (Agent Client Protocol) ನಿರ್ವಹಣೆ ಚೈಲ್ಡ್ ಪ್ರೊಸೆಸ್ಗಳಾಗಿ. ಈ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು ACP ಏಜೆಂಟ್ ಪತ್ತೆಹಚ್ಚುವಿಕೆ ಮತ್ತು ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ನೋಂದಣಿಯನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ----------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/acp/agents` | ಇನ್ಸ್ಟಾಲೇಶನ್ ಸ್ಥಿತಿ, ಆವೃತ್ತಿ ಮತ್ತು ಬೈನರಿಯೊಂದಿಗೆ ತಿಳಿದಿರುವ ಎಲ್ಲಾ CLI ಏಜೆಂಟ್ಗಳನ್ನು (ಅಂತರ್ನಿರ್ಮಿತ + ಕಸ್ಟಮ್) ಪಟ್ಟಿ ಮಾಡುತ್ತದೆ | | POST | `/api/acp/agents` | ಕಸ್ಟಮ್ ACP ಏಜೆಂಟ್ ಅನ್ನು ನೋಂದಾಯಿಸುತ್ತದೆ ಅಥವಾ ಕ್ಯಾಶ್ ಅನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡುತ್ತದೆ — ಬಾಡಿ: `{id, name, binary, versionCommand, providerAlias, spawnArgs, protocol}` ಅಥವಾ `{action: "refresh"}` | | DELETE | `/api/acp/agents` | ಕಸ್ಟಮ್ ACP ಏಜೆಂಟ್ ಅನ್ನು ತೆಗೆದುಹಾಕುತ್ತದೆ — ಕ್ವೆರಿ ಪ್ಯಾರಮ್: `?id=` | **ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆ** (`GET /api/acp/agents`): ```json { "agents": [ { "id": "claude", "name": "Claude Code CLI", "binary": "claude", "version": "1.0.45", "installed": true, "protocol": "stdio", "providerAlias": "claude", "isCustom": false }, { "id": "my-custom-cli", "name": "My Custom CLI", "installed": false, "protocol": "stdio", "providerAlias": "my-provider", "isCustom": true } ], "cacheTtlMs": 60000, "cacheAge": 1234 } ``` **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ (ಡ್ಯಾಶ್ಬೋರ್ಡ್ `auth_token` ಕುಕಿ) ಅಥವಾ ನಿರ್ವಹಣಾ ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. ಸಂಪೂರ್ಣ ವಿವರಗಳಿಗಾಗಿ [ACP ಫ್ರೇಮ್ವರ್ಕ್](../frameworks/ACP.md) ನೋಡಿ. --- ## ಅನಾಲಿಟಿಕ್ಸ್ ಮತ್ತು ವೀಕ್ಷಣೀಯತೆ ರೂಟಿಂಗ್, ಕಂಪ್ರೆಷನ್ ಮತ್ತು ಪ್ರೊವೈಡರ್ ವೈವಿಧ್ಯತೆಯನ್ನು ಮೇಲ್ವಿಚಾರಣೆ ಮಾಡಲು ರಿಯಲ್-ಟೈಮ್ ಅನಾಲಿಟಿಕ್ಸ್ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು. ಇವು `/dashboard/analytics/*` ಪುಟಗಳಿಗೆ ಶಕ್ತಿ ನೀಡುತ್ತವೆ. ### ಸ್ವಯಂ-ರೂಟಿಂಗ್ ಅನಾಲಿಟಿಕ್ಸ್ | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ------------------------------------ | ----------------------------------------------------------------------------------------------------- | | GET | `/api/analytics/auto-routing` | ಒಟ್ಟುಗೂಡಿಸಿದ ಸ್ವಯಂ-ರೂಟಿಂಗ್ ಅಂಕಿಅಂಶಗಳು: ಒಟ್ಟು ಕರೆಗಳು, ತಂತ್ರ ವಿತರಣೆ, ಶ್ರೇಣಿ ವಿತರಣೆ, ಪ್ರಮುಖ ಪ್ರೊವೈಡರ್ಗಳು | | GET | `/api/analytics/auto-routing?days=7` | ಸಮಯ-ವಿಂಡೋ ಆಧಾರಿತ ಅಂಕಿಅಂಶಗಳು (ಡೀಫಾಲ್ಟ್ 24h) | **ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆ**: ```json { "window": "24h", "totalCalls": 1234, "strategyBreakdown": { "rules": 800, "cost": 200, "latency": 150, "sla-aware": 50, "lkgp": 34 }, "tierBreakdown": { "ultra": 100, "pro": 500, "standard": 400, "free": 234 }, "topProviders": [ { "provider": "openai", "calls": 500, "avgLatencyMs": 850 }, { "provider": "anthropic", "calls": 300, "avgLatencyMs": 1200 } ] } ``` ### ಕಂಪ್ರೆಷನ್ ಅನಾಲಿಟಿಕ್ಸ್ | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ---------------------------- | --------------------------------------------------------------------------------------- | | GET | `/api/analytics/compression` | ಒಟ್ಟುಗೂಡಿಸಿದ ಕಂಪ್ರೆಷನ್ ಅಂಕಿಅಂಶಗಳು: ಉಳಿಸಿದ ಟೋಕನ್ಗಳು, ಉಳಿತಾಯದ %, ಮೋಡ್ ವಿತರಣೆ, ಎಂಜಿನ್ ಬಳಕೆ | **ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆ**: ```json { "window": "24h", "totalOriginalTokens": 5000000, "totalCompressedTokens": 3500000, "totalSavings": 1500000, "savingsPct": 30.0, "modeBreakdown": { "lite": 400, "standard": 600, "aggressive": 100, "ultra": 50, "rtk": 84 }, "engineBreakdown": { "caveman": 800, "rtk": 434 } } ``` ### ಪ್ರೊವೈಡರ್ ವೈವಿಧ್ಯತೆ ಟ್ರ್ಯಾಕಿಂಗ್ | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | -------------------------- | -------------------------------------------------------------------------------------------------------------------- | | GET | `/api/analytics/diversity` | Shannon entropy ಆಧಾರಿತ ವೈವಿಧ್ಯತೆ ಟ್ರ್ಯಾಕಿಂಗ್: ಪ್ರೊವೈಡರ್ ವ್ಯಾಪ್ತಿಯನ್ನು ಅಳೆಯುವ ಮೂಲಕ ಏಕೈಕ ವೈಫಲ್ಯ ಬಿಂದುಗಳನ್ನು ತಡೆಯುತ್ತದೆ | **ಪ್ರತಿಕ್ರಿಯೆಯ ಉದಾಹರಣೆ**: ```json { "window": "24h", "shannonEntropy": 2.45, "maxEntropy": 3.17, "diversityRatio": 0.77, "providerUsage": { "openai": 0.4, "anthropic": 0.25, "google": 0.2, "kiro": 0.15 }, "warnings": ["OpenAI accounts for 40% of traffic — consider diversifying"] } ``` **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಥವಾ ನಿರ್ವಹಣಾ ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. --- ## ನಿರ್ವಾಹಕ ಕಾರ್ಯಾಚರಣೆಗಳು ಕಾರ್ಯಾಚರಣಾ ನಿರ್ವಹಣೆಗಾಗಿ ನಿರ್ವಾಹಕರಿಗೆ ಮಾತ್ರ ಲಭ್ಯವಿರುವ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳು. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ------------------------ | ------------------------------------------------------------------------------------------------------ | | GET | `/api/admin/concurrency` | ಪ್ರಸ್ತುತ ಸಮಕಾಲೀನತೆ ಮಿತಿಗಳನ್ನು ಓದಿ (ಜಾಗತಿಕ + ಪ್ರತಿ ಪೂರೈಕೆದಾರರಿಗೆ) | | POST | `/api/admin/concurrency` | ಸಮಕಾಲೀನತೆ ಮಿತಿಗಳನ್ನು ನವೀಕರಿಸಿ — ವಿನಂತಿಯ ಭಾಗ: `{global?: number, perProvider?: Record}` | **ದೃಢೀಕರಣ:** ನಿರ್ವಾಹಕ ವ್ಯಾಪ್ತಿಯೊಂದಿಗಿನ ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. --- ## CLI ಪರಿಕರಗಳ ನಿರ್ವಹಣೆ OmniRoute ಜೊತೆಗೆ ಸಂಯೋಜನೆಗೊಳ್ಳುವ CLI ಪರಿಕರಗಳನ್ನು (antigravity, chipotle, commandCode, devin-cli ಇತ್ಯಾದಿ) ನಿರ್ವಹಿಸಿ. ಸಂಪೂರ್ಣ ಪಟ್ಟಿಗಾಗಿ [ಪೂರೈಕೆದಾರರ ಉಲ್ಲೇಖ](./PROVIDER_REFERENCE.md) ನೋಡಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | GET | `/api/cli-tools/all-statuses` | ಎಲ್ಲಾ CLI ಪರಿಕರಗಳ ಸ್ಥಿತಿ (ಸ್ಥಾಪಿಸಲಾಗಿದೆ, ಆವೃತ್ತಿ, ಕೊನೆಯದಾಗಿ ಕಂಡ ಸಮಯ) | | GET | `/api/cli-tools/status` | ಒಂದು CLI ಪರಿಕರದ ವಿವರವಾದ ಸ್ಥಿತಿ (`?tool=` ಕ್ವೆರಿ) | | POST | `/api/cli-tools/apply` | ಪರಿಕರದಿಂದ ರಚಿಸಲಾದ ಕಾನ್ಫಿಗ್ ಅನ್ನು ಬರೆಯಿರಿ (`dryRun` ಪೂರ್ವವೀಕ್ಷಣೆ ನೀಡುತ್ತದೆ; ಕಂಟೇನರ್ನಲ್ಲಿದ್ದಾಗ `422` + `containerEphemeralTarget`; `migration` ಹಳೆಯ Codex YAML ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ) | | GET | `/api/cli-tools/backups` | CLI ಪರಿಕರಗಳ ಕಾನ್ಫಿಗರೇಶನ್ ಬ್ಯಾಕಪ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/api/cli-tools/backups` | ಎಲ್ಲಾ CLI ಪರಿಕರಗಳ ಕಾನ್ಫಿಗರೇಶನ್ಗಳ ಬ್ಯಾಕಪ್ ರಚಿಸಿ | | POST | `/api/cli-tools/backups` | ಮರುಸ್ಥಾಪನೆ: ವಿನಂತಿಯ ಭಾಗದಲ್ಲಿ `{tool, backupId}` ಜೊತೆಗೆ ಇದೇ ಎಂಡ್ಪಾಯಿಂಟ್ ಆ ಬ್ಯಾಕಪ್ ಅನ್ನು ಮರುಸ್ಥಾಪಿಸುತ್ತದೆ | | GET | `/api/cli-tools/antigravity-mitm` | Antigravity MITM ಪ್ರಾಕ್ಸಿಯ ಸ್ಥಿತಿ ("antigravity-mitm" CLI ಪರಿಕರ) | | POST | `/api/cli-tools/antigravity-mitm/alias` | antigravity-mitm ಅಲಿಯಾಸ್ಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. --- ## ಏಜೆಂಟ್ ಕೌಶಲ್ಯಗಳು AI ಏಜೆಂಟ್ ಕೌಶಲ್ಯಗಳನ್ನು (OpenAI ನ ಕಸ್ಟಮ್ GPT ಗಳನ್ನು ಹೋಲುವ, ಆದರೆ ಏಜೆಂಟ್ಗಳಿಗಾಗಿ) ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ---------------------------- | -------------------------------------------------------------------------------------------------- | | GET | `/api/agent-skills` | ಎಲ್ಲಾ ಏಜೆಂಟ್ ಕೌಶಲ್ಯಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಅಂತರ್ನಿರ್ಮಿತ + ಕಸ್ಟಮ್) | | GET | `/api/agent-skills/[id]` | ನಿರ್ದಿಷ್ಟ ಏಜೆಂಟ್ ಕೌಶಲ್ಯವನ್ನು ಪಡೆಯಿರಿ | | POST | `/api/agent-skills` | ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ಕೌಶಲ್ಯವನ್ನು ರಚಿಸಿ — ವಿನಂತಿಯ ಭಾಗ: `{name, description, prompt, model?, temperature?}` | | PUT | `/api/agent-skills/[id]` | ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ಕೌಶಲ್ಯವನ್ನು ನವೀಕರಿಸಿ | | DELETE | `/api/agent-skills/[id]` | ಕಸ್ಟಮ್ ಏಜೆಂಟ್ ಕೌಶಲ್ಯವನ್ನು ಅಳಿಸಿ | | GET | `/api/agent-skills/[id]/raw` | ಕಚ್ಚಾ ಪ್ರಾಂಪ್ಟ್ + ಮೆಟಾಡೇಟಾವನ್ನು ಪಡೆಯಿರಿ (ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ ಇಲ್ಲ) | | POST | `/api/agent-skills/generate` | ಸಹಜ ಭಾಷೆಯ ವಿವರಣೆಯಿಂದ AI ಬಳಸಿ ಹೊಸ ಕೌಶಲ್ಯವನ್ನು ರಚಿಸಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಥವಾ ನಿರ್ವಹಣಾ ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. --- ## ಕ್ಯಾಶ್ ನಿರ್ವಹಣೆ ಸೆಮ್ಯಾಂಟಿಕ್ ಕ್ಯಾಶ್ ಮತ್ತು ರೀಸನಿಂಗ್ ಕ್ಯಾಶ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | GET | `/api/cache` | ಕ್ಯಾಶ್ ಅವಲೋಕನ: ಒಟ್ಟು ನಮೂದುಗಳು, ಹಿಟ್ ದರ, ಡಿಸ್ಕ್ನಲ್ಲಿನ ಗಾತ್ರ | | GET | `/api/cache/entries` | ಕ್ಯಾಶ್ ಮಾಡಿದ ನಮೂದುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಪುಟವಿಂಗಡಣೆಯೊಂದಿಗೆ) | | DELETE | `/api/cache/entries` | ಕ್ಯಾಶ್ ನಮೂದುಗಳನ್ನು ಅಳಿಸಿ (ಕ್ವೆರಿ ಪ್ಯಾರಾಮೀಟರ್ಗಳ ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ) | | GET | `/api/cache/stats` | ವಿವರವಾದ ಕ್ಯಾಶ್ ಅಂಕಿಅಂಶಗಳು (ಪ್ರತಿ ಪೂರೈಕೆದಾರ, ಪ್ರತಿ ಮಾದರಿ) | | GET | `/api/cache/reasoning` | ರೀಸನಿಂಗ್ ಕ್ಯಾಶ್ ಸ್ಥಿತಿ (ರೀಸನಿಂಗ್ ಮರುಚಾಲನೆಗಾಗಿ) | | DELETE | `/api/cache/reasoning` | ರೀಸನಿಂಗ್ ಕ್ಯಾಶ್ ತೆರವುಗೊಳಿಸಿ — ಕ್ವೆರಿ ಪ್ಯಾರಾಮೀಟರ್ಗಳು: `?toolCallId=` (ಒಂದು) ಅಥವಾ `?provider=

` ಅಥವಾ ಯಾವುದೇ ಪ್ಯಾರಾಮೀಟರ್ಗಳಿಲ್ಲ (ಎಲ್ಲವೂ) | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. --- ## ಮೆಮೊರಿ ಸಿಸ್ಟಮ್ ನಿರಂತರ ಮೆಮೊರಿಯನ್ನು (FTS5 + ವೆಕ್ಟರ್ ಎಂಬೆಡಿಂಗ್ಗಳು) ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------ | ------------------------------------------------------------------------------------ | | GET | `/api/memory` | ಮೆಮೊರಿ ನಮೂದುಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ವ್ಯಾಪ್ತಿ, ಪ್ರಕಾರ, ಹುಡುಕಾಟದ ಕ್ವೆರಿ ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ) | | POST | `/api/memory` | ಹೊಸ ಮೆಮೊರಿ ನಮೂದನ್ನು ರಚಿಸಿ — ಬಾಡಿ: `{scope, type, content, metadata?}` | | GET | `/api/memory/[id]` | ನಿರ್ದಿಷ್ಟ ಮೆಮೊರಿ ನಮೂದನ್ನು ಪಡೆಯಿರಿ | | PUT | `/api/memory/[id]` | ಮೆಮೊರಿ ನಮೂದನ್ನು ನವೀಕರಿಸಿ | | DELETE | `/api/memory/[id]` | ಮೆಮೊರಿ ನಮೂದನ್ನು ಅಳಿಸಿ | | GET | `/api/memory?q=` | ಮೆಮೊರಿಯನ್ನು ಹುಡುಕಿ (FTS5 + ವೆಕ್ಟರ್) — ಅಂಕಿಅಂಶಗಳನ್ನು ಅದೇ ಪ್ರತಿಕ್ರಿಯೆಯಲ್ಲಿ ಸೇರಿಸಲಾಗಿದೆ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಥವಾ ನಿರ್ವಹಣಾ-ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. --- ## ವೆಬ್ಹುಕ್ಗಳು ಈವೆಂಟ್ಗಳಿಗಾಗಿ ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಗಳನ್ನು ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------------------- | -------------------------------------------------------------------------- | | GET | `/api/webhooks` | ಎಲ್ಲಾ ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/api/webhooks` | ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಯನ್ನು ರಚಿಸಿ — ಬಾಡಿ: `{url, events[], secret?, active?}` | | GET | `/api/webhooks/[id]` | ನಿರ್ದಿಷ್ಟ ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಯನ್ನು ಪಡೆಯಿರಿ | | PUT | `/api/webhooks/[id]` | ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಯನ್ನು ನವೀಕರಿಸಿ | | DELETE | `/api/webhooks/[id]` | ವೆಬ್ಹುಕ್ ಚಂದಾದಾರಿಕೆಯನ್ನು ಅಳಿಸಿ | | GET | `/api/webhooks/[id]/deliveries` | ವೆಬ್ಹುಕ್ನ ವಿತರಣಾ ಇತಿಹಾಸವನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಯಶಸ್ಸು/ವೈಫಲ್ಯ ಲಾಗ್) | | POST | `/api/webhooks/[id]/test` | ವೆಬ್ಹುಕ್ಗೆ ಪರೀಕ್ಷಾ ಈವೆಂಟ್ ಕಳುಹಿಸಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. ಈವೆಂಟ್ ಪ್ರಕಾರಗಳ ಸಂಪೂರ್ಣ ಪಟ್ಟಿಗಾಗಿ [ವೆಬ್ಹುಕ್ಗಳ ಫ್ರೇಮ್ವರ್ಕ್](../frameworks/WEBHOOKS.md) ನೋಡಿ. --- ## ಸ್ಕಿಲ್ಸ್ ಫ್ರೇಮ್ವರ್ಕ್ ಸ್ಕಿಲ್ಸ್ಗಳನ್ನು (ಏಜೆಂಟಿಕ್ ವಿಸ್ತರಣೆಗಳ ಫ್ರೇಮ್ವರ್ಕ್) ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ------------------------ | ------------------------------------------------------------------------------------------------------ | | GET | `/api/skills` | ಸ್ಥಾಪಿಸಲಾದ ಎಲ್ಲಾ ಸ್ಕಿಲ್ಸ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಅಂತರ್ನಿರ್ಮಿತ + ಕಸ್ಟಮ್) | | POST | `/api/skills/install` | ಸ್ಥಳೀಯ ಪಥ ಅಥವಾ URL ನಿಂದ ಸ್ಕಿಲ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ | | DELETE | `/api/skills/[id]` | ಸ್ಕಿಲ್ ಅನ್ನು ಅಸ್ಥಾಪಿಸಿ | | PUT | `/api/skills/[id]` | ಸ್ಕಿಲ್ ಅನ್ನು ಸಕ್ರಿಯ ಅಥವಾ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ — ಬಾಡಿ: `{enabled?: boolean, mode?: "on" \| "off" \| "auto"}` | | POST | `/api/skills/executions` | ಸ್ಕಿಲ್ ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಿ — ಬಾಡಿ: `{skillName, apiKeyId, input?, sessionId?}` | | GET | `/api/skills/executions` | ಎಲ್ಲಾ ಸ್ಕಿಲ್ಸ್ಗಳ ಕಾರ್ಯಗತಗೊಳಿಸುವಿಕೆ ಇತಿಹಾಸವನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (`?apiKeyId=` ಮೂಲಕ ಫಿಲ್ಟರ್ ಮಾಡಿ) | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಥವಾ ನಿರ್ವಹಣಾ ವ್ಯಾಪ್ತಿಯ API ಕೀ ಅಗತ್ಯವಿದೆ. ಸಂಪೂರ್ಣ ವಿವರಗಳಿಗಾಗಿ [ಸ್ಕಿಲ್ಸ್ ಫ್ರೇಮ್ವರ್ಕ್](../frameworks/SKILLS.md) ನೋಡಿ. --- ## ಪ್ಲಗಿನ್ಗಳು OmniRoute ಪ್ಲಗಿನ್ಗಳನ್ನು (ಮೂರನೇ-ಪಕ್ಷದ ವಿಸ್ತರಣೆಗಳು) ನಿರ್ವಹಿಸಿ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ------ | ---------------------------------- | ----------------------------------------- | | GET | `/api/plugins` | ಸ್ಥಾಪಿಸಲಾದ ಪ್ಲಗಿನ್ಗಳನ್ನು ಪಟ್ಟಿ ಮಾಡಿ | | POST | `/api/plugins/marketplace/install` | ಮಾರ್ಕೆಟ್ಪ್ಲೇಸ್ನಿಂದ ಪ್ಲಗಿನ್ ಅನ್ನು ಸ್ಥಾಪಿಸಿ | | DELETE | `/api/plugins/[name]` | ಪ್ಲಗಿನ್ ಅನ್ನು ಅಸ್ಥಾಪಿಸಿ | | POST | `/api/plugins/[name]/activate` | ಪ್ಲಗಿನ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ | | POST | `/api/plugins/[name]/deactivate` | ಪ್ಲಗಿನ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ | | GET | `/api/plugins/[name]/config` | ಪ್ಲಗಿನ್ ಕಾನ್ಫಿಗರೇಶನ್ ಪಡೆಯಿರಿ | | PUT | `/api/plugins/[name]/config` | ಪ್ಲಗಿನ್ ಕಾನ್ಫಿಗರೇಶನ್ ನವೀಕರಿಸಿ | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. ಸಂಪೂರ್ಣ ವಿವರಗಳಿಗಾಗಿ [ಪ್ಲಗಿನ್ಗಳ ಫ್ರೇಮ್ವರ್ಕ್](../frameworks/PLUGIN_SDK.md) ನೋಡಿ. --- ## ಶ್ಯಾಡೋ ರೂಟಿಂಗ್ ಪೂರೈಕೆದಾರರ ಶ್ಯಾಡೋ / A-B ಹೋಲಿಕೆಯು **ಸ್ವತಂತ್ರ REST ಸರ್ಫೇಸ್ ಅಲ್ಲ** — ಅದನ್ನು ಕಾಂಬೊ ರೂಟಿಂಗ್ ಮೂಲಕ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗುತ್ತದೆ ([ಆಟೊ-ಕಾಂಬೊ](../routing/AUTO-COMBO.md) ನೋಡಿ). ಪ್ರತಿ ಕಾಂಬೊಗೆ ಸಂಬಂಧಿಸಿದ ಹೋಲಿಕೆ ಮೆಟ್ರಿಕ್ಗಳನ್ನು `GET /api/combos/metrics` ಮೂಲಕ ಒದಗಿಸಲಾಗುತ್ತದೆ. --- ## ಗಾರ್ಡ್ರೇಲ್ಗಳು ರನ್ಟೈಮ್ ಗಾರ್ಡ್ರೇಲ್ಗಳನ್ನು (PII ಪತ್ತೆ, ಪ್ರಾಂಪ್ಟ್ ಇಂಜೆಕ್ಷನ್ ಪತ್ತೆ, ವಿಷನ್ ಬ್ರಿಡ್ಜಿಂಗ್) ಪರಿಶೀಲಿಸಿ. ಗಾರ್ಡ್ರೇಲ್ಗಳು ಪ್ರತಿ ವಿನಂತಿಯಲ್ಲೂ ರನ್ ಆಗುತ್ತವೆ; ಪ್ರತಿ ಕರೆಗೆ ಹೊರಗುಳಿಯಲು `x-omniroute-disabled-guardrails` ವಿನಂತಿ ಹೆಡರ್ ಅನ್ನು ಬಳಸಿ — ಶಾಶ್ವತವಾಗಿ ಸಕ್ರಿಯ/ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುವ ಸರ್ಫೇಸ್ ಇಲ್ಲ. | ವಿಧಾನ | ಪಥ | ವಿವರಣೆ | | ----- | ---------------------- | ------------------------------------------------------------------------------------------- | | GET | `/api/guardrails` | ನೋಂದಾಯಿತ ಗಾರ್ಡ್ರೇಲ್ಗಳು ಮತ್ತು ಅವುಗಳ ಸ್ಥಿತಿಯನ್ನು ಪಟ್ಟಿ ಮಾಡಿ (ಹೆಸರು / ಸಕ್ರಿಯತೆ / ಆದ್ಯತೆ) | | POST | `/api/guardrails/test` | ಮಾದರಿ ಇನ್ಪುಟ್ ಮೇಲೆ ಕರೆ-ಪೂರ್ವ ಪೈಪ್ಲೈನ್ನ ಡ್ರೈ-ರನ್ ಮಾಡಿ — ಬಾಡಿ: `{input, disabledGuardrails?}` | **ದೃಢೀಕರಣ:** ನಿರ್ವಹಣಾ ಸೆಷನ್ ಅಗತ್ಯವಿದೆ. ಸಂಪೂರ್ಣ ವಿವರಗಳಿಗಾಗಿ [ಭದ್ರತೆ > ಗಾರ್ಡ್ರೇಲ್ಗಳು](../security/GUARDRAILS.md) ನೋಡಿ. --- --- ## ದೃಢೀಕರಣ ನಾಲ್ಕು ರುಜುವಾತು ವರ್ಗಗಳು (ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಸೆಷನ್, ಸ್ಥಳೀಯ CLI ಟೋಕನ್, `oma_live_…` ಪ್ರವೇಶ ಟೋಕನ್, ನಿರ್ವಹಣೆ-ವ್ಯಾಪ್ತಿಯ API ಕೀ) ಮತ್ತು ಅವು ಇನ್ಫರೆನ್ಸ್ ಕೀಗಳಿಂದ ಹೇಗೆ ಭಿನ್ನವಾಗಿವೆ ಎಂಬುದಕ್ಕಾಗಿ [ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ](../guides/MANAGEMENT-AUTH.md) ನೋಡಿ. - ಡ್ಯಾಶ್ಬೋರ್ಡ್ ಮಾರ್ಗಗಳು (`/dashboard/*`) `auth_token` ಕುಕಿಯನ್ನು ಬಳಸುತ್ತವೆ - ಲಾಗಿನ್ ಉಳಿಸಿದ ಪಾಸ್ವರ್ಡ್ ಹ್ಯಾಶ್ ಅನ್ನು ಬಳಸುತ್ತದೆ; ಅದು ಲಭ್ಯವಿಲ್ಲದಿದ್ದರೆ `INITIAL_PASSWORD` ಅನ್ನು ಬಳಸುತ್ತದೆ - `/api/settings/require-login` ಮೂಲಕ `requireLogin` ಅನ್ನು ಟಾಗಲ್ ಮಾಡಬಹುದು - `REQUIRE_API_KEY=true` ಆಗಿರುವಾಗ `/v1/*` ಮಾರ್ಗಗಳಿಗೆ ಐಚ್ಛಿಕವಾಗಿ Bearer API ಕೀ ಅಗತ್ಯವಿರುತ್ತದೆ - ಈ ಉಲ್ಲೇಖದಲ್ಲಿನ "ನಿರ್ವಹಣಾ ಟೋಕನ್" / "ನಿರ್ವಹಣೆ-ವ್ಯಾಪ್ತಿಯ API ಕೀ" ಎಂದರೆ ಆ ಮಾರ್ಗದರ್ಶಿಯಲ್ಲಿರುವ ವರ್ಗಗಳಲ್ಲಿ ಒಂದು — ವ್ಯಾಖ್ಯಾನಿಸದ ಹೆಚ್ಚುವರಿ ರಹಸ್ಯದ ಪ್ರಕಾರವಲ್ಲ > **ಹೊಂದಾಣಿಕೆಯನ್ನು ಮುರಿಯುವ ಬದಲಾವಣೆ (v3.8.0)** — `/api/v1/agents/tasks/*` ಮತ್ತು ಕೂಲ್ಡೌನ್ ನಿರ್ವಹಣಾ ಎಂಡ್ಪಾಯಿಂಟ್ಗಳಿಗೆ ಈಗ **ನಿರ್ವಹಣಾ ದೃಢೀಕರಣ** (ಡ್ಯಾಶ್ಬೋರ್ಡ್ `auth_token` ಕುಕಿ ಅಥವಾ ನಿರ್ವಹಣೆ-ವ್ಯಾಪ್ತಿಯ API ಕೀ) ಅಗತ್ಯವಿದೆ. ಈ ಮಾರ್ಗಗಳನ್ನು ಹಿಂದೆ ದೃಢೀಕರಣವಿಲ್ಲದೆ ಕರೆ ಮಾಡುತ್ತಿದ್ದ ಕ್ಲೈಂಟ್ಗಳು `401 Unauthorized` ಅನ್ನು ಸ್ವೀಕರಿಸುತ್ತವೆ. `588a0333` ಕಮಿಟ್ ನೋಡಿ (`fix(auth): ಏಜೆಂಟ್ ಮತ್ತು ಕೂಲ್ಡೌನ್ APIಗಳಿಗೆ ನಿರ್ವಹಣಾ ದೃಢೀಕರಣವನ್ನು ಕಡ್ಡಾಯಗೊಳಿಸಿ`).