Skip to content

Latest commit

 

History

History
1733 lines (1298 loc) · 131 KB

API_REFERENCE.md

File metadata and controls

1733 lines (1298 loc) · 131 KB

API Reference (Oʻzbekcha)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW


🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇧🇦 bs · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW

OmniRoute API uchun asosiy maʼlumotnoma. U ommaviy /v1 interfeysini va eng ko‘p ishlatiladigan boshqaruv endpointlarini qamrab oladi; mashina o‘qiy oladigan docs/openapi.yaml fayli va src/app/api/ ostidagi marshrutlar daraxti to‘liq manbalardir.


Mundarija


Chat yakunlashlari

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
}

Maxsus sarlavhalar

Sarlavha Yoʻnalish Tavsif
X-OmniRoute-No-Cache Soʻrov Keshni chetlab oʻtish uchun true qilib belgilang
x-omniroute-no-memory Soʻrov Ushbu soʻrov uchun xotira va koʻnikmalar kiritilishini oʻtkazib yuborish maqsadida true qilib belgilang (no-cache xatti-harakatini takrorlaydi; har bir chaqiruvdagi token/xarajat yukini kamaytiradi)
X-OmniRoute-Progress Soʻrov Jarayon hodisalarini olish uchun true qilib belgilang
X-Session-Id Soʻrov Tashqi sessiya yaqinligi uchun biriktirilgan sessiya kaliti
x_session_id Soʻrov Pastki chiziqli variant ham qabul qilinadi (toʻgʻridan-toʻgʻri HTTP)
X-OmniRoute-Session-Id Soʻrov Chaqiruvchi taqdim etgan sessiya/suhbat tegi (xotiraga ham uzatiladi). Mavjud boʻlganda, har bir sessiya boʻyicha xarajatlarni aniqlash uchun call_logs.session_tag maydoniga aynan oʻz holicha saqlanadi (#8249) — mavjud boʻlmaganda hech qachon sunʼiy yaratilmaydi
Idempotency-Key Soʻrov Takrorlarni bartaraf etish kaliti (5 soniyalik oyna)
X-Request-Id Soʻrov Muqobil takrorlarni bartaraf etish kaliti
X-OmniRoute-Cache Javob HIT yoki MISS (oqimsiz rejimda)
X-OmniRoute-Idempotent Javob Takror bartaraf etilgan boʻlsa, true
X-OmniRoute-Progress Javob Jarayon kuzatuvi yoqilgan boʻlsa, enabled
X-OmniRoute-Session-Id Javob OmniRoute tomonidan foydalanilgan amaldagi sessiya IDsi
X-OmniRoute-Request-Id Javob Soʻrovlarni bogʻlash IDsi (maʼlum boʻlganda)
X-OmniRoute-Version Javob OmniRoute yigʻilmasi versiyasi (har doim mavjud)
X-OmniRoute-Cost-Saved Javob HIT holatida kesh tufayli tejalgan USD miqdori (faqat keshdan topilgan holatlarda)
X-OmniRoute-Decision Javob Marshrutlash izi: strategy=<name>; provider=<alias>; latency_ms=<n> (<name> — kombinatsiya strategiyasi yoki kombinatsiyasiz soʻrov uchun single) — yakunlash javoblarida har doim mavjud

Nginx eslatmasi: agar pastki chiziqli sarlavhalarga (masalan, x_session_id) tayansangiz, underscores_in_headers on; sozlamasini yoqing.

Xarajat telemetriyasi sarlavhalari: oqimsiz muvaffaqiyatli javoblarda X-OmniRoute-* xarajat telemetriyasi toʻplami ham mavjud — X-OmniRoute-Response-Cost (USD, verguldan keyin qatʼiy 10 ta raqam; bepul/narxi belgilanmagan holatlar uchun 0.0000000000), X-OmniRoute-Tokens-In / X-OmniRoute-Tokens-Out, X-OmniRoute-Model, X-OmniRoute-Provider, X-OmniRoute-Latency-Ms, X-OmniRoute-Cache-Hit va X-OmniRoute-Fallback-Attempts (faqat > 0 boʻlganda), shuningdek, X-OmniRoute-Request-Id va X-OmniRoute-Version. Bular chat yakunlashlari, /v1/responses, /v1/messages va media endpointlari — /v1/embeddings, /v1/images/generations, /v1/audio/speech, /v1/audio/transcriptions, /v1/rerank, /v1/videos/generations, /v1/music/generations va /v1/moderations (xarajati har doim 0) tomonidan chiqariladi. Narxlash mavjud boʻlsa, media xarajati har bir modallik boʻyicha (har bir rasm, soniya, belgi yoki qidiruv birligi uchun) hisoblanadi, aks holda 0 boʻladi (xatoda davom etish).

Keshga tegish xarajati semantikasi: semantik keshga TEGISH yuz berganda (X-OmniRoute-Cache-Hit: true) yuqori oqimga hech qanday chaqiruv amalga oshirilmaydi, shuning uchun X-OmniRoute-Response-Cost qiymati 0.0000000000 boʻladi (keshdagi natijani taqdim etishning qoʻshimcha xarajati). Dastlabki/yuzaga kelishi mumkin boʻlgan xarajat X-OmniRoute-Cost-Saved orqali alohida koʻrsatiladi. Hisob-kitob isteʼmolchilari X-OmniRoute-Response-Cost qiymatlarini jamlashi kerak (keshga tegishlar hech qanday xarajat qilmaydi); kesh tahlillari esa X-OmniRoute-Cost-Saved qiymatlarini umumlashtirishi mumkin.

Eksklyuziv boshqariladigan sessiya ijaralari

Eksklyuziv boshqariladigan sessiya ijarasi ixtiyoriy, mijozdan mustaqil marshrutlash shartnomasidir: bitta faol egasi bitta mos OmniRoute ulanishiga ega boʻladi. U modelni ijaraga olmaydi, OAuth talab qilmaydi, maʼlum bir mijozni aniqlamaydi yoki maʼlum bir provayderni talab qilmaydi.

Autentifikatsiya qiluvchi API kaliti lease:exclusive doirasiga va aniq boʻsh boʻlmagan allowedConnections roʻyxatiga ega boʻlishi kerak. Maʼlumotlar bazasini oʻzgartirish chegarasi kalit yaratish va qisman yangilashda ikkala maydonni birgalikda qoʻllaydi.

POST /api/v1/session-leases
Authorization: Bearer <managed-api-key>
Content-Type: application/json
X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>

{"action":"acquire","model":"glm/glm-4.6"}

Muvaffaqiyatli olish, yangilash va chiqarish javoblari vaqt tamgʻalarini, stateni va aniq musbat generationni koʻrsatadi, ammo hech qachon tanlangan ulanish yoki hisobga olish maʼlumotlarini koʻrsatmaydi. Yangilash va chiqarish JSON tanasida generationni taqdim etadi:

{ "action": "renew", "generation": 1 }
{ "action": "release", "generation": 1, "reason": "OWNER_EXIT" }

Faol ijara egasi joriy bogʻlanishi uchun maxfiylikni saqlovchi koʻrsatish metamaʼlumotlarini aniq soʻrashi mumkin:

{ "action": "status", "generation": 1 }
{
  "state": "ACTIVE",
  "generation": 1,
  "acquiredAt": "2026-08-28T12:00:00.000Z",
  "renewedAt": "2026-08-28T12:00:30.000Z",
  "expiresAt": "2026-08-28T12:02:30.000Z",
  "connection": {
    "displayName": "Primary Codex",
    "provider": "codex"
  }
}

Ushbu ixtiyoriy status harakati shaffof egasi, autentifikatsiya qilingan boshqariladigan API kaliti va bitta maʼlumotlar bazasi tranzaksiyasidagi aniq faol generation bilan himoyalangan. displayName faqat qisqartirilgan konfiguratsiya qilingan ulanish nomi; xavfsiz konfiguratsiya qilingan nom mavjud boʻlmaganda u null boʻladi. OmniRoute hech qachon elektron pochta yoki yaratilgan hisob identifikatorini almashtirmaydi. Provayder qiymati sezgir boʻlmagan koʻrsatish yorligʻi boʻlib, hech qachon yaratilgan mos keluvchi provayder identifikatori emas. Hisobga olish maʼlumotlari, tokenlar, cookie-fayllar, xom ulanish yoki API kalit identifikatorlari, egalik xeshlari, himoya sirlari va ichki marshrutlash maʼlumotlari chiqarib tashlanadi.

Notoʻgʻri kalit, notoʻgʻri egalik, eskirgan generation, yoʻqolgan, muddati oʻtgan, chiqarilgan va bekor qilingan qidiruvlarning barchasi ulanish metamaʼlumotlarisiz bir xil 409 LEASE_FENCE_STALE xatosini qaytaradi. Imkoniyatni kutish javobini olgan mijozda tekshirish uchun faol bogʻlanish mavjud emas. Marshrutlash faol ijarani oʻzgartirganda, bir xil generation haqiqiy boʻlib qoladi va status atomik tarzda yangi bogʻlanishni qaytaradi, hech qachon eskisini emas. Mavjud mijozlar oʻzgarishsiz qoladi, chunki olish, yangilash, chiqarish va kutish javoblari oʻzlarining oldingi shakllarini saqlab qoladi.

Ushbu server shartnomasi standart OpenAI Codex /statusni oʻzgartirmaydi. Standart Codex hozirda oʻzining model provayderini va oʻrnatilgan autentifikatsiya/hisob holatini xabar qiladi, ammo ixtiyoriy maxsus provayder hisob metamaʼlumotlarini koʻrsatmaydi; keyingi mijoz integratsiyasi ushbu harakatni chaqirishi va connection.displayNameni qanday koʻrsatishni hal qilishi kerak.

Har bir boshqariladigan xulosa soʻrovi keyin ikkala boshqaruv sarlavhasini taqdim etadi:

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

Aniq egasi, generation, faol ulanish va autentifikatsiya qilingan API kaliti har bir qoʻllab-quvvatlanadigan yuqori oqim urinishidan oldin darhol himoyalanadi. Egasi va generationni boshqa kalit bilan qayta ijro etish, hatto bu kalit bir xil ulanishga ruxsat bersa ham, muvaffaqiyatsiz tugaydi. Xom egalar saqlanmaydi, qayd etilmaydi, soʻrov snapshotida saqlanmaydi yoki yuqori oqimga yuborilmaydi.

Vaqtinchalik tortishuv HTTP 429ni Retry-After bilan va quyidagilarni qaytaradi:

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

Ushbu javob faqat oddiy mos keluvchi toʻplam boʻsh emasligini va har bir boʻsh nomzod chet el faol ijarasi tomonidan ushlab turilganligini anglatadi. Qoʻllab-quvvatlanmaydigan modellar/provayderlar, siyosat mos kelmasligi, sovutish, kvota, sogʻliq va boshqa oddiy moslik xatolari oʻzlarining mavjud OmniRoute javoblarini saqlab qoladi.

x-omniroute-compression

Siqish rejasini har bir soʻrov boʻyicha bekor qilish. Eng yuqori ustuvorlik — marshrutlash-kombinatsiyasini bekor qilish, faol profil, avtomatik trigger va panelning Standartini bekor qiladi. Qiymatlar:

Qiymat Effekt
off Ushbu soʻrov uchun siqish yoʻq.
default Panel tomonidan olingan Standart profil (faol profilni eʼtiborsiz qoldiradi). Yoʻqotishli dvigatellar oʻchirilgan holda qoldiriladi.
safe Faqat takrorlash va boʻsh joyni yigʻish.
allow-lossy Ushbu soʻrov uchun operator rejasini saqlab qolish, shu jumladan xulosalar va uslubni qayta yozish.
engine:<id> Yoqilganda bitta dvigatel, masalan, engine:rtk. Ushbu dvigatel uchun har bir soʻrov boʻyicha ixtiyoriy qoʻshilish.
<combo> Nomlangan kombinatsiya, avval nomi boʻyicha (katta-kichik harflarga sezgir emas), keyin identifikatori boʻyicha mos keladi.

Eslatmalar:

  • Nomaʼlum qiymatlar eʼtiborsiz qoldiriladi (soʻrov hech qachon rad etilmaydi); yechim oddiy operator ustuvorligiga tushadi.
  • Agar bir nechta kombinatsiyalar bir xil nomga ega boʻlsa, aniq moslik uchun kombinatsiya idsini kiriting.
  • Nomi off yoki default boʻlgan kombinatsiya nomi boʻyicha tanlanishi mumkin emas (bu kalit soʻzlar birinchi navbatda talqin qilinadi); bunday kombinatsiyaga uning identifikatori boʻyicha murojaat qiling.
  • Asosiy siqish tugmasi qattiq darvoza: siqish global ravishda oʻchirilgan boʻlsa, bu sarlavha uni yoqa olmaydi.

Qoʻllanilgan reja javob sarlavhasida aks ettiriladi:

X-OmniRoute-Compression: <mode>; source=<source>

bu yerda <source> request-header, routing-override, active-profile, auto-trigger, default yoki off dan biri.


Embeddinglar

POST /v1/embeddings
Authorization: Bearer your-api-key
Content-Type: application/json

{
  "model": "nebius/Qwen/Qwen3-Embedding-8B",
  "input": "The food was delicious"
}

Mavjud provayderlar: Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, OpenRouter, Jina AI.

Katalog identifikatorlari provider/model formatida (misol: jina-ai/jina-embeddings-v5-omni-small). Roʻyxatga olish reyestrida mavjud boʻlgan prefikssiz Jina model identifikatorlari (masalan, jina-embeddings-v5-text-small, jina-reranker-v3.5) ham aniqlanadi. Jina embed/rerank/classify/segment avval boshqaruv panelidagi jina-ai hisob maʼlumotlaridan foydalanadi; JINA_AI_API_KEY faqat boshqaruv paneli kaliti mavjud boʻlmaganda zaxira variant hisoblanadi. jina-reader kartasi faqat Reader / r.jina.ai uchun (POST /v1/web/fetch) moʻljallangan va hech qachon embedding yoki qayta tartiblash xizmatini koʻrsatmaydi.

Multimodal qoʻllab-quvvatlashni eʼlon qilgan reyestr modellari provayderga bogʻliq boʻlmagan 32 tagacha tuzilmaviy elementni ham qabul qiladi. Media element turlari: text, image, audio, video va document. Ularning media source maydoni {"type":"url","url":"https://..."} yoki {"type":"base64","data":"...","media_type":"..."} koʻrinishida boʻladi.

Jina v5 Omni (jina-ai/jina-embeddings-v5-omni-small, jina-ai/jina-embeddings-v5-omni-nano va jina-ai/jina-embeddings-v5-omni → omni-small oilaviy taxallusi) Jinaʼning mahalliy EmbeddingsV5Request hujjatlarini ham qabul qiladi va ularni https://api.jina.ai/v1/embeddings manziliga oʻzgartirmasdan uzatadi:

{
  "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,..." }]
    }
  ]
}

Mahalliy { image | audio | video | pdf } qiymatlari ochiq HTTPS URL, data: URI yoki xom base64 boʻlishi mumkin. OmniRoute bu obyektlarni satrga aylantirmaydi yoki mahalliy tasvir URL manzillarini yuklab olmaydi — ochiq mediani Jina oʻzi oladi. Qoʻshimcha Jina maydonlari (task, normalized, truncate, embedding_type) uzatiladi. Faqat matn bilan ishlaydigan Jina SKUʼlari matn boʻlmagan hujjatlarni hamon rad etadi.

Xavfsizlik va uzatish cheklovlari:

  • Masofaviy media URL manzillari ochiq HTTPS boʻlishi shart. Kanonik {type,source:url} elementlari server tomonida yuklab olinadi (yoʻnaltirishlarni qayta tekshirish, vaqt chegarasi, hajm cheklovlari, ochiq DNS, ulanishni mahkamlash) va provayder chaqiruvidan oldin ichki maʼlumot sifatida joylashtiriladi. Jinaʼga xos {image:"https://..."} elementlari xuddi shu ochiq HTTPS tekshiruvidan soʻng oʻzgartirmasdan uzatiladi; URL manzilini Jina yuklab oladi.
  • Ichki base64 media hajmi har bir element uchun dekodlanganda 8 MiB va butun soʻrov boʻyicha dekodlanganda 16 MiB bilan cheklangan.

Provayder uchun tarjima (kanonik elementlar hech qachon oʻzgartirmasdan uzatilmaydi):

  • Jina multimodal modellari: har bir yuqori darajadagi element ichki media uchun data URIʼlardan foydalangan holda modal kalitli bitta obyektga (text / image / audio / video / pdf) aylanadi; har bir yuqori darajadagi element uchun bitta vektor.
  • Gemini Embedding 2 oilasi: yuqori darajadagi bitta massiv content.parts (text yoki inline_data) bilan yagona mahalliy models/{model}:embedContent soʻroviga aylanadi.
  • Aniq modallik metamaʼlumotlarisiz nomaʼlum/dinamik modellar tuzilmaviy kiritishni HTTP 400 bilan rad etadi.
{
  "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"
}

Qoʻllab-quvvatlanmaydigan model/modallik kombinatsiyalari elementni majburan oʻzgartirish oʻrniga HTTP 400 qaytaradi. Eski satr/token soʻrovlaridagi kiritishga aloqador boʻlmagan kengaytma maydonlari oʻzgartirmasdan uzatilishda davom etadi.

# Barcha embedding modellarini roʻyxatlash
GET /v1/embeddings

Tasvir yaratish

POST /v1/images/generations
Authorization: Bearer your-api-key
Content-Type: application/json

{
  "model": "openai/gpt-image-2",
  "prompt": "Togʻlar uzra goʻzal quyosh botishi",
  "size": "1024x1024"
}

Mavjud provayderlar: OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, OpenRouter, SD WebUI (lokal), ComfyUI (lokal).

# Barcha tasvir modellarini roʻyxatlash
GET /v1/images/generations

Hujjat OCR'i

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 OCR provayderini provider/model prefiksi orqali tanlaydi; faqat model identifikatori (masalan, mistral-ocr-latest) uning roʻyxatdan oʻtgan provayderiga moslashtiriladi, model koʻrsatilmasa esa sukut boʻyicha Mistral (mistral-ocr-latest) ishlatiladi. Roʻyxatdan oʻtgan provayderlar (open-sse/config/ocrRegistry.ts):

Provayder identifikatori Model identifikatori model qiymati Izohlar
mistral mistral-ocr-latest mistral/mistral-ocr-latest (yoki faqat mistral-ocr-latest) Sinxron — javob yagona yuqori oqim chaqiruvidan bevosita qaytariladi.
azure-document-intelligence prebuilt-read azure-document-intelligence/prebuilt-read Asinxron yuqori oqim (analyze + soʻrovnoma) — quyiga qarang.
vertex-deepseek-ocr deepseek-ocr-maas vertex-deepseek-ocr/deepseek-ocr-maas Sinxron, Vertex AI'ning openapi/chat/completions hamkor soʻnggi nuqtasi orqali — autentifikatsiya/URL uchun quyiga qarang.

Har uchala provayder ham bir xil Mistral shaklidagi tanada javob beradi:

{
  "pages": [{ "index": 0, "markdown": "# Ajratib olingan matn..." }],
  "model": "mistral-ocr-latest",
  "usage_info": { "pages_processed": 1 }
}

Azure Document Intelligence soʻrovnoma oqimi

Azure Document Intelligence'ning analyze API'si asinxron: dastlabki soʻrov tana oʻrniga Operation-Location sarlavhasini qaytaradi va natijani soʻrovnoma orqali tekshirish kerak. Ishlov beruvchi (open-sse/handlers/ocr.ts) ushbu URL'ni har soniyada, koʻpi bilan 30 marta tekshiradi, ok boʻlmagan soʻrovnoma javobi yoki "failed" holatida darhol xatolik bilan yakunlanadi (tekshirishda davom etmaydi) va urinishlar limiti tugagach, operatsiya hali ham bajarilayotgan boʻlsa, 504 qaytaradi. Yakuniy Azure javobi chaqiruvchiga qaytarilishidan oldin Mistral ishlatadigan xuddi shu pages/markdown shakliga normallashtiriladi, shu sababli mijoz kodi provayder uchun alohida holatni koʻrib chiqishi shart emas.

Vertex AI DeepSeek OCR autentifikatsiyasi va soʻnggi nuqtani aniqlash

vertex-deepseek-ocr OmniRoute chat/tasvir trafigi uchun allaqachon qoʻllab-quvvatlaydigan ayni Vertex AI autentifikatsiyasidan qayta foydalanadi (open-sse/executors/vertex.ts): ulanishning API kaliti Service Account JSON hisob maʼlumotlari (JWT-bearer oqimi orqali qisqa muddatli OAuth kirish tokeniga almashtiriladi) yoki oʻz holicha ishlatiladigan, avvaldan yaratilgan OAuth kirish tokeni boʻlishi mumkin. Yuqori oqimdagi soʻnggi nuqta URL'i ulanish loyihasi va hududi asosida yaratiladigan Vertex'ning umumiy openapi/chat/completions hamkor soʻnggi nuqtasidir — aniq koʻrsatilgan providerSpecificData.project/providerSpecificData.region har doim ustunlikka ega; aks holda loyiha Service Account JSON'ining project_id qiymatidan olinadi va hudud sukut boʻyicha us-central1 boʻladi. Har ikkala aniqlash jarayoni ham open-sse/handlers/ocr.ts ichida (resolveVertexOcrAccessToken, resolveVertexOcrBaseUrl) bajariladi va handleOcr'ga yuborilishidan oldin src/app/api/v1/ocr/route.ts tomonidan ishlatiladi.


Modellar roʻyxati

GET /v1/models
Authorization: Bearer your-api-key

→ Barcha chat, embedding va tasvir modellari hamda kombinatsiyalarini OpenAI formatida qaytaradi

Model identifikatori prefikslari (?prefix=)

Aksariyat modellar provayder prefiksi ostida taqdim etiladi. Qaysi prefiks olinishi MODELS_CATALOG_PREFIX_MODE funksional bayrogʻi orqali boshqariladi va soʻrov parametri yordamida har bir soʻrov uchun alohida qayta belgilanishi mumkin — bu server miqyosidagi sozlamani boshqalar uchun oʻzgartirmasdan toza roʻyxat olishni istaydigan mijoz uchun foydalidir:

GET /v1/models?prefix=alias        # har bir model uchun bitta id — qisqa taxallus prefiksi
GET /v1/models?prefix=dual         # ikkala shakl (server standarti)
GET /v1/models?prefix=canonical    # faqat toʻliq provayder-id prefiksi
Rejim Chiqaradi Izohlar
dual cc/claude-sonnet-4-6 va claude/claude-sonnet-4-6 Standart. Har ikkala id ham bir xil modelga yoʻnaltiriladi; shakllardan birini kod ichida qatʼiy belgilagan mijoz konfiguratsiyalari ishlashda davom etishi uchun saqlangan. Katalog hajmini taxminan ikki baravar oshiradi.
alias cc/claude-sonnet-4-6 Har bir model uchun bitta yozuv. Alohida taxallusi boʻlmagan provayderlar ham oʻz yozuvini chiqaradi, shuning uchun hech narsa yoʻqolmaydi.
canonical claude/claude-sonnet-4-6 Har bir model uchun toʻliq provayder-id prefiksi ostida bitta yozuv. Alohida taxallusi boʻlmagan provayderlar (masalan, antigravity/…, agy/…) ham bu yerda yagona id sini chiqaradi, shuning uchun hech narsa yoʻqolmaydi.

dual rejimidagi nusxani soʻrov parametrisiz ham aniqlash mumkin: unda asosiy id ga ishora qiluvchi parent maydoni mavjud.

Model tanlagichini koʻrsatadigan mijozlar ?prefix=alias parametrini soʻrashi kerak — OmniCopilot VS Code kengaytmasi aynan shunday qiladi.

Fikrlashsiz model variantlari

Fikrlash imkoniyatiga ega Claude modellari uchun /v1/models, shuningdek, id si claude-3-omniroute-no-thinking/ prefiksi bilan boshlanadigan fikrlashsiz variantni ham taqdim etadi:

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

Ushbu id ni tanlash (masalan, doimo thinking blokini biriktiradigan Claude Code konfiguratsiyasida) mulohaza yuritish oʻchirilgan holda haqiqiy <provider>/<model> modeliga qayta yoʻnaltiriladi — /v1/messages yoʻlida thinking:{type:"disabled"} qoʻllanadi yoki /v1/chat/completions yoʻlida reasoning/reasoning_effort maydonlari olib tashlanadi. Variant faqat fikrlashni qoʻllab-quvvatlaydigan va disabled qiymatini qabul qiladigan Claude oilasidagi modellar uchun roʻyxatga kiritiladi (shu sababli, masalan, disabled qiymatini rad etadigan faqat adaptiv modellar chiqarib tashlanadi). Operatorlar ModelSpec.noThinkingAlias orqali har bir model uchun variantni majburan yoqishi yoki oʻchirishi mumkin.


Provayder plagini manifesti

GET /api/v1/provider-plugin-manifest

Bifrost, CLIProxyAPI va kelajakdagi sidecar routerlari ishlatadigan JSON uchun xavfsiz provayder plagini manifestini qaytaradi. Javob TypeScript provayderlari reyestridan yaratiladi va ataylab OAuth mijoz sirlarini, ish vaqti muhiti qiymatlarini aniqlashni, ijrochi funksiyalarni, soʻrov sarlavhalarini hamda hisob maʼlumotlarini oʻz ichiga olmaydi.

Sidecar jarayondan tashqarida ishlaganda va open-sse/config/providerPluginManifestRegistry.ts faylini bevosita import qila olmaganda ushbu endpointdan foydalaning.


Moslik nuqtalari

Usul Yoʻl Format
POST /v1/chat/completions OpenAI
POST /v1/messages Anthropic
POST /v1/responses OpenAI Javoblari
POST /v1/embeddings OpenAI
POST /v1/images/generations OpenAI Tasvirlari
POST /v1/images/edits OpenAI Tasvirlari (tahrirlash/boʻyash)
POST /v1/videos/generations OpenAI uslubidagi video yaratish
POST /v1/music/generations OpenAI uslubidagi musiqa yaratish
POST /v1/audio/transcriptions OpenAI Audio (STT)
POST /v1/audio/speech OpenAI TTS (audio tanasini qaytaradi)
POST /v1/rerank Cohere/Voyage uslubidagi qayta tartiblash
POST /v1/classify Jina tasniflash (api.jina.ai)
POST /v1/segment Jina segmenter (segment.jina.ai)
POST /v1/moderations OpenAI Moderatsiyalari
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 katalog taxallusi
GET /api/v1/vscode/{token}/models OpenAI modellar taxallusi
POST /api/v1/vscode/{token}/chat/completions OpenAI tokenlashtirilgan taxallusi
POST /api/v1/vscode/{token}/responses OpenAI Javoblari tokenlashtirilgan taxallusi
POST /api/v1/vscode/{token}/api/chat Ollama tokenlashtirilgan taxallusi
GET /api/v1/vscode/{token}/api/tags Ollama teglar tokenlashtirilgan taxallusi

Barcha POST yoʻnalishlari bir xil shaklga ega: Bearer your-api-key + Zod tomonidan tasdiqlangan JSON tanasi (v1RerankSchema, v1ModerationSchema, v1AudioSpeechSchema va boshqalar, qarang: src/shared/validation/schemas.ts). Sxema xatosi yuz berganda 4xx qaytariladi.

Authorization: Bearer ... biriktira olmaydigan mijozlar uchun OmniRoute API kalitlarini URLda soʻrov satri mosligi (?token=..., ?apiKey=..., ?api_key=..., ?key=...) yoki quyida hujjatlashtirilgan maxsus /api/v1/vscode/{token}/... nuqtalari orqali qabul qiladi.

# Rerank (bulutli registr provayderi yoki OpenAI-mos provayder tuguni "<prefix>/<model>" sifatida)
POST /v1/rerank      { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] }

# Jina tasniflash (Foundation API hisob ma'lumotlari)
POST /v1/classify    { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] }

# Jina segmenter
POST /v1/segment     { "content": "...", "return_chunks": true }

# Jina qidiruvi (s.jina.ai; provayder taxalluslari: jina-search, jina-ai, jina)
POST /v1/search      { "query": "...", "provider": "jina-search" }

# Moderatsiyalar
POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." }

# TTS — audio/mpeg (yoki soʻralgan format) tanasini qaytaradi
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }

# Tasvirni tahrirlash (multipart)
POST /v1/images/edits  -F image=@input.png -F prompt="..." -F mask=@mask.png

# Video / musiqa yaratish (provayder prefiksli model identifikatori)
POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." }
POST /v1/music/generations  { "model": "kie/suno-v4.0",   "prompt": "..." }

Rerank provayder tugunlari: POST /v1/rerank shuningdek, <node-prefix>/<model> sifatida murojaat qilingan OpenAI-mos provayder tugunlariga (oMLX, vLLM, Infinity, shlyuz ortidagi TEI, ...) yoʻnaltiriladi. Loopback tugunlari (localhost, 127.0.0.1, 172.16.0.0/12) har doim mos keladi. Boshqa har qanday xostdagi — LAN qutisi yoki Tailscale tengdoshi — tugunlar faqat operator RERANK_REMOTE_PROVIDER_NODES xususiyat bayrogʻini yoqqanida va tugunning asosiy URL manzili provayderning tashqi URL siyosatidan (OMNIROUTE_ALLOW_LOCAL_PROVIDER_URLS / OMNIROUTE_ALLOW_PRIVATE_PROVIDER_URLS) oʻtgandagina mos keladi; bulut-metadata xostlariga hech qachon yoʻnaltirilmaydi. Xotira dvigatelining qayta tartiblash bosqichi ushbu yoʻnalishni loopback orqali chaqiradi, shuning uchun xuddi shu qoida Xotira sozlamalaridagi rerankProviderModel ga ham tegishli.

Mahalliy server shakllari: tugun <base>/v1/rerank da va 404 holatida <base>/rerank da (Infinity, TEI) chaqiriladi. Yuqori oqim tanasi Cohere/OpenAI imlosini (documents, return_documents) va TEI imlosini (texts, return_text) oʻz ichiga oladi, va yuqori oqim javobi Cohere konvertiga normallashtiriladi: TEI ning oddiy [{index, score, text}], yupqa shlyuzlardan {results: [{index, score}]} va Voyage uslubidagi {data: [...]} barchasi mijozga {results: [{index, relevance_score, document?}]} sifatida qaytadi, ball boʻyicha saralanadi va top_n da cheklanadi.

Provayder-tugunni aniqlash: OpenAI-mos provayder tugunidagi modellar GET /v1/models da tugun prefiksi ostida paydo boʻladi. Hech qanday nuqta metamaʼlumotlarini oʻz ichiga olmaydigan qatorlar (mahalliy /v1/models roʻyxatlari uchun odatiy) tugunning apiType ni meros qilib oladi, shuning uchun embeddings tugunining modellari type: "embedding" va rerank tugunining modellari suhbatga standart boʻlish oʻrniga type: "rerank" boʻladi; sinxronlashtirilgan yoki qoʻlda qoʻshilgan qatordagi aniq supportedEndpoints hali ham ustunlikka ega.

Maxsus Provayder Yoʻnalishlari

POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations

Agar yetishmayotgan bo'lsa, provayder prefiksi avtomatik ravishda qo'shiladi. Mos kelmaydigan modellar 400 xatosini qaytaradi.


Files API

Paketli kirish/chiqish va fayl maqsadiga ko‘ra yuklash uchun OpenAI bilan mos keluvchi fayllar endpointi.

Metod Yo‘l Tavsif
POST /v1/files Faylni yuklash (multipart: file, purpose, expires_after[anchor], expires_after[seconds]) — maksimum 512 MiB
GET /v1/files Autentifikatsiya qilingan API kaliti uchun fayllar ro‘yxatini olish
GET /v1/files/[id] Fayl metama’lumotlarini olish
DELETE /v1/files/[id] Faylni o‘chirish
GET /v1/files/[id]/content Faylning ishlov berilmagan tarkibini oqim tarzida qaytarish

Autentifikatsiya: Bearer API kaliti — fayllar getApiKeyRequestScope orqali har bir API kaliti doirasida ajratiladi. Kalit faqat o‘ziga tegishli fayllarni ko‘radi, yuklab oladi va o‘chiradi; kalitsiz boshqaruv paneli sessiyasi butun instansiyani o‘qiydi; egasi bo‘lmagan faylga (anonim yoki boshqaruv paneli sessiyasi orqali yuklangan) sessiyasiz murojaat qiluvchilarning barchasi uchun ruxsat berilmaydi. GET /v1/files anonim murojaat qiluvchini hamda taqdim etilgan, ammo aniqlanmaydigan kalitni, hatto REQUIRE_API_KEY=false bo‘lganda ham, barcha ijarachilarning fayllarini ro‘yxatlash o‘rniga 401 bilan rad etadi (GHSA-m3hp-hq9g-fpmv, GHSA-2jm2-mpx8-6523).


Batches API

OpenAI bilan mos keluvchi paketli ishlov berish.

Metod Yoʻl Tavsif
POST /v1/batches Paket yaratish — soʻrov tanasi v1BatchCreateSchema orqali tekshiriladi (input_file_id, endpoint, completion_window)
GET /v1/batches Paketlar roʻyxatini olish
GET /v1/batches/[id] Paket holati va request_countsni olish
DELETE /v1/batches/[id] Yakunlangan/muvaffaqiyatsiz paketni oʻchirish
POST /v1/batches/[id]/cancel Jarayondagi paketni bekor qilish

Autentifikatsiya: Bearer API kaliti. Paketlar fayllardagi kabi ayni uch tomonlama qoida asosida har bir API kaliti doirasida ajratiladi: faqat oʻz kaliti uchun ruxsat beriladi, boshqaruv paneli seansi barcha instansiyalar doirasida ruxsatga ega, egasi koʻrsatilmagan yozuvlarga esa seanssiz barcha murojaat qiluvchilar uchun ruxsat berilmaydi (olish, oʻchirish, bekor qilish va yaratishdagi input_file_id tekshiruvi). GET /v1/batches anonim murojaat qiluvchining soʻrovini, hatto REQUIRE_API_KEY=false boʻlganda ham, 401 bilan rad etadi.


Search API

Veb/qidiruv provayderlari uchun abstraksiya (Tavily, Brave, Exa, Serper va boshqalar).

Metod Yo‘l Tavsif
GET /v1/search Sozlangan qidiruv provayderlari va ularning imkoniyatlari ro‘yxatini olish
POST /v1/search Qidiruv so‘rovini bajarish — so‘rov tanasi v1SearchSchema orqali tekshiriladi, keshlash/birlashtirishni qo‘llab-quvvatlaydi
GET /v1/search/analytics Har bir provayder bo‘yicha murojaatlar/kechikish/kesh statistikasi

Autentifikatsiya: Bearer API kaliti (extractApiKey + isValidApiKey). Qidiruv siyosati enforceApiKeyPolicy orqali qo‘llanadi.


Web Fetch API

Sozlangan web-fetch provayderi (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract) orqali URL manzilidan kontentni ajratib oling.

Metod Yoʻl Tavsif
POST /v1/web/fetch URL manzilini olish/qirib chiqish — soʻrov tanasi v1WebFetchSchema orqali tekshiriladi

Autentifikatsiya: Bearer API kaliti (extractApiKey + isValidApiKey). Siyosat enforceApiKeyPolicy orqali qoʻllanadi.

Kvotani hisobga oluvchi zaxira mexanizmi (#8297): aniq provider berilmaganida, pul (firecrawl → jina-reader → tavily-search → tinyfish → nimble-search) qatʼiy ustuvorlik tartibida (birinchisini toʻldirish) koʻrib chiqiladi — tezlik chekloviga uchragan, ammo sozlangan provayder soʻrovni darhol toʻxtatish oʻrniga oʻtkazib yuboriladi va qayta urinish mumkin boʻlgan/kvota bilan bogʻliq yuqori oqim xatosi (HTTP 429 har doim; Firecrawl/Tavily/TinyFish kvota turidagi bepul tariflari uchun 402/403 — Jina Reader uchun emas va oddiy 400 notoʻgʻri soʻrovi uchun hech qachon emas) soʻrov vaqtida hali sinab koʻrilmagan, hisob maʼlumotlari mavjud keyingi provayderga oʻtadi. Puldagi barcha provayderlar tugagach, endpoint avvalgi umumiy 400 oʻrniga yagona 429 javobini (Retry-After sarlavhasi bilan) qaytaradi. Aniq provider soʻralganda, yashirin zaxira mexanizmi mavjud emas — tezlik chekloviga uchragan yoki ishlamay qolgan aniq provayder oʻz xatosini qaytaradi (tezlik cheklangan boʻlsa 429, aks holda yuqori oqim statusi).


WebSocket orqali oqimli uzatish

GET /v1/ws?handshake=1

WebSocket ulanishini yangilash uchun qoʻl siqish jarayonini tekshiradi va simli protokolning namunaviy xabarlarini (request, cancel) qaytaradi. Haqiqiy WS freymlari Next.js marshrutlar jadvalidan tashqaridagi biriktirilgan WS serveri tomonidan qayta ishlanadi.

Autentifikatsiya: Qoʻl siqish vaqtida Bearer API kaliti.

WebSocket orqali Responses API (faqat codex)

# HTTP API bilan bir xil host:port (standart 20128); ulanishni yangilang:
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (yoki: -H "Authorization: Bearer <OMNIROUTE_API_KEY>")

# Birinchi freym response.create BOʻLISHI SHART:
{ "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] }

Responses-API-over-WebSocket proksisi faqat codex bilan ishlash uchun ulangan (ChatGPT bekendi). U API/boshqaruv paneli bilan bir xil portda /v1/responses, /responses va /api/v1/responses yoʻllarini tinglaydi. Birinchi response.create freymida u ichki codex-responses-ws koʻprigi orqali autentifikatsiya qiladi va tayyorlaydi, codex OAuth ulanishini tanlaydi hamda wreq-js transporti orqali wss://chatgpt.com/backend-api/codex/responses manziliga tunnel hosil qiladi. codex boʻlmagan modellar rad etiladi (codex_ws_provider_required). Kvota ulushiga asoslangan marshrutlash uchun model: "qtSd/<group>/codex/<model>" dan foydalaning. Quyidagi fayllarda amalga oshirilgan: app/server-ws.mjs + scripts/dev/responses-ws-proxy.mjs + src/app/api/internal/codex-responses-ws/route.ts.

Autentifikatsiya: Qoʻl siqish vaqtida Bearer API kaliti. Biriktirilgan HTTP server (server-ws.mjs) faol kirish nuqtasi boʻlishi kerak (app/server-ws.mjs mavjud boʻlsa, sukut boʻyicha shunday boʻladi).

Model identifikatori: oddiy ChatGPT identifikatoridan foydalaning (codex/ prefiksisiz)

OpenAI Codex CLI supports_websockets = true boʻlganda model nomini mijoz tomonida tekshiradi va codex/gpt-5.5 kabi provayder prefiksli identifikatorlarni rad etadi (The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account). Oddiy identifikatorni yuboring (masalan, gpt-5.5). OmniRoute koʻprigi faqat codex bilan ishlaydi, shuning uchun yuqori oqimga tunnel hosil qilishdan oldin oddiy identifikatorni codex modeli sifatida qayta aniqlaydi (resolveCodexWsModelInfo) — garchi oddiy gpt-5.5 HTTP orqali boshqa provayderga marshrutlanishi mumkin boʻlsa ham.

OpenAI Codex CLIʼni sozlash

~/.codex/config.toml fayliga WebSocket qoʻllab-quvvatlanadigan maxsus provayderni qoʻshish orqali Codex CLIʼni OmniRouteʼga yoʻnaltiring (mavjud konfiguratsiyaga tegmaslik uchun alohida CODEX_HOME dan foydalaning):

model = "gpt-5.5"                 # oddiy identifikator — "codex/gpt-5.5" EMAS
model_provider = "omniroute"

[model_providers.omniroute]
name = "OmniRoute (WS)"
base_url = "http://localhost:20128/v1"   # oxirida qiya chiziq boʻlmasin; WS URL avtomatik hosil qilinadi (ishlab chiqarishda https/wss dan foydalaning)
wire_api = "responses"                    # 2026-yil fevralidan beri qoʻllab-quvvatlanadigan yagona qiymat
supports_websockets = true                # Responses-over-WS transportini yoqadi
env_key = "OMNIROUTE_API_KEY"             # OmniRoute API kalitini saqlaydi (Bearer)
export OMNIROUTE_API_KEY=sk-...           # OmniRoute API kaliti (REQUIRE_API_KEY=false boʻlsa, istalgan kalit)
codex exec "Responda apenas: PONG"

CLI base_url + /responses ulanishini WebSocketʼga yangilaydi va OmniRoute uni tanlangan codex OAuth ulanishiga tunnellaydi. Mahalliy server bilan boshidan oxirigacha tekshirilgan: ChatGPT codex.rate_limits + response.created qaytaradi va yakuniy natijani oqim tarzida uzatadi.


Kvotalar va muammolar haqida xabar berish

Metod Yo‘l Tavsif
GET /v1/quotas/check Ro‘yxatdan o‘tgan kalitni berishdan oldin provider + accountId uchun kvotani dastlabki tekshirish
POST /v1/issues/report Kvota/kalit berishdagi xatolik haqida GitHub’ga xabar berish (GITHUB_ISSUES_REPO + token talab qilinadi)

Autentifikatsiya: Bearer API kaliti (isAuthenticated).


Mustaqil foydalanish (/api/usage/om-usage)

Har qanday API kaliti o‘zining foydalanish ma’lumotlari va kvotalarini boshqaruv autentifikatsiyasisiz o‘qiy oladi. Bu mijoz (CLI, OmniCopilot paneli) kalit egasiga uning xarajatlarini ko‘rsatish uchun foydalanadigan endpointdir.

# Matnli ko‘rinish (tarixiy shartnoma — terminal uchun oddiy matn)
curl -H "Authorization: Bearer <your-api-key>" \
  http://localhost:20128/api/usage/om-usage

# Tuzilmaviy ko‘rinish — UI foydalanadigan format
curl -H "Authorization: Bearer <your-api-key>" \
  "http://localhost:20128/api/usage/om-usage?format=json"

Kalitda allowUsageCommand yoqilgan bo‘lishi kerak (standart holatda o‘chiq — boshqaruv panelidagi API kalitlari menejeri uni har bir kalit uchun alohida yoqadi). U yoqilmagan bo‘lsa, endpoint 403 javobini qaytaradi.

?format=json farqlanuvchi tuzilmani qaytaradi, shuning uchun chaqiruvchi rad etish javobidan hech qachon ma’lumot maydonini o‘qimaydi. Muvaffaqiyatli holatda:

{
  "allowed": true,
  // faqat kalit har bir kalit uchun foydalanish limitlarini (kunlik/haftalik USD) yoqqanida mavjud bo‘ladi:
  "personal": {
    "dailySpentUsd": 1.25,
    "dailyLimitUsd": 5,
    "dailyResetAtIso": "…",
    "weeklySpentUsd": 8,
    "weeklyLimitUsd": 20,
    "weeklyResetAtIso": "…" /* … */,
  },
  // tanlangan provayder kvotasi surati yoki hali hech narsa keshlanmagan bo‘lsa null:
  "provider": {
    "connectionId": "…",
    "provider": "claude",
    "plan": "…",
    "quotas": {/* … */},
  },
  // UI bir nechta provayderni yonma-yon ko‘rsatishi uchun har bir ulanishning surati:
  "providers": [
    { "connectionId": "…", "provider": "claude" /* … */ },
    { "provider": "codex" /* … */ },
  ],
}

Rad etilganda (401 noto‘g‘ri kalit / 403 ruxsat berilmagan) ayni marshrut { "allowed": false, "error": { "message": "…" } } javobini qaytaradi — mavjud, ammo bo‘sh personal/provider (kalitga ruxsat berilgan, ammo hali hech qanday ma’lumot olinmagan) rad etishdan farqli holat bo‘lib, ularni faqat JSON ko‘rinishi farqlaydi.

Autentifikatsiya: chaqiruvchining isValidApiKey bilan tekshirilgan o‘z Bearer API kaliti — bu requireManagementAuth ortida qoladigan boshqaruv interfeysi (/api/keys/…) emas.


Semantik kesh

# Kesh statistikasini olish
GET /api/cache/stats

# Barcha keshlarni tozalash
DELETE /api/cache/stats

Javob namunasi:

{
  "semanticCache": {
    "memorySize": 42,
    "memoryMaxSize": 500,
    "dbSize": 128,
    "hitRate": 0.65
  },
  "idempotency": {
    "activeKeys": 3,
    "windowMs": 5000
  }
}

Kechikishga ta’siri

Semantik keshdagi HIT javobni yuqori oqimdagi chaqiruvsiz keshdan uzatadi, shuning uchun xabar qilingan X-OmniRoute-Response-Latency deyarli nolga teng bo‘ladi (yuqori oqimdagi dastlabki kechikishdan qat’i nazar). Kechikishga sezgir mijozlar (unumdorlikni sinash, p50/p99 monitoringi) X-OmniRoute-Cache-Latency javob sarlavhasini tekshirishi kerak:

Qiymat Ma’nosi
synthetic Javob keshdan uzatildi; kechikish yuqori oqimdagi haqiqiy vaqt emas
(mavjud emas) Javob yuqori oqimdagi haqiqiy chaqiruvdan olindi

Har bir kalit uchun keshni chetlab o‘tish

API kalitlari cacheDefaultMode orqali semantik keshdan o‘qishni o‘chirishi mumkin:

Qiymat Xatti-harakat
legacy Keshning odatiy xatti-harakati (standart)
bypass Keshdan qidirishni butunlay o‘tkazib yuborish; har doim yuqori oqimga murojaat qilish

Kalit yaratishda (POST /api/keys) o‘rnating yoki (PATCH /api/keys/[id]) orqali yangilang:

{ "cacheDefaultMode": "bypass" }

Har bir so‘rov uchun chetlab o‘tish

Har qanday so‘rov kalit sozlamalaridan qat’i nazar keshni chetlab o‘tishi mumkin:

X-OmniRoute-No-Cache: true

Boshqaruv paneli va boshqarish

Boshqaruv yoʻnalishlari (/api/*, ommaviy autentifikatsiya/kirish bundan mustasno) oddiy inferens API kalitlari orqali avtorizatsiya qilinmaydi. Hisob maʼlumotlari oilalari, qamrovlar va curl misollari: Boshqaruv autentifikatsiyasi.

Autentifikatsiya

Soʻnggi nuqta Metod Tavsif
/api/auth/login POST Kirish
/api/auth/logout POST Chiqish
/api/settings/require-login GET/PUT Kirish talabini yoqish/oʻchirish

Provayderlarni boshqarish

Soʻnggi nuqta Metod Tavsif
/api/providers GET/POST Provayderlarni roʻyxatlash / yaratish
/api/providers/[id] GET/PUT/DELETE Provayderni boshqarish
/api/providers/[id]/test POST Provayder ulanishini sinash
/api/providers/[id]/models GET Provayder modellarini roʻyxatlash
/api/providers/validate POST Provayder konfiguratsiyasini tekshirish
/api/providers/bulk POST BITTA provayder uchun API kalitlarini ommaviy qoʻshish
/api/providers/import POST Tahlil qilingan CSV/JSON faylidan turli provayderlar ROʻYXATINI import qilish (#6836); har bir qator boʻyicha qisman xatolik natijalari
/api/provider-nodes* Turli Provayder tugunlarini boshqarish
/api/provider-models GET/POST/PATCH/DELETE Maxsus modellar (qoʻshish, yangilash, yashirish/koʻrsatish, oʻchirish)

OAuth jarayonlari

Soʻnggi nuqta Metod Tavsif
/api/oauth/[provider]/[action] Turli Provayderga xos OAuth jarayoni

Yoʻnaltirish va konfiguratsiya

Soʻnggi nuqta Metod Tavsif
/api/models/alias GET/POST Model taxalluslari
/api/models/catalog GET Provayder va tur boʻyicha barcha modellar
/api/combos* Turli Kombinatsiyalarni boshqarish
/api/keys* Turli API kalitlarini boshqarish
/api/pricing GET Modellar narxlari

Foydalanish va tahlil

Endpoint Metod Tavsif
/api/usage/history GET Foydalanish tarixi
/api/usage/logs GET Foydalanish jurnallari
/api/usage/request-logs GET Soʻrov darajasidagi jurnallar
/api/usage/[connectionId] GET Har bir ulanish boʻyicha foydalanish
/api/usage/token-limits GET/POST/DELETE Har bir API kaliti uchun token cheklovi byudjetlari
/api/usage/model-latency-stats GET Har bir provayder/model boʻyicha sirgʻaluvchi kechikish agregati (oʻrtacha/p50/p95/p99, muvaffaqiyat darajasi); filtrlar: windowHours/minSamples/maxRows/provider/model (#6873)
/api/usage/cache-health GET call_logs asosidagi prompt keshi holati xulosasi — yozish/oʻqish nisbati, yozish hajmining p50/p90/p99 taqsimoti, katta hajmli yozuvlar konsentratsiyasi, modellar boʻyicha taqsimot va healthy/degraded/thrash/no-data xulosasi; soʻrov parametrlari: range (1h|24h|7d|30d, standart 24h) va ixtiyoriy model (#8827)

Sozlamalar

Endpoint Metod Tavsif
/api/settings GET/PUT/PATCH Umumiy sozlamalar
/api/settings/proxy GET/PUT Tarmoq proksi konfiguratsiyasi
/api/settings/proxy/test POST Proksi ulanishini sinash
/api/settings/ip-filter GET/PUT Ruxsat etilgan/bloklangan IP manzillar roʻyxati
/api/settings/thinking-budget GET/PUT Fikrlash/mulohaza yuritish soʻrovini qayta yozish rejimi (oʻzgarishsiz uzatish / avtomatik olib tashlash / maxsus / moslashuvchan). Siqishdan mustaqil. THINKING_BUDGET.md fayliga qarang.
/api/settings/system-prompt GET/PUT Global tizim prompti
/api/settings/compression GET/PUT Global siqish konfiguratsiyasi
/api/settings/purge-request-history POST Soʻrov jurnali qatorlari va lokal chaqiruv jurnali artefaktlarini tozalash

Kontekst va siqish

Endpoint Metod Tavsif
/api/compression/preview POST off/lite/standard/aggressive/ultra/RTK/stacked siqishni oldindan ko‘rish
/api/compression/language-packs GET Mavjud Caveman til paketlarini ro‘yxatlash
/api/compression/rules GET Caveman qoidalari metama’lumotlarini ro‘yxatlash
/api/context/caveman/config GET/PUT Caveman’ga xos sozlamalar taxallusi
/api/context/rtk/config GET/PUT RTK’ga xos sozlamalar, jumladan maxsus filtrlar va xom chiqishni saqlash
/api/context/rtk/filters GET RTK filtrlar katalogi va maxsus filtr diagnostikasi
/api/context/rtk/test POST Matnli yuklama bilan RTK oldindan ko‘rish/sinovini bajarish
/api/context/rtk/raw-output/[id] GET Ko‘rsatkich identifikatori bo‘yicha saqlangan, tahrirlangan xom chiqishni o‘qish
/api/context/combos GET/POST Siqish kombinatsiyalari ro‘yxati/yaratish
/api/context/combos/[id] GET/PUT/DELETE Siqish kombinatsiyasi tafsilotlari/yangilash/o‘chirish
/api/context/combos/[id]/assignments GET/PUT Siqish kombinatsiyalarini marshrutlash kombinatsiyalariga tayinlash
/api/context/analytics GET Siqish tahlili taxallusi

Monitoring

Endpoint Metod Tavsif
/api/sessions GET Faol seanslarni kuzatish
/api/rate-limits GET Har bir hisob uchun so‘rovlar tezligi cheklovlari
/api/monitoring/health GET Holat tekshiruvi + provayder xulosasi (catalogCount, configuredCount, activeCount, monitoredCount). Boshqaruv ko‘rinishi credentialHealthni o‘z ichiga oladi: sinov keshi skalyarlari, failed>0 bo‘lganda failedConnections va staleDbNonOkCount (SQLite’dagi yopishqoq test_status, o‘lchov emas). MONITORING_GUIDE.mdga qarang.
/api/cache/stats GET/DELETE Kesh statistikasi / tozalash
/api/modality-bridge/stats GET Xotiradagi attempts, muvaffaqiyatlar/bridged, muvaffaqiyatsizliklar, keshga tushishlar, totalLatencyMs, latencySamples, namuna soniga asoslangan averageLatencyMs va oxirgi foydalanish vaqti (qayta ishga tushirilganda nolga tushadi; boshqaruv autentifikatsiyasi)
/api/modality-bridge/video/runtime GET Boshqaruv autentifikatsiyasi/sinovidan oldin qat’iy ishonchli loopback tekshiruvi; tozalangan FFmpeg/ffprobe mavjudligi va versiyalari (saqlanmaydi)
/api/modality-bridge/video/extract POST Ichki autentifikatsiyalangan ishonchli loopback bayt brokeri; 50 MiB kirish, cheklangan navbat/32 MiB chiqish, sig‘im uchun 503, uzilish uchun 499, muddat tugashi uchun 504; ommaviy fayl yuklash API’si emas

Zaxiralash va eksport/import qilish

Endpoint Metod Tavsif
/api/db-backups GET Mavjud zaxira nusxalarini roʻyxatlash
/api/db-backups PUT Qoʻlda zaxira nusxasini yaratish
/api/db-backups POST Muayyan zaxira nusxasidan tiklash
/api/db-backups/export GET Maʼlumotlar bazasini .sqlite fayli sifatida yuklab olish
/api/db-backups/import POST Maʼlumotlar bazasini almashtirish uchun .sqlite faylini yuklash
/api/db-backups/exportAll GET Toʻliq zaxira nusxasini .tar.gz arxivi sifatida yuklab olish

Bulut bilan sinxronlash

Endpoint Metod Tavsif
/api/sync/cloud Turli Bulut bilan sinxronlash amallari
/api/sync/initialize POST Sinxronlashni ishga tushirish
/api/cloud/* Turli Bulutni boshqarish

Tunnellar

Endpoint Metod Tavsif
/api/tunnels/cloudflared GET Boshqaruv paneli uchun Cloudflare Quick Tunnel oʻrnatilishi/ish holatini oʻqish
/api/tunnels/cloudflared POST Cloudflare Quick Tunnelʼni yoqish yoki oʻchirish (action=enable/disable)
/api/tunnels/ngrok GET Boshqaruv paneli uchun ngrok Tunnel ish holatini oʻqish
/api/tunnels/ngrok POST ngrok Tunnelʼni yoqish yoki oʻchirish (action=enable/disable)

CLI vositalari

Endpoint Metod Tavsif
/api/cli-tools/claude-settings GET Claude CLI holati
/api/cli-tools/codex-settings GET Codex CLI holati
/api/cli-tools/droid-settings GET Droid CLI holati
/api/cli-tools/openclaw-settings GET OpenClaw CLI holati
/api/cli-tools/runtime/[toolId] GET Umumiy CLI ish muhiti

CLI javoblari quyidagilarni oʻz ichiga oladi: installed, runnable, command, commandPath, runtimeMode, reason.

ACP agentlari

Endpoint Metod Tavsif
/api/acp/agents GET Holati bilan barcha aniqlangan agentlarni (ichki + maxsus) roʻyxatlash
/api/acp/agents POST Maxsus agent qoʻshish yoki aniqlash keshini yangilash
/api/acp/agents DELETE id soʻrov parametri boʻyicha maxsus agentni olib tashlash

GET javobi agents[] (id, nomi, ikkilik fayli, versiyasi, oʻrnatilganligi, protokoli, maxsusligi) va summary (jami, oʻrnatilgan, topilmagan, ichki, maxsus) maʼlumotlarini oʻz ichiga oladi.

Barqarorlik va tezlik cheklovlari

Endpoint Metod Tavsif
/api/resilience GET/PATCH Soʻrovlar navbati, ulanishning sovish davri, provayder uzgichi va kutish sozlamalarini olish/yangilash
/api/resilience/reset POST Provayder zanjir uzgichlarini qayta tiklash
/api/resilience/model-cooldowns GET Qolgan vaqt boʻyicha saralangan faol (provayder, ulanish, model) blokirovkalarini roʻyxatlash
/api/resilience/model-cooldowns DELETE Model blokirovkasini tozalash — tana: {provider, model} yoki barchasini tozalash uchun {all: true}
/api/rate-limits GET Har bir hisob uchun tezlik cheklovi holati
/api/rate-limit GET Global tezlik cheklovi konfiguratsiyasi

Barcha toʻrtta /api/resilience/* marshruti boshqaruv autentifikatsiyasini (requireManagementAuth) talab qiladi. Provayder uzgichi, ulanishning sovish davri va model blokirovkasi oʻrtasidagi farqlarning toʻliq tavsifi uchun Barqarorlik (kengaytirilgan) boʻlimiga qarang.

Baholashlar

Endpoint Metod Tavsif
/api/evals GET/POST Baholash toʻplamlarini roʻyxatlash/baholashni ishga tushirish

Siyosatlar

Endpoint Metod Tavsif
/api/policies GET/POST/DELETE Yoʻnaltirish siyosatlarini boshqarish

Muvofiqlik

Endpoint Metod Tavsif
/api/compliance/audit-log GET Muvofiqlik audit jurnali (oxirgi N ta)

v1beta (Gemini bilan mos)

Endpoint Metod Tavsif
/v1beta/models GET Modellarni Gemini formatida roʻyxatlash
/v1beta/models/{...path} POST Gemini generateContent endpointi

Bu endpointlar mahalliy Gemini SDK mosligini kutadigan mijozlar uchun Gemini API formatini takrorlaydi.

Ichki / tizim APIʼlari

Endpoint Metod Tavsif
/api/init GET Ilovani ishga tushirish tekshiruvi (birinchi ishga tushirishda ishlatiladi)
/api/tags GET Ollama bilan mos model teglari (Ollama mijozlari uchun)
/api/restart POST Serverni toʻgʻri qayta ishga tushirishni boshlash
/api/shutdown POST Serverni toʻgʻri oʻchirishni boshlash
/api/system/env/repair POST OAuth provayderining muhit oʻzgaruvchilarini tiklash

Eslatma: Bu endpointlar tizim tomonidan ichki tarzda yoki Ollama mijozlari bilan moslik uchun ishlatiladi. Odatda ular oxirgi foydalanuvchilar tomonidan chaqirilmaydi.

OAuth muhiti oʻzgaruvchilarini tiklash (v3.6.1+)

POST /api/system/env/repair
Content-Type: application/json

{
  "provider": "claude-code"
}

Muayyan provayder uchun yetishmayotgan yoki buzilgan OAuth muhiti oʻzgaruvchilarini tiklaydi. Quyidagini qaytaradi:

{
  "success": true,
  "repaired": ["CLAUDE_CODE_OAUTH_CLIENT_ID", "CLAUDE_CODE_OAUTH_CLIENT_SECRET"],
  "backupPath": "/home/user/.omniroute/backups/env-repair-2026-04-11.bak"
}

Audio transkripsiyasi

POST /v1/audio/transcriptions
Authorization: Bearer your-api-key
Content-Type: multipart/form-data

Sozlangan istalgan STT provayderi yordamida audio fayllarni transkripsiya qiling. Yoʻlning birinchi segmenti bevosita provayderni tanlaydi (openai/…, deepgram/…). Boshqa yetkazib beruvchining modelini qayta eksport qiluvchi shlyuzlar toʻliq identifikatordan foydalanadi (openrouter/deepgram/nova-3).

Soʻrov:

curl -X POST http://localhost:20128/v1/audio/transcriptions \
  -H "Authorization: Bearer your-api-key" \
  -F "file=@recording.mp3" \
  -F "model=openai/whisper-1"

Javob:

{
  "text": "Salom, bu transkripsiya qilingan audio kontent.",
  "task": "transcribe",
  "language": "en",
  "duration": 12.5
}

Model identifikatorlariga misollar: openai/whisper-1 (OpenAI kalitini talab qiladi), openrouter/deepgram/nova-3 (OpenRouter kalitini talab qiladi), deepgram/nova-3 (bevosita Deepgram kalitini talab qiladi). Oddiy deepgram/nova-3 soʻrovi OpenRouter’dan foydalanmaydi.

Qoʻllab-quvvatlanadigan formatlar: mp3, wav, m4a, flac, ogg, webm.


Ollama bilan moslik

Ollama API formatidan foydalanadigan mijozlar uchun:

# Chat soʻnggi nuqtasi (Ollama formati)
POST /v1/api/chat

# Modellar roʻyxati (Ollama formati)
GET /api/tags

Soʻrovlar Ollama va ichki formatlar oʻrtasida avtomatik ravishda oʻgiriladi.

Tokenli VS Code / Sarlavhasiz taxalluslar

Integratsiya Authorization sarlavhasini kirita olmasa va API kaliti asosiy URL ichiga joylashtirilishi kerak boʻlsa, ushbu taxalluslardan foydalaning.

# OpenAI uslubidagi katalog taxallusi
GET /api/v1/vscode/{token}/
GET /api/v1/vscode/{token}/models

# OpenAI uslubidagi chat taxalluslari
POST /api/v1/vscode/{token}/chat/completions
POST /api/v1/vscode/{token}/responses

# Ollama uslubidagi taxalluslar
POST /api/v1/vscode/{token}/api/chat
GET /api/v1/vscode/{token}/api/tags

Misol:

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":"salom"}]}'

Izohlar:

  • Tokenli taxalluslar /v1/* va /api/tags bilan bir xil ishlov beruvchilardan qayta foydalanadi; javob tuzilmalari bir xil boʻlib qoladi.
  • Mijoz maxsus sarlavhalarni qoʻllab-quvvatlaganda, Authorization: Bearer ... dan foydalanish afzal.
  • URL asosidagi tokenlar teskari proksi jurnallarida, brauzer tarixida va OmniRoute’dan tashqaridagi telemetriyada koʻrinishi mumkin. Ularga standart autentifikatsiya usuli sifatida emas, balki moslik varianti sifatida qarang.

Telemetriya

# Kechikish telemetriyasi xulosasini olish (har bir provayder uchun p50/p95/p99)
GET /api/telemetry/summary

Javob:

{
  "providers": {
    "claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 },
    "github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 }
  }
}

Budjet

# Barcha API kalitlari uchun budjet holatini olish
GET /api/usage/budget

# Budjetni belgilash yoki yangilash
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"
}

Sxema izohlari (setBudgetSchema): apiKeyId majburiy; dailyLimitUsd, weeklyLimitUsd yoki monthlyLimitUsd qiymatlaridan kamida bittasi noldan katta boʻlishi kerak. Ixtiyoriy maydonlar: warningThreshold (0–1), resetInterval (daily | weekly | monthly), resetTime (HH:MM). Eski {keyId, limit, period} tuzilmasi 400 Bad Request javobini qaytaradi.

Token limitlari

Har bir API kaliti uchun token budjetlari (yuqoridagi USD asosidagi budjetdan farqli). Soʻrov yoʻlida bevosita nazorat qilinadi: kalitning joriy davrdagi sarfi limitga yetganda, soʻrovlar 429 Too Many Requests bilan rad etiladi. Limitlar muayyan model, provider doirasida yoki kalit boʻylab global tarzda qoʻllanishi mumkin; agar soʻrovga bir nechta limit mos kelsa, eng qatʼiy limit ustun keladi.

# Kalitning token limitlarini roʻyxatlash (joriy davrdagi sarfni ham oʻz ichiga oladi)
GET /api/usage/token-limits?apiKeyId=key-123

# Token limitini yaratish yoki yangilash
POST /api/usage/token-limits
Content-Type: application/json

{
  "apiKeyId": "key-123",
  "scopeType": "model",
  "scopeValue": "openai/gpt-4o",
  "tokenLimit": 1000000,
  "resetInterval": "monthly",
  "enabled": true
}

# Token limitini id boʻyicha oʻchirish
DELETE /api/usage/token-limits?id=tl-abc

Sxema izohlari (setTokenLimitSchema): apiKeyId va scopeType (model | provider | global) majburiy. scopeType qiymati global boʻlmasa, scopeValue majburiy (masalan, model doirasi uchun model identifikatori, provider doirasi uchun provayder identifikatori). tokenLimit musbat butun son boʻlishi kerak (satrdan o‘giriladi). Ixtiyoriy: id (yaratish uchun koʻrsatmang, yangilash uchun kiriting), resetInterval (daily | weekly | monthly, standart qiymati monthly), resetTime (HH:MM), enabled (standart qiymati true). GET javoblari har bir limitni tokensUsed, remaining, windowStart, periodStartAt va nextResetAt bilan boyitadi. Bu boshqaruv toifasidagi endpoint hisoblanadi (autentifikatsiya authz konveyeri tomonidan markazlashgan holda taʼminlanadi).

Soʻrovni qayta ishlash

  1. Mijoz /v1/* manziliga soʻrov yuboradi
  2. Marshrut ishlov beruvchisi handleChat, handleEmbedding, handleAudioTranscription yoki handleImageGeneration funksiyasini chaqiradi
  3. Model aniqlanadi (toʻgʻridan-toʻgʻri provayder/model yoki taxallus/kombo)
  4. Hisob mavjudligini filtrlash orqali mahalliy maʼlumotlar bazasidan hisob maʼlumotlari tanlanadi
  5. Chat uchun: handleChatCore semantik/imzo keshini tekshiradi va kombo siqish sozlamalarini aniqlaydi
  6. Faollashtirilgan boʻlsa, provayder formatiga oʻgirishdan oldin proaktiv siqish (lite, Caveman, RTK yoki ketma-ket birlashtirilgan usullar) bajariladi
  7. Provayder ijrochisi yuqori oqimdagi soʻrovni yuboradi
  8. Javob mijoz formatiga qayta oʻgiriladi (chat) yoki oʻz holicha qaytariladi (embeddinglar/rasmlar/audio)
  9. Foydalanish, siqish tahlillari va soʻrov jurnallari qayd etiladi
  10. Xatolar yuz berganda kombo qoidalariga muvofiq zaxira variant qoʻllanadi

Arxitektura boʻyicha toʻliq maʼlumotnoma: ARCHITECTURE.md


Kombolarni boshqarish

Yuqori darajali marshrutlash kombolari (/api/combos* boʻlimida allaqachon umumlashtirilgan) model identifikatori andozasidan 1:1 nisbatda xaritalanishi ham mumkin, bu OpenAI uslubidagi model identifikatorini komboga shaffof tarzda qayta yoʻnaltirish imkonini beradi.

Metod Yoʻl Tavsif
GET /api/model-combo-mappings Barcha model→kombo xaritalashlarini roʻyxatlash
POST /api/model-combo-mappings Xaritalash yaratish — tana: {pattern, comboId, priority?, enabled?, description?}
GET /api/model-combo-mappings/[id] Bitta xaritalashni olish
PUT /api/model-combo-mappings/[id] Mavjud xaritalash maydonlarini yangilash
DELETE /api/model-combo-mappings/[id] Xaritalashni olib tashlash

Autentifikatsiya: boshqaruv sessiyasi/API kaliti (requireManagementAuth).


Vebhuklar

OmniRoute hodisalari (soʻrov yakunlanishi, kvota tugashi, kalit rotatsiyasi va boshqalar) uchun chiquvchi vebhuk obunalari.

Metod Yoʻl Tavsif
GET /api/webhooks Vebhuklar roʻyxatini olish (sirlar <prefix>... koʻrinishida niqoblanadi)
POST /api/webhooks Vebhuk yaratish — tana: {url, events?: ["*"], secret?, description?}
GET /api/webhooks/[id] Vebhukni olish
PUT /api/webhooks/[id] url/events/secret/description qiymatlarini yangilash
DELETE /api/webhooks/[id] Vebhukni oʻchirish
POST /api/webhooks/[id]/test Vebhuk URL manziliga sinov maʼlumotlarini yuborish va yetkazish holatini qaytarish

Autentifikatsiya: boshqaruv sessiyasi/API kaliti (requireManagementAuth).


Roʻyxatdan oʻtkazilgan kalitlar (avtomatik boshqaruv)

Avtomatik kalit boshqaruvi quyi tizimi tomonidan asosiy provayder/hisob orqali kunlik/soatlik kvotalarga ega API kalitlarini chiqarish va rotatsiya qilish uchun ishlatiladi.

Metod Yoʻl Tavsif
GET /api/v1/registered-keys Roʻyxatdan oʻtkazilgan kalitlar roʻyxatini olish (faqat niqoblangan prefiks)
POST /api/v1/registered-keys Yangi roʻyxatdan oʻtkazilgan kalitni chiqarish — tana: {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}. Xom kalitni faqat bir marta qaytaradi. Kvota rad etilganda 429 qaytaradi.
GET /api/v1/registered-keys/[id] Roʻyxatdan oʻtkazilgan kalit metamaʼlumotlarini olish (xom maʼlumotlarsiz)
DELETE /api/v1/registered-keys/[id] Roʻyxatdan oʻtkazilgan kalitni bekor qilish
POST /api/v1/registered-keys/[id]/revoke Bevosita bekor qilish endpointi (DELETE bilan bir xil taʼsirga ega)

Autentifikatsiya: Bearer API kaliti (isAuthenticated). Shuningdek, /v1/quotas/check va /v1/issues/reportga qarang.


Agentlar protokoli

OmniRoute foydalanuvchilari nomidan masofadan bajariladigan bulut agenti vazifalari (Claude Code, Codex Cloud, OpenHands va boshqalar).

Metod Yoʻl Tavsif
GET /api/v1/agents/tasks Vazifalar roʻyxati — ixtiyoriy ?provider=, ?status=, ?limit= (1–500, standart qiymat 50)
POST /api/v1/agents/tasks Vazifa yaratish — soʻrov tanasi CreateCloudAgentTaskSchema orqali tekshiriladi (providerId, prompt, source, options?). Vazifa konverti bilan 201 qaytaradi
DELETE /api/v1/agents/tasks?id=... Vazifani oʻchirish
GET /api/v1/agents/tasks/[id] Vazifani oʻqish — external_id oʻrnatilgan boʻlsa, yuqori darajadagi bulut agentidan holatni sinxron ravishda yangilaydi
POST /api/v1/agents/tasks/[id] Ajratilgan amal: {action: "approve"}, {action: "message", message} yoki {action: "cancel"}
DELETE /api/v1/agents/tasks/[id] Muayyan vazifani id boʻyicha oʻchirish

Autentifikatsiya: har bir metod uchun boshqaruv autentifikatsiyasi talab qilinadi (requireCloudAgentManagementAuth). v3.8.0 versiyasigacha ular autentifikatsiyasiz edi — moslikni buzuvchi oʻzgarish uchun 588a0333 commitiga qarang.

# Claude Code bulut vazifasini yaratish
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":"..."}}'

Boshqaruv proksilari

Provayderlar, hisoblar yoki global miqyosda tayinlanishi mumkin boʻlgan chiquvchi HTTP(S)/SOCKS proksilari.

Metod Yoʻl Tavsif
GET /api/v1/management/proxies Proksilar roʻyxati (?id= bilan bittasini qaytaradi; ?id=&where_used=1 bilan tayinlashlar grafigini qaytaradi)
POST /api/v1/management/proxies Proksi yaratish — soʻrov tanasi createProxyRegistrySchema orqali tekshiriladi
PATCH /api/v1/management/proxies Proksini yangilash — soʻrov tanasi updateProxyRegistrySchema orqali tekshiriladi (id talab qilinadi)
DELETE /api/v1/management/proxies?id=...&force=1 Proksini oʻchirish (tayinlashlarni ajratish uchun force=1 dan foydalaning)
GET /api/v1/management/proxies/assignments Tayinlashlar roʻyxati — proxy_id, scope, scope_id boʻyicha filtrlash mumkin; ulanish uchun faol proksini aniqlash maqsadida resolve_connection_id=<id> ni uzating
PUT /api/v1/management/proxies/assignments Tayinlash — soʻrov tanasi proxyAssignmentSchema orqali tekshiriladi ({scope, scopeId?, proxyId?}). Dispatcher keshini tozalaydi
PUT /api/v1/management/proxies/bulk-assign Ommaviy tayinlash — soʻrov tanasi bulkProxyAssignmentSchema orqali tekshiriladi ({scope, scopeIds[], proxyId?})
GET /api/v1/management/proxies/health?hours=24 Muayyan vaqt oraligʻidagi umumlashtirilgan proksi holati (muvaffaqiyatli/muvaffaqiyatsiz urinishlar soni, kechikish)

Autentifikatsiya: har bir marshrutda boshqaruv sessiyasi/API kaliti talab qilinadi (requireManagementAuth).

Vazifa tavsifidagi POST /api/v1/management/proxies/[id]/assignments va POST /api/v1/management/proxies/[id]/health yuqorida koʻrsatilgan yassi /assignments va /health marshrutlari orqali xizmat koʻrsatiladi — kod bazasida har bir id uchun alohida quyi marshrutlar mavjud emas.


Barqarorlik (kengaytirilgan)

OmniRoute vaqtinchalik nosozliklarni boshqarish uchun uchta mustaqil mexanizmni taqdim etadi; quyidagi boshqaruv endpointlari operatorlarga ularni ko‘rish va qayta sozlash imkonini beradi:

Qamrov Holat saqlanadigan joy Ko‘rish Tiklash / tozalash
Provayder uzgichi domain_circuit_breakers + operativ xotira /api/monitoring/health POST /api/resilience/reset
Ulanish tanaffusi Provayder ulanishlaridagi rateLimitedUntil /api/rate-limits, /api/providers/[id] (zarurat tug‘ilganda qayta yoqiladi; provayderni PUT orqali tozalang)
Model blokirovkasi Xotiradagi model mavjudligi reyestri GET /api/resilience/model-cooldowns DELETE /api/resilience/model-cooldowns

PATCH /api/resilience providerBreaker.oauth va providerBreaker.apikey ostidagi provayder uzgichi sozlamalarini qabul qiladi. Har bir profil degradationThreshold, failureThreshold va resetTimeoutMs parametrlarini qo‘llab-quvvatlaydi; ayni maydonlar Boshqaruv paneli → Sozlamalar → Barqarorlik bo‘limida ham mavjud.

# Bitta model blokirovkasini olib tashlash
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"}'

# Barcha blokirovkalarni olib tashlash
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
  -H "Cookie: auth_token=..." \
  -d '{"all":true}'

To‘liq konseptual ma’lumotnoma va uzgichning standart qiymatlari: CLAUDE.md → "Barqarorlikning ish vaqtidagi holati" bo‘limiga qarang.


Ko‘nikmalar

OmniRoute imkoniyatlarini maxsus bajariluvchi ishlov beruvchilar bilan kengaytirish uchun ko‘nikmalar platformasi, shuningdek marketpleys integratsiyalari.

Metod Yo‘l Tavsif
GET /api/skills O‘rnatilgan ko‘nikmalar ro‘yxati — ?q=, ?mode=on|off|auto, ?source=skillsmp|skillssh|local bo‘yicha filtrlanadi, sahifalarga bo‘linadi
GET /api/skills/[id] Bitta ko‘nikmani olish
PUT /api/skills/[id] Ko‘nikmani yangilash (nomi, tavsifi, rejimi, sxemasi, ishlov beruvchisi, teglari)
DELETE /api/skills/[id] Ko‘nikmani o‘chirish
POST /api/skills/install Ko‘nikmani xom manifestdan o‘rnatish — so‘rov tanasi: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?}
GET /api/skills/executions Ko‘nikmalarning so‘nggi bajarilishlari ro‘yxati (kirishlar/chiqishlar/davomiylikni o‘z ichiga olgan audit jurnali)
GET /api/skills/marketplace?q=... SkillsMP marketpleysidan qidiruv/ommabop ro‘yxat (skillsmpApiKey sozlamasini talab qiladi)
POST /api/skills/marketplace/install Ko‘nikmani SkillsMP orqali id bo‘yicha o‘rnatish
GET /api/skills/skillssh?q=&limit= skills.sh reyestrida qidirish
POST /api/skills/skillssh/install Ko‘nikmani skills.sh orqali id bo‘yicha o‘rnatish

Autentifikatsiya: boshqaruv seansi/API kaliti. Marketpleys qidiruv yo‘nalishlari boshqaruv autentifikatsiyasi yoki Bearer API kalitini (isAuthenticated) qabul qiladi.


Xotira

Har bir API kaliti / sessiya doirasida ajratilgan doimiy suhbat/faktlar xotirasi ombori.

Metod Yoʻl Tavsif
GET /api/memory Xotiralar roʻyxati — ?apiKeyId=, ?type=, ?sessionId=, ?q=, offset/limit yoki page/limit sahifalash bilan
POST /api/memory Xotira yaratish — soʻrov tanasi Zod orqali tekshiriladi: {content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?}
GET /api/memory/[id] Bitta xotirani olish
DELETE /api/memory/[id] Xotirani oʻchirish
GET /api/memory/health Xotira quyi tizimi holati (DB ulanishi, embeddinglar bekendi, vektor indeksi holati)

Autentifikatsiya: boshqaruv sessiyasi/API kaliti (requireManagementAuth). type enum qiymatlari: FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (src/lib/memory/types.ts ichidagi MemoryTypega qarang).


MCP serveri

OmniRoute 3 ta transport (stdio, SSE, streamable-http) va doirasi cheklangan vositalarga ega ichki Model Context Protocol serveri bilan taqdim etiladi. Quyidagi boshqaruv paneli endpointlari holat/audit maʼlumotlarini oʻqiydi va HTTP transportlarini proksi qiladi.

| Metod | Yoʻl | Tavsif | | ------ | ---------------------- | ------------------------------------------------------------------------------------------------ | -------------------- | | GET | /api/mcp/status | Faollik signali, transport, onlayn holat, soʻnggi chaqiruv, eng koʻp ishlatilgan vositalar, 24 soatlik muvaffaqiyat darajasi | | GET | /api/mcp/tools | name, description, scopes, phase, auditLevel, sourceEndpoints maydonlariga ega MCP vositalari roʻyxati | | GET | /api/mcp/sse | SSE transporti uchun SSE oqimini ochish (MCP oʻchirilgan yoki transport mos kelmasa, 503 qaytaradi) | | POST | /api/mcp/sse | SSE transportida JSON-RPC freymini yuborish | | GET | /api/mcp/stream | Streamable HTTP transportining SSE tomonini ochish (server tashabbusi bilan yuboriladigan xabarlar) | | POST | /api/mcp/stream | Streamable HTTP transportida JSON-RPC freymini yuborish | | DELETE | /api/mcp/stream | Streamable HTTP sessiyasini yakunlash | | GET | /api/mcp/audit | Audit jurnalini soʻrash — ?limit=, ?offset=, ?tool=, ?success=true | false, ?apiKeyId= | | GET | /api/mcp/audit/stats | Umumlashtirilgan audit statistikasi (jami koʻrsatkichlar, muvaffaqiyat darajasi, oʻrtacha davomiylik, eng koʻp ishlatilgan vositalar) |

Autentifikatsiya: sse/stream transportlari MCPga xos autentifikatsiya mexanizmidan foydalanadi (mcp doirasiga ega Bearer API kaliti); status/tools/audit* yoʻnalishlarini boshqaruv panelidan oʻqish mumkin (boshqaruv paneli xostiga kirishdan tashqari qoʻshimcha autentifikatsiya talab qilinmaydi).

Har ikkala HTTP transporti settings.mcpEnabled va settings.mcpTransport bilan boshqariladi — transport mos kelmasa 400, MCP oʻchirilgan holatda esa 503 qaytariladi.


A2A serveri

OmniRoute tekshirish/boshqaruv panelida foydalanish uchun A2A (Agent-to-Agent) JSON-RPC 2.0 endpointini hamda REST o‘ramini taqdim etadi.

JSON-RPC

POST /a2a
Authorization: Bearer your-api-key   # OMNIROUTE_API_KEY o‘rnatilmagan bo‘lsa, ixtiyoriy
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "message/send",
  "params": {
    "skill": "smart-routing",
    "messages": [{"role": "user", "content": "Ushbu dasturlash vazifasini yo‘naltir"}]
  }
}

Qo‘llab-quvvatlanadigan metodlar (barchasi settings.a2aEnabled orqali boshqariladi):

Metod Tavsif
message/send Ko‘nikmani sinxron bajaradi; {task, artifacts, metadata} qaytaradi
message/stream Xuddi shu ko‘nikmalar to‘plamini oqimli SSE orqali bajaradi
tasks/get Vazifani taskId bo‘yicha oladi
tasks/cancel Vazifani taskId bo‘yicha bekor qiladi

Ichki ko‘nikmalar: smart-routing, quota-management, provider-discovery, cost-analysis, health-report.

Agent kartasi

GET /.well-known/agent.json

Ommaviy A2A agent kartasini (nomi, tavsifi, imkoniyatlari, ko‘nikmalar katalogi, autentifikatsiya sxemasi) qaytaradi — ommaviy tarzda 1 soatga keshlanadi. Autentifikatsiya talab qilinmaydi.

REST yordamchilari

Metod Yo‘l Tavsif
GET /api/a2a/status A2A yoqilganligi + vazifa statistikasi + keshlangan agent kartasi xulosasi
GET /api/a2a/tasks Vazifalar ro‘yxati — ?state=submitted|working|completed|failed|cancelled, ?skill=, ?limit= (≤200), ?offset=
POST /api/a2a/tasks (REST yordamchisi sifatida amalga oshirilmagan — JSON-RPC message/send orqali yarating)
GET /api/a2a/tasks/[id] Bitta vazifani olish
POST /api/a2a/tasks/[id]/cancel Vazifani bekor qilish

Autentifikatsiya: REST yordamchilari boshqaruv autentifikatsiyasisiz ishlaydi (boshqaruv panelidan o‘qish mumkin); JSON-RPC /a2a marshruti sozlangan bo‘lsa, Bearer OMNIROUTE_API_KEY kalitidan foydalanadi.


Bulut, baholashlar va tahlil

| Metod | Yo‘l | Tavsif | | ------ | ------------------------------- | ------------------------------------------------------------------------------------------------- | ----------------------------- | ----------------------------------- | | POST | /api/cloud/auth | Bearer kalitini tekshirish va bulut bilan sinxronlash mijozlari uchun niqoblangan provayder ulanishlari + model taxalluslarini qaytarish | | POST | /api/cloud/credentials/update | Bulut bilan sinxronlangan provayderning shifrlangan hisob ma’lumotlarini yangilash | | POST | /api/cloud/model/resolve | Mahalliy marshrutlash jadvali yordamida mantiqiy model identifikatorini aniq provayder/modelga moslashtirish | | GET | /api/cloud/models/alias | Bulut bilan sinxronlashga taqdim etilgan model taxalluslari ro‘yxati | | GET | /api/assess | Eng so‘nggi tahlil toifalarini o‘qish (har bir provayder/model bo‘yicha) | | POST | /api/assess | Tahlilni ishga tushirish — tana: {scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?} | | GET | /api/evals | Ichki baholash to‘plamlari + eng so‘nggi ishga tushirishlar ro‘yxati | | POST | /api/evals | Baholashni ishga tushirish | | POST | /api/evals/suites | Maxsus baholash to‘plamini yaratish — tana evalSuiteSaveSchema orqali tekshiriladi | | GET | /api/evals/suites/[id] | Maxsus baholash to‘plamini olish |

Autentifikatsiya: /api/cloud/auth Bearer kalitini bevosita tekshiradi; boshqa /api/cloud/*, /api/evals/* va /api/assess marshrutlari boshqaruv seansi/API kalitini talab qiladi. /api/assess POST diskriminatsiyalangan birlashma doirasi sxemasi bilan validateBody dan foydalanadi.


ACP (Agent Client Protocol) boshqaruvi

quyi jarayonlar sifatida. Ushbu endpointlar ACP agentlarini aniqlash va maxsus agentlarni roʻyxatdan oʻtkazishni boshqaradi.

Metod Yoʻl Tavsif
GET /api/acp/agents Oʻrnatilish holati, versiyasi va bajariluvchi fayli bilan barcha maʼlum CLI agentlarini (ichki + maxsus) roʻyxatlash
POST /api/acp/agents Maxsus ACP agentini roʻyxatdan oʻtkazish yoki keshni yangilash — soʻrov tanasi: {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} yoki {action: "refresh"}
DELETE /api/acp/agents Maxsus ACP agentini olib tashlash — soʻrov parametri: ?id=<agentId>

Javob namunasi (GET /api/acp/agents):

{
  "agents": [
    {
      "id": "claude",
      "name": "Claude Code CLI",
      "binary": "claude",
      "version": "1.0.45",
      "installed": true,
      "protocol": "stdio",
      "providerAlias": "claude",
      "isCustom": false
    },
    {
      "id": "my-custom-cli",
      "name": "My Custom CLI",
      "installed": false,
      "protocol": "stdio",
      "providerAlias": "my-provider",
      "isCustom": true
    }
  ],
  "cacheTtlMs": 60000,
  "cacheAge": 1234
}

Autentifikatsiya: Boshqaruv sessiyasi (boshqaruv panelidagi auth_token cookie fayli) yoki boshqaruv doirasidagi API kaliti talab qilinadi.

Toʻliq maʼlumot uchun ACP Framework sahifasiga qarang.


Tahlil va kuzatuvchanlik

Marshrutlash, siqish va provayderlar xilma-xilligini kuzatish uchun real vaqt rejimidagi tahlil endpointlari. Ular /dashboard/analytics/* sahifalarini maʼlumot bilan taʼminlaydi.

Avtomatik marshrutlash tahlili

Metod Yoʻl Tavsif
GET /api/analytics/auto-routing Avtomatik marshrutlashning jamlangan statistikasi: jami chaqiruvlar, strategiyalar taqsimoti, darajalar taqsimoti, yetakchi provayderlar
GET /api/analytics/auto-routing?days=7 Vaqt oraligʻi boʻyicha statistika (standart qiymat — 24 soat)

Javob namunasi:

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

Siqish tahlili

Metod Yoʻl Tavsif
GET /api/analytics/compression Siqishning jamlangan statistikasi: tejalgan tokenlar, tejash foizi, rejimlar taqsimoti, mexanizmlardan foydalanish

Javob namunasi:

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

Provayderlar xilma-xilligini kuzatish

Metod Yoʻl Tavsif
GET /api/analytics/diversity Shannon entropiyasiga asoslangan xilma-xillik kuzatuvi: provayderlar taqsimotini oʻlchash orqali yagona nosozlik nuqtalarining oldini oladi

Javob namunasi:

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

Autentifikatsiya: Boshqaruv sessiyasi yoki boshqaruv doirasidagi API kaliti talab qilinadi.


Administrator operatsiyalari

Operatsion boshqaruv uchun faqat administratorlarga moʻljallangan endpointlar.

Metod Yoʻl Tavsif
GET /api/admin/concurrency Joriy parallellik cheklovlarini oʻqish (global + har bir provayder uchun)
POST /api/admin/concurrency Parallellik cheklovlarini yangilash — tana: {global?: number, perProvider?: Record<string, number>}

Autentifikatsiya: Administrator doirasiga ega boshqaruv seansi talab qilinadi.


CLI vositalarini boshqarish

OmniRoute bilan integratsiyalashadigan CLI vositalarini (antigravity, commandCode, devin-cli va boshqalar) boshqaring. Toʻliq roʻyxat uchun Provayder maʼlumotnomasiga qarang.

Metod Yoʻl Tavsif
GET /api/cli-tools/all-statuses Barcha CLI vositalarining holati (oʻrnatilganligi, versiyasi, oxirgi aniqlangan vaqti)
GET /api/cli-tools/status Bitta CLI vositasi uchun batafsil holat (?tool= soʻrovi)
POST /api/cli-tools/apply Vosita uchun yaratilgan konfiguratsiyani yozish (dryRun — oldindan koʻrish; konteynerlashtirilganda 422 + containerEphemeralTarget; migration eski Codex YAML haqida qayd etadi)
GET /api/cli-tools/backups CLI vositalari konfiguratsiyasi zaxira nusxalarini roʻyxatlash
POST /api/cli-tools/backups Barcha CLI vositalari konfiguratsiyalarining zaxira nusxasini yaratish
POST /api/cli-tools/backups Tiklash: soʻrov tanasida {tool, backupId} bilan ayni endpoint ushbu zaxira nusxasini tiklaydi
GET /api/cli-tools/antigravity-mitm Antigravity MITM proksisi holati (antigravity-mitm CLI vositasi)
POST /api/cli-tools/antigravity-mitm/alias antigravity-mitm taxalluslarini sozlash

Autentifikatsiya: Boshqaruv sessiyasi talab qilinadi.


Agent koʻnikmalari

AI agent koʻnikmalarini boshqaring (OpenAI maxsus GPTlariga oʻxshash, ammo agentlar uchun).

Metod Yoʻl Tavsif
GET /api/agent-skills Barcha agent koʻnikmalarini roʻyxatlash (ichki + maxsus)
GET /api/agent-skills/[id] Muayyan agent koʻnikmasini olish
POST /api/agent-skills Maxsus agent koʻnikmasini yaratish — tana: {name, description, prompt, model?, temperature?}
PUT /api/agent-skills/[id] Maxsus agent koʻnikmasini yangilash
DELETE /api/agent-skills/[id] Maxsus agent koʻnikmasini oʻchirish
GET /api/agent-skills/[id]/raw Xom prompt + metamaʼlumotlarni olish (bajarilmasdan)
POST /api/agent-skills/generate Tabiiy tildagi tavsifdan AI yordamida yangi koʻnikma yaratish

Autentifikatsiya: Boshqaruv seansi yoki boshqaruv doirasidagi API kaliti talab qilinadi.


Keshni boshqarish

Semantik kesh va mulohaza yuritish keshini boshqaring.

Metod Yoʻl Tavsif
GET /api/cache Kesh haqida umumiy maʼlumot: jami yozuvlar, topilish darajasi, diskdagi hajmi
GET /api/cache/entries Keshlangan yozuvlar roʻyxati (sahifalash bilan)
DELETE /api/cache/entries Kesh yozuvlarini oʻchirish (soʻrov parametrlari boʻyicha filtrlash)
GET /api/cache/stats Batafsil kesh statistikasi (har bir provayder va model boʻyicha)
GET /api/cache/reasoning Mulohaza yuritish keshining holati (mulohazalarni qayta ijro etish uchun)
DELETE /api/cache/reasoning Mulohaza yuritish keshini tozalash — soʻrov parametrlari: ?toolCallId=<id> (bitta), ?provider=<p> yoki parametrsiz (barchasi)

Autentifikatsiya: Boshqaruv seansi talab etiladi.


Xotira tizimi

Doimiy xotirani (FTS5 + vektorli embeddinglar) boshqaring.

Metod Yoʻl Tavsif
GET /api/memory Xotira yozuvlari roʻyxati (qamrov, tur va qidiruv soʻrovi boʻyicha filtrlash)
POST /api/memory Yangi xotira yozuvini yaratish — soʻrov tanasi: {scope, type, content, metadata?}
GET /api/memory/[id] Muayyan xotira yozuvini olish
PUT /api/memory/[id] Xotira yozuvini yangilash
DELETE /api/memory/[id] Xotira yozuvini oʻchirish
GET /api/memory?q= Xotiradan qidirish (FTS5 + vektor) — statistika shu javobning oʻziga kiritiladi

Autentifikatsiya: Boshqaruv seansi yoki boshqaruv doirasidagi API kaliti talab etiladi.


Vebhuklar

Hodisalar uchun vebhuk obunalarini boshqaring.

Metod Yoʻl Tavsif
GET /api/webhooks Barcha vebhuk obunalari roʻyxati
POST /api/webhooks Vebhuk obunasini yaratish — soʻrov tanasi: {url, events[], secret?, active?}
GET /api/webhooks/[id] Muayyan vebhuk obunasini olish
PUT /api/webhooks/[id] Vebhuk obunasini yangilash
DELETE /api/webhooks/[id] Vebhuk obunasini oʻchirish
GET /api/webhooks/[id]/deliveries Vebhuk uchun yetkazib berishlar tarixini koʻrish (muvaffaqiyat/xatolik jurnali)
POST /api/webhooks/[id]/test Vebhukka sinov hodisasini yuborish

Autentifikatsiya: Boshqaruv seansi talab etiladi.

Barcha hodisa turlari uchun Vebhuklar freymvorkiga qarang.


Koʻnikmalar freymvorki

Koʻnikmalarni (agent kengaytmalari freymvorkini) boshqaring.

Metod Yoʻl Tavsif
GET /api/skills Barcha oʻrnatilgan koʻnikmalarni (ichki + maxsus) roʻyxatlash
POST /api/skills/install Mahalliy yoʻl yoki URL manzilidan koʻnikma oʻrnatish
DELETE /api/skills/[id] Koʻnikmani oʻchirish
PUT /api/skills/[id] Koʻnikmani yoqish yoki oʻchirish — tana: {enabled?: boolean, mode?: "on" | "off" | "auto"}
POST /api/skills/executions Koʻnikmani bajarish — tana: {skillName, apiKeyId, input?, sessionId?}
GET /api/skills/executions Barcha koʻnikmalar uchun bajarilish tarixini roʻyxatlash (?apiKeyId= boʻyicha filtrlash)

Autentifikatsiya: Boshqaruv seansi yoki boshqaruv doirasidagi API kaliti talab qilinadi.

Toʻliq maʼlumot uchun Koʻnikmalar freymvorki boʻlimiga qarang.


Plaginlar

OmniRoute plaginlarini (uchinchi tomon kengaytmalarini) boshqaring.

Metod Yoʻl Tavsif
GET /api/plugins Oʻrnatilgan plaginlarni roʻyxatlash
POST /api/plugins/marketplace/install Marketpleysdan plagin oʻrnatish
DELETE /api/plugins/[name] Plaginni oʻchirish
POST /api/plugins/[name]/activate Plaginni faollashtirish
POST /api/plugins/[name]/deactivate Plaginni faolsizlantirish
GET /api/plugins/[name]/config Plagin konfiguratsiyasini olish
PUT /api/plugins/[name]/config Plagin konfiguratsiyasini yangilash

Autentifikatsiya: Boshqaruv seansi talab qilinadi.

Toʻliq maʼlumot uchun Plaginlar freymvorki boʻlimiga qarang.


Soyali marshrutlash

Provayderlarni soyali / A-B usulida taqqoslash mustaqil REST interfeysi emas — u kombinatsiyalangan marshrutlash orqali sozlanadi (Avtomatik kombinatsiya boʻlimiga qarang). Har bir kombinatsiya boʻyicha taqqoslash koʻrsatkichlari GET /api/combos/metrics orqali taqdim etiladi.


Himoya cheklovlari

Ish vaqtidagi himoya cheklovlarini (shaxsni aniqlash mumkin boʻlgan maʼlumotlarni aniqlash, prompt inyeksiyasini aniqlash, koʻrish vositachiligi) tekshiring. Himoya cheklovlari har bir soʻrovda ishlaydi; har bir chaqiruv uchun ulardan voz kechish x-omniroute-disabled-guardrails soʻrov sarlavhasi orqali amalga oshiriladi — yoqish/oʻchirish holatini doimiy saqlash interfeysi mavjud emas.

Metod Yoʻl Tavsif
GET /api/guardrails Roʻyxatdan oʻtgan himoya cheklovlari va ularning holatini roʻyxatlash (nomi / yoqilganligi / ustuvorligi)
POST /api/guardrails/test Chaqiruvdan oldingi konveyerni namunaviy kirish maʼlumotida sinov tariqasida ishga tushirish — tana: {input, disabledGuardrails?}

Autentifikatsiya: Boshqaruv seansi talab qilinadi.

Toʻliq maʼlumot uchun Xavfsizlik > Himoya cheklovlari boʻlimiga qarang.



Autentifikatsiya

Toʻrtta hisob maʼlumotlari oilasi (boshqaruv paneli seansi, mahalliy CLI tokeni, oma_live_… kirish tokeni, boshqaruv doirasidagi API kaliti) va ularning inferensiya kalitlaridan farqi haqida Boshqaruv autentifikatsiyasi qoʻllanmasiga qarang.

  • Boshqaruv paneli marshrutlari (/dashboard/*) auth_token cookie faylidan foydalanadi
  • Tizimga kirishda saqlangan parol xeshidan foydalaniladi; zaxira variant sifatida INITIAL_PASSWORD ishlatiladi
  • requireLogin sozlamasini /api/settings/require-login orqali yoqish yoki oʻchirish mumkin
  • REQUIRE_API_KEY=true boʻlganda, /v1/* marshrutlari ixtiyoriy ravishda Bearer API kalitini talab qiladi
  • Ushbu maʼlumotnomadagi «boshqaruv tokeni» / «boshqaruv doirasidagi API kaliti» yuqoridagi qoʻllanmada keltirilgan oilalardan birini anglatadi — bu taʼriflanmagan qoʻshimcha maxfiy maʼlumot turi emas

Orqaga mos kelmaydigan oʻzgarish (v3.8.0) — /api/v1/agents/tasks/* va kutish muddatini boshqarish endpointlari endi boshqaruv autentifikatsiyasini (boshqaruv panelining auth_token cookie fayli yoki boshqaruv doirasidagi API kaliti) talab qiladi. Avval ushbu marshrutlarni autentifikatsiyasiz chaqirgan mijozlar 401 Unauthorized javobini oladi. 588a0333 (fix(auth): agent va kutish muddati API'lari uchun boshqaruv autentifikatsiyasi talab qilinsin) commitiga qarang.