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

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

165 KiB
Raw Permalink Blame History

API_REFERENCE (Հայերեն)

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇮🇩 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 · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW



title: "API տեղեկատու" version: 3.8.51 lastUpdated: 2026-08-31

API տեղեկատու

🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇮🇩 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 · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW

OmniRoute API-ի հիմնական տեղեկատուն։ Այն ընդգրկում է հանրային /v1 միջերեսը և առավել հաճախ օգտագործվող կառավարման վերջնակետերը․ մեքենայաընթեռնելի docs/openapi.yaml-ը և src/app/api/-ի ներքո գտնվող երթուղիների ծառը սպառիչ աղբյուրներն են։


Բովանդակություն


Զրույցի լրացումներ

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

{
  "model": "cc/claude-opus-4-6",
  "messages": [
    {"role": "user", "content": "Write a function to..."}
  ],
  "stream": true
}

Հատուկ վերնագրեր

Վերնագիր Ուղղություն Նկարագրություն
X-OmniRoute-No-Cache Հարցում Քեշը շրջանցելու համար սահմանեք true
x-omniroute-no-memory Հարցում Այս հարցման համար հիշողության և հմտությունների ներարկումը բաց թողնելու նպատակով սահմանեք true (արտացոլում է no-cache-ը և խուսափում յուրաքանչյուր կանչի տոկենների/արժեքի լրացուցիչ ծախսից)
X-OmniRoute-Progress Հարցում Առաջընթացի իրադարձությունների համար սահմանեք true
X-Session-Id Հարցում Կպչուն աշխատաշրջանի բանալի՝ արտաքին աշխատաշրջանային համապատասխանության համար
x_session_id Հարցում Ընդունվում է նաև ընդգծման նշանով տարբերակը (ուղղակի HTTP)
X-OmniRoute-Session-Id Հարցում Կանչող կողմի տրամադրած աշխատաշրջանի/զրույցի պիտակ (նաև փոխանցվում է հիշողությանը)։ Առկայության դեպքում անփոփոխ պահպանվում է call_logs.session_tag-ում՝ ըստ աշխատաշրջանի ծախսերի վերագրման համար (#8249), իսկ բացակայության դեպքում երբեք չի սինթեզվում
Idempotency-Key Հարցում Կրկնօրինակների վերացման բանալի (5 վրկ պատուհան)
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 Պատասխան USD-ով այն գումարը, որը քեշի շնորհիվ չի ծախսվել HIT-ի դեպքում (միայն քեշի համընկնումների համար)
X-OmniRoute-Decision Պատասխան Ուղղորդման հետագիծ՝ strategy=<name>; provider=<alias>; latency_ms=<n> (<name>-ը համակցման ռազմավարությունն է, իսկ ոչ համակցված հարցման դեպքում՝ single) — ավարտման պատասխաններում միշտ առկա է

Nginx-ի նշում․ եթե հիմնվում եք ընդգծման նշան պարունակող վերնագրերի վրա (օրինակ՝ x_session_id), միացրեք underscores_in_headers on;։

Ծախսերի հեռաչափության վերնագրեր. առանց հոսքային փոխանցման հաջող պատասխանները նույնպես պարունակում են ծախսերի հեռաչափության X-OmniRoute-* հավաքածուն՝ X-OmniRoute-Response-Cost (USD, ֆիքսված 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 (fail-open)։

Քեշի համընկնման ծախսային իմաստաբանություն. իմաստային քեշում համընկնման դեպքում (X-OmniRoute-Cache-Hit: true) վերին հոսքի կանչ չի կատարվում, ուստի X-OmniRoute-Response-Cost0.0000000000 է (համընկնումը սպասարկելու հավելաճային ծախսը)։ Սկզբնական/հակառակ դեպքում առաջանալիք ծախսն առանձին հաղորդվում է X-OmniRoute-Cost-Saved-ում։ Վճարումների հաշվառման համակարգերը պետք է գումարեն X-OmniRoute-Response-Cost-ը (համընկնումները ոչինչ չեն արժենում), իսկ քեշի վերլուծական համակարգերը կարող են ագրեգացնել X-OmniRoute-Cost-Saved-ը։

Բացառիկ կառավարվող աշխատաշրջանի վարձակալություններ

Բացառիկ կառավարվող աշխատաշրջանի վարձակալումը ըստ ցանկության միացվող, հաճախորդից անկախ երթուղավորման պայմանագիր է․ մեկ ակտիվ սեփականատեր պահում է մեկ համապատասխան OmniRoute կապ։ Այն չի վարձակալում մոդել, չի պահանջում OAuth, չի նույնականացնում որոշակի հաճախորդ և չի պահանջում որոշակի մատակարար։

Նույնականացնող API բանալին պետք է ունենա lease:exclusive շրջանակ և բացահայտ նշված, ոչ դատարկ allowedConnections ցանկ։ Տվյալների բազայի փոփոխման սահմանը բանալու ստեղծման և մասնակի թարմացումների ժամանակ պարտադրում է երկու դաշտերի համատեղ առկայությունը։

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

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

Ձեռքբերման, երկարաձգման և ազատման հաջող պատասխանները ներկայացնում են ժամանակային նշումները, state-ը և ճշգրիտ դրական generation-ը, բայց երբեք՝ ընտրված կապը կամ հավատարմագրերը։ Երկարաձգման և ազատման հարցումները սերունդը փոխանցում են JSON մարմնում․

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

Ակտիվ վարձակալության սեփականատերը կարող է բացահայտ կերպով պահանջել գաղտնիության տեսանկյունից անվտանգ ցուցադրման մետատվյալներ իր ընթացիկ կապակցման համար․

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

Ըստ ցանկության կատարվող այս կարգավիճակի գործողությունը մեկ տվյալների բազայի գործարքի շրջանակում սահմանափակվում է անթափանց սեփականատիրոջ, նույնականացված կառավարվող API բանալու և ճշգրիտ ակտիվ սերնդի միջոցով։ displayName-ը միայն կարգավորված կապի՝ բացատներից մաքրված անունն է․ այն null է, երբ անվտանգ կարգավորված անուն գոյություն չունի։ OmniRoute-ը երբեք այն չի փոխարինում էլփոստի հասցեով կամ ստեղծված հաշվի ինքնությամբ։ Մատակարարի արժեքը ոչ զգայուն ցուցադրման պիտակ է և երբեք՝ ստեղծված համատեղելի մատակարարի նույնացուցիչ։ Հավատարմագրերը, թոքենները, cookie-ները, կապի կամ API բանալու սկզբնական ID-ները, սեփականատիրոջ հեշերը, սահմանափակման գաղտնիքները և ներքին երթուղավորման տվյալները բացառվում են։

Սխալ բանալիով, սխալ սեփականատիրոջով, հնացած սերնդով, բացակայող, ժամկետանց, ազատված և անվավերացված որոնումները բոլորը վերադարձնում են նույն 409 LEASE_FENCE_STALE սխալը՝ առանց կապի մետատվյալների։ Հզորության սպասման պատասխան ստացած հաճախորդը չունի ակտիվ կապակցում, որը հնարավոր լինի ստուգել։ Երբ երթուղավորումը փոխում է ակտիվ վարձակալության կապը, նույն սերունդը շարունակում է վավեր մնալ, իսկ կարգավիճակի հարցումը ատոմային կերպով վերադարձնում է նոր կապակցումը՝ երբեք ոչ հինը։ Գոյություն ունեցող հաճախորդները մնում են անփոփոխ, քանի որ ձեռքբերման, երկարաձգման, ազատման և սպասման պատասխանները պահպանում են իրենց նախկին կառուցվածքները։

Սերվերի այս պայմանագիրը չի փոխում ստանդարտ OpenAI Codex /status-ը։ Ներկայում ստանդարտ Codex-ը հաղորդում է իր մոդելի մատակարարի և ներկառուցված նույնականացման/հաշվի վիճակը, սակայն չի ցուցադրում կամայական անհատական մատակարարի հաշվի մետատվյալներ․ հաճախորդի ապագա ինտեգրումը պետք է կանչի այս գործողությունը և որոշի, թե ինչպես ցուցադրել connection.displayName-ը։

Այնուհետև կառավարվող եզրակացության յուրաքանչյուր հարցում փոխանցում է կառավարման երկու վերնագրերն էլ․

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

Ճշգրիտ սեփականատերը, սերունդը, ակտիվ կապը և նույնականացված API բանալին սահմանափակվում են աջակցվող վերին հոսքի յուրաքանչյուր փորձից անմիջապես առաջ։ Այլ բանալիով սեփականատիրոջ և սերնդի վերարտադրումը ձախողվում է, նույնիսկ երբ այդ բանալին թույլատրում է նույն կապը։ Սեփականատերերի սկզբնական արժեքները չեն պահպանվում, չեն գրանցվում մատյաններում, չեն պահվում հարցման պատկերի մեջ և չեն փոխանցվում վերին հոսք։

Ժամանակավոր մրցակցությունը վերադարձնում է HTTP 429՝ Retry-After-ի և հետևյալի հետ․

{
  "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:<id> Մեկ շարժիչ, երբ այն միացված է, օրինակ՝ engine:rtk։
<combo> Անվանված համակցում, որը նախ համադրվում է ըստ անվան՝ առանց տառաչափը հաշվի առնելու, ապա՝ ըստ ID-ի։

Նշումներ․

  • Անհայտ արժեքներն անտեսվում են (հարցումը երբեք չի մերժվում) լուծումը անցնում է օպերատորների առաջնահերթության սովորական կարգին։
  • Եթե մի քանի համակցումներ ունեն նույն անունը, որոշակի համադրում ստանալու համար փոխանցեք համակցման id-ն։
  • Այն համակցումը, որի անունը off կամ default է, չի կարող ընտրվել ըստ անվան (այդ բանալի բառերը մեկնաբանվում են առաջինը) այդպիսի համակցմանը հղում կատարեք դրա id-ով։
  • Սեղմման գլխավոր անջատիչը խիստ սահմանափակում է․ երբ սեղմումն ամբողջապես անջատված է, այս վերնագիրը չի կարող այն միացնել։

Կիրառված պլանը հետ է արտացոլվում պատասխանի վերնագրում․

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

որտեղ <source>request-header, routing-override, active-profile, auto-trigger, default կամ off արժեքներից մեկն է։


Ներդրումներ

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

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

Հասանելի պրովայդերներ՝ Nebius, OpenAI, Mistral, Together AI, Fireworks, NVIDIA, OpenRouter, Jina AI։

Կատալոգի նույնացուցիչներն ունեն provider/model ձևաչափը (օրինակ՝ jina-ai/jina-embeddings-v5-omni-small)։ Ռեեստրում առկա Jina մոդելների՝ առանց պրովայդերի նշման նույնացուցիչները (օրինակ՝ jina-embeddings-v5-text-small, jina-reranker-v3.5) նույնպես ճանաչվում են։ Jina-ի embed/rerank/classify/segment գործառույթները նախ օգտագործում են կառավարման վահանակի jina-ai հավատարմագրերը․ JINA_AI_API_KEY-ը պահուստային տարբերակ է միայն այն դեպքում, երբ կառավարման վահանակում բանալի չկա։ jina-reader քարտը նախատեսված է միայն Reader / r.jina.ai-ի համար (POST /v1/web/fetch) և երբեք չի սպասարկում ներդրումներ կամ վերադասակարգում։

Ռեեստրի այն մոդելները, որոնք նշում են բազմամոդալ աջակցության առկայությունը, նաև ընդունում են պրովայդերից անկախ՝ մինչև 32 կառուցվածքային տարր։ Մեդիա տարրերի տեսակներն են text, image, audio, video և document։ Դրանց մեդիա source-ը կամ {"type":"url","url":"https://..."} է, կամ {"type":"base64","data":"...","media_type":"..."}։

Jina v5 Omni-ն (jina-ai/jina-embeddings-v5-omni-small, jina-ai/jina-embeddings-v5-omni-nano և ընտանիքի կեղծանունը՝ jina-ai/jina-embeddings-v5-omni → omni-small) նաև ընդունում է Jina-ի բնիկ EmbeddingsV5Request փաստաթղթերը և դրանք անփոփոխ փոխանցում է https://api.jina.ai/v1/embeddings հասցեին․

{
  "model": "jina-ai/jina-embeddings-v5-omni-small",
  "task": "retrieval.query",
  "normalized": true,
  "input": [
    { "text": "a red bicycle" },
    { "image": "https://example.com/bike.png" },
    {
      "content": [{ "text": "caption" }, { "image": "data:image/png;base64,..." }]
    }
  ]
}

Բնիկ { image | audio | video | pdf } արժեքները կարող են լինել հանրային HTTPS URL, data: URI կամ չմշակված base64։ OmniRoute-ը չի փոխակերպում այդ օբյեկտները տողերի և չի ներբեռնում բնիկ պատկերի URL-ները․ Jina-ն ինքն է ստանում հանրային մեդիան։ Jina-ի լրացուցիչ դաշտերը (task, normalized, truncate, embedding_type) փոխանցվում են։ Միայն տեքստի համար նախատեսված Jina SKU-ները նախկինի պես մերժում են ոչ տեքստային փաստաթղթերը։

Անվտանգության և փոխանցման սահմանափակումներ․

  • Հեռակա մեդիայի URL-ները պետք է լինեն հանրային HTTPS։ Կանոնական {type,source:url} տարրերը ներբեռնվում են սերվերի կողմից (վերահղումների կրկնակի վավերացում, ժամանակի սահմանափակում, չափի սահմանափակումներ, հանրային DNS, կապի ամրագրում) և ներդրվում են նախքան պրովայդերի կանչը։ Jina-ի բնիկ {image:"https://..."} տարրերը փոխանցվում են անփոփոխ նույն հանրային HTTPS ստուգումից հետո․ Jina-ն ներբեռնում է URL-ը։
  • Ներդրված base64 մեդիայի ապակոդավորված չափը սահմանափակված է մինչև 8 MiB յուրաքանչյուր տարրի համար և մինչև 16 MiB ամբողջ հարցման համար։

Փոխակերպում ըստ պրովայդերի (կանոնական տարրերը երբեք անփոփոխ չեն փոխանցվում)

  • Jina-ի բազմամոդալ մոդելներ․ վերին մակարդակի յուրաքանչյուր տարր դառնում է մոդալության բանալիով մեկ օբյեկտ (text / image / audio / video / pdf)՝ ներդրված մեդիայի համար օգտագործելով data URI-ներ․ մեկ վեկտոր՝ վերին մակարդակի յուրաքանչյուր տարրի համար։
  • Gemini Embedding 2 ընտանիք․ վերին մակարդակի մեկ զանգվածը դառնում է մեկ բնիկ models/{model}:embedContent հարցում՝ content.parts-ով (text կամ inline_data)։
  • Անհայտ/դինամիկ մոդելները, որոնք չունեն մոդալության հստակ մետատվյալներ, մերժում են կառուցվածքային մուտքագրումը HTTP 400 կոդով։
{
  "model": "jina-ai/jina-embeddings-v5-omni-small",
  "input": [
    { "type": "text", "text": "A red bicycle" },
    {
      "type": "image",
      "source": { "type": "url", "url": "https://example.com/bicycle.png" }
    }
  ],
  "dimensions": 512,
  "encoding_format": "float"
}

Չաջակցվող մոդել/մոդալություն համակցությունները վերադարձնում են HTTP 400՝ տարրը հարկադրաբար փոխակերպելու փոխարեն։ Ոչ մուտքային ընդլայնման դաշտերը հին տողային/թոքենային հարցումներում շարունակում են փոխանցվել անփոփոխ։

# Թվարկել ներդրման բոլոր մոդելները
GET /v1/embeddings

Պատկերների գեներացում

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

{
  "model": "openai/gpt-image-2",
  "prompt": "A beautiful sunset over mountains",
  "size": "1024x1024"
}

Հասանելի մատակարարներ՝ OpenAI (GPT Image 2), xAI (Grok Image), Together AI (FLUX), Fireworks AI, Nebius (FLUX), Hyperbolic, NanoBanana, OpenRouter, SD WebUI (տեղային), ComfyUI (տեղային)։

# Թվարկել պատկերների բոլոր մոդելները
GET /v1/images/generations

Փաստաթղթերի OCR

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

{
  "model": "mistral/mistral-ocr-latest",
  "document": {
    "type": "document_url",
    "document_url": "https://example.com/invoice.pdf"
  }
}

model-ը ընտրում է OCR մատակարարին՝ օգտագործելով provider/model նախածանցը․ միայն մոդելի նույնացուցիչը (օրինակ՝ mistral-ocr-latest) համապատասխանեցվում է իր գրանցված մատակարարին, իսկ բաց թողնված model-ի դեպքում լռելյայն օգտագործվում է Mistral-ը (mistral-ocr-latest)։ Գրանցված մատակարարներ (open-sse/config/ocrRegistry.ts)՝

Մատակարարի id Մոդելի id model-ի արժեքը Նշումներ
mistral mistral-ocr-latest mistral/mistral-ocr-latest (կամ միայն mistral-ocr-latest) Սինքրոն՝ պատասխանը վերադարձվում է անմիջապես վերին հոսքի մեկ կանչից։
azure-document-intelligence prebuilt-read azure-document-intelligence/prebuilt-read Ասինքրոն վերին հոսք (analyze + հարցում)՝ տե՛ս ստորև։
vertex-deepseek-ocr deepseek-ocr-maas vertex-deepseek-ocr/deepseek-ocr-maas Սինքրոն՝ Vertex AI-ի openapi/chat/completions գործընկերային վերջնակետի միջոցով․ նույնականացման/URL-ի համար տե՛ս ստորև։

Բոլոր երեք մատակարարները պատասխանում են Mistral-ի կառուցվածքին համապատասխանող միևնույն մարմնով՝

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

Azure Document Intelligence-ի հարցումների հոսքը

Azure Document Intelligence-ի analyze API-ն ասինքրոն է․ սկզբնական հարցումը մարմնի փոխարեն վերադարձնում է Operation-Location վերնագիր, և արդյունքը պետք է պարբերաբար հարցվի։ Մշակիչը (open-sse/handlers/ocr.ts) այդ URL-ին հարցում է ուղարկում յուրաքանչյուր վայրկյանը մեկ՝ առավելագույնը 30 փորձի ընթացքում, անմիջապես ձախողվում է (չի շարունակում հարցումները) ոչ ok հարցման պատասխանի կամ "failed" կարգավիճակի դեպքում և վերադարձնում է 504, եթե փորձերի սահմանաչափը սպառվելուց հետո գործողությունը դեռ կատարվում է։ Azure-ի վերջնական պատասխանը, նախքան այն կանչողին վերադարձնելը, նորմալացվում է Mistral-ի օգտագործած նույն pages/markdown կառուցվածքին, ուստի հաճախորդի կոդը կարիք չունի մատակարարի համար հատուկ մշակում կիրառելու։

Vertex AI DeepSeek OCR-ի նույնականացումը և վերջնակետի որոշումը

vertex-deepseek-ocr-ը կրկին օգտագործում է Vertex AI-ի նույնականացման նույն մեխանիզմը, որն OmniRoute-ն արդեն աջակցում է զրույցների/պատկերների տրաֆիկի համար (open-sse/executors/vertex.ts) կապի API բանալին կա՛մ Service Account JSON հավատարմագիր է (որը JWT-bearer հոսքի միջոցով փոխանակվում է կարճաժամկետ OAuth հասանելիության տոկենի հետ), կա՛մ արդեն ստեղծված OAuth հասանելիության տոկեն, որն օգտագործվում է առանց փոփոխության։ Վերին հոսքի վերջնակետի URL-ը Vertex-ի ընդհանուր openapi/chat/completions գործընկերային վերջնակետն է, որը կառուցվում է կապի նախագծից և տարածաշրջանից․ բացահայտ նշված providerSpecificData.project/providerSpecificData.region-ը միշտ առաջնահերթ է, հակառակ դեպքում նախագիծը ստացվում է Service Account JSON-ի project_id-ից, իսկ տարածաշրջանի լռելյայն արժեքը us-central1 է։ Երկու որոշումներն էլ կատարվում են open-sse/handlers/ocr.ts-ում (resolveVertexOcrAccessToken, resolveVertexOcrBaseUrl) և օգտագործվում են src/app/api/v1/ocr/route.ts-ի կողմից՝ նախքան հարցումը handleOcr-ին փոխանցելը։


Մոդելների ցանկ

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

→ Վերադարձնում է զրույցի, embedding-ի և պատկերների բոլոր մոդելները + համակցությունները՝ OpenAI ձևաչափով

Մոդելի id-ի նախածանցներ (?prefix=)

Մոդելների մեծ մասը ներկայացվում է մատակարարի նախածանցով։ Ձեր ստացած նախածանցը վերահսկվում է MODELS_CATALOG_PREFIX_MODE գործառույթի դրոշակով և կարող է վերագրվել յուրաքանչյուր հարցման համար՝ հարցման պարամետրի միջոցով․ սա օգտակար է այն հաճախորդի համար, որը ցանկանում է մաքուր ցանկ՝ առանց բոլորի համար սերվերի ընդհանուր կարգավորումը փոխելու․

GET /v1/models?prefix=alias        # յուրաքանչյուր մոդելի համար մեկ id՝ կարճ alias նախածանցով
GET /v1/models?prefix=dual         # երկու ձևերն էլ (սերվերի լռելյայն տարբերակը)
GET /v1/models?prefix=canonical    # միայն մատակարարի ամբողջական id-ի նախածանցը
Ռեժիմ Արտածում է Նշումներ
dual cc/claude-sonnet-4-6 և claude/claude-sonnet-4-6 Լռելյայն։ Երկու id-ներն էլ ուղղորդվում են նույն մոդելին․ սա պահպանվել է, որպեսզի դրանցից որևէ մեկը հաստատագրված պարունակող հաճախորդների կարգավորումները շարունակեն աշխատել։ Կատալոգը մոտավորապես կրկնապատկվում է։
alias cc/claude-sonnet-4-6 Յուրաքանչյուր մոդելի համար մեկ գրառում։ Առանձին alias չունեցող մատակարարները նույնպես արտածում են իրենց գրառումը, ուստի ոչինչ չի կորչում։
canonical claude/claude-sonnet-4-6 Յուրաքանչյուր մոդելի համար մեկ գրառում՝ մատակարարի ամբողջական id-ի նախածանցով։ Առանձին alias չունեցող մատակարարները (օրինակ՝ antigravity/…, agy/…) այստեղ նույնպես արտածում են իրենց միակ id-ն, ուստի ոչինչ չի կորչում։

dual ռեժիմով հայելին հնարավոր է ճանաչել նաև առանց հարցման պարամետրի․ այն պարունակում է առաջնային id-ն մատնանշող parent դաշտ։

Մոդելի ընտրիչ ցուցադրող հաճախորդները պետք է հարցում կատարեն ?prefix=alias-ով․ հենց այսպես է վարվում OmniCopilot VS Code ընդլայնումը։

Առանց մտածողության մոդելային տարբերակներ

Մտածողության հնարավորություն ունեցող Claude մոդելների համար /v1/models-ը նաև ներկայացնում է առանց մտածողության տարբերակ, որի id-ն սկսվում է claude-3-omniroute-no-thinking/ նախածանցով․

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

Այս id-ն ընտրելու դեպքում (օրինակ՝ Claude Code-ի այն կարգավորման մեջ, որը միշտ կցում է thinking բլոկ) այն վերածվում է իրական <provider>/<model>-ի՝ ճնշված reasoning-ով․ /v1/messages ուղու վրա՝ thinking:{type:"disabled"}, իսկ /v1/chat/completions ուղու վրա՝ հեռացված reasoning/reasoning_effort դաշտեր։ Այս տարբերակը ցուցակվում է միայն Claude ընտանիքի այն մոդելների համար, որոնք աջակցում են thinking-ին և ընդունում են disabled-ը (այսինքն՝ օրինակ միայն adaptive ռեժիմով աշխատող և disabled-ը մերժող մոդելները բացառվում են)։ Օպերատորները կարող են յուրաքանչյուր մոդելի համար հարկադրաբար միացնել կամ անջատել այս տարբերակը՝ ModelSpec.noThinkingAlias-ի միջոցով։


Մատակարարի հավելման մանիֆեստ

GET /api/v1/provider-plugin-manifest

Վերադարձնում է Bifrost-ի, CLIProxyAPI-ի և ապագա sidecar երթուղիչների կողմից օգտագործվող՝ JSON-ի համար անվտանգ մատակարարի հավելման մանիֆեստը։ Պատասխանը ստեղծվում է TypeScript-ի մատակարարների ռեեստրից և միտումնավոր չի ներառում OAuth հաճախորդի գաղտնիքները, կատարման միջավայրի որոշարկումը, կատարող ֆունկցիաները, հարցման վերնագրերը և հաշիվների տվյալները։

Օգտագործեք այս վերջնակետը, երբ sidecar-ն աշխատում է հիմնական գործընթացից դուրս և չի կարող ուղղակիորեն ներմուծել 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 (խոսքից տեքստ)
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-ը նաև ընդունում է API բանալիները URL-ում՝ հարցման տողի համատեղելիության (?token=..., ?apiKey=..., ?api_key=..., ?key=...) կամ ստորև փաստաթղթավորված հատուկ /api/v1/vscode/{token}/... վերջնակետերի միջոցով։

# Վերադասակարգում
POST /v1/rerank      { "model": "jina-ai/jina-reranker-v3.5", "query": "...", "documents": ["..."] }

# Jina դասակարգում (Foundation API հավատարմագրեր)
POST /v1/classify    { "model": "jina-embeddings-v5-text-small", "input": ["..."], "labels": ["a", "b"] }

# Jina հատվածավորիչ
POST /v1/segment     { "content": "...", "return_chunks": true }

# Jina որոնում (s.jina.ai; մատակարարի այլանուններ՝ jina-search, jina-ai, jina)
POST /v1/search      { "query": "...", "provider": "jina-search" }

# Չափավորում
POST /v1/moderations { "model": "omni-moderation-latest", "input": "..." }

# TTS — վերադարձնում է audio/mpeg (կամ պահանջված ձևաչափի) բովանդակություն
POST /v1/audio/speech { "model": "openai/tts-1", "input": "Hello", "voice": "alloy" }

# Պատկերի խմբագրում (multipart)
POST /v1/images/edits  -F image=@input.png -F prompt="..." -F mask=@mask.png

# Տեսանյութի / երաժշտության ստեղծում (մատակարարի նախածանցով մոդելի նույնացուցիչ)
POST /v1/videos/generations { "model": "runway/gen-3", "prompt": "..." }
POST /v1/music/generations  { "model": "suno/v3.5",   "prompt": "..." }

Մատակարարներին հատուկ երթուղիներ

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

Մատակարարի նախածանցը բացակայելու դեպքում ավելացվում է ավտոմատ կերպով։ Չհամապատասխանող մոդելների դեպքում վերադարձվում է 400։


Ֆայլերի API

OpenAI-ի հետ համատեղելի ֆայլերի վերջնակետ՝ փաթեթային մուտքագրման/ելքագրման և ֆայլերի՝ ըստ նպատակի վերբեռնման համար։

Մեթոդ Ուղի Նկարագրություն
POST /v1/files Վերբեռնել ֆայլ (multipart՝ file, purpose, expires_after[anchor], expires_after[seconds]) — առավելագույնը 512 MiB
GET /v1/files Ցուցադրել նույնականացված API բանալու ֆայլերը
GET /v1/files/[id] Ստանալ ֆայլի մետատվյալները
DELETE /v1/files/[id] Ջնջել ֆայլը
GET /v1/files/[id]/content Հոսքային եղանակով վերադարձնել ֆայլի չմշակված բովանդակությունը

Նույնականացում․ Bearer API բանալի — ֆայլերի տեսանելիության շրջանակը սահմանվում է յուրաքանչյուր API բանալու համար՝ getApiKeyRequestScope-ի միջոցով։


Փաթեթների 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 բանալու համար։


Որոնման API

Վեբ/որոնման մատակարարների աբստրակցիա (Tavily, Brave, Exa, Serper և այլն)։

Մեթոդ Ուղի Նկարագրություն
GET /v1/search Ցուցադրել կազմաձևված որոնման մատակարարները և նրանց հնարավորությունները
POST /v1/search Կատարել որոնման հարցում — հարցման մարմինը վավերացվում է v1SearchSchema-ով, աջակցում է քեշավորում/միավորում
GET /v1/search/analytics Յուրաքանչյուր մատակարարի արդյունքների/ուշացման/քեշի վիճակագրություն

Նույնականացում․ Bearer API բանալի (extractApiKey + isValidApiKey)։ Որոնման քաղաքականությունը կիրառվում է enforceApiKeyPolicy-ի միջոցով։


Web Fetch API

Կորզեք բովանդակությունը URL-ից՝ կազմաձևված web-fetch մատակարարի միջոցով (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract)։

Մեթոդ Ուղի Նկարագրություն
POST /v1/web/fetch Ստանալ/քերել URL-ը՝ հարցման մարմինը վավերացնելով v1WebFetchSchema-ի միջոցով

Նույնականացում․ Bearer API բանալի (extractApiKey + isValidApiKey)։ Քաղաքականությունը կիրառվում է enforceApiKeyPolicy-ի միջոցով։

Քվոտան հաշվի առնող պահուստային անցում (#8297) երբ հստակ provider նշված չէ, համախումբը (firecrawljina-readertavily-searchtinyfishnimble-search) շրջանցվում է ամրագրված առաջնահերթության կարգով (նախ լրացնելով) արագության սահմանափակման հասած, բայց կազմաձևված մատակարարը բաց է թողնվում՝ հարցումն անմիջապես ընդհատելու փոխարեն, իսկ վերափորձելի/քվոտային վերին հոսքի ձախողման դեպքում (HTTP 429՝ միշտ, 402/403՝ Firecrawl/Tavily/TinyFish-ի քվոտայով պայմանավորված անվճար մակարդակների համար, բայց ոչ Jina Reader-ի համար և երբեք ոչ սովորական 400 սխալ հարցման դեպքում) հարցման կատարման պահին անցում է կատարվում հաջորդ՝ դեռ չփորձված և հավատարմագրեր ունեցող մատակարարին։ Երբ համախմբի բոլոր մատակարարների հնարավորությունները սպառված են, վերջնակետը նախկին ընդհանուր 400-ի փոխարեն վերադարձնում է մեկ 429 (Retry-After վերնագրով)։ Երբ հստակ provider է պահանջվում, լուռ պահուստային անցում չկա արագության սահմանափակման հասած կամ ձախողված հստակ մատակարարի սեփական սխալն է վերադարձվում (429, եթե արագությունը սահմանափակված է, հակառակ դեպքում՝ վերին հոսքի կարգավիճակը)։


WebSocket հոսքային փոխանցում

GET /v1/ws?handshake=1

Վավերացնում է WebSocket-ի արդիականացման ձեռքսեղմումը և վերադարձնում հաղորդալարային արձանագրության հաղորդագրությունների օրինակները (request, cancel)։ Իրական WS ֆրեյմները մշակվում են փաթեթում ներառված WS սերվերի կողմից՝ Next.js-ի երթուղիների աղյուսակից դուրս։

Նույնականացում․ Bearer API բանալի՝ ձեռքսեղմման ընթացքում։

Responses API-ն WebSocket-ի միջոցով (միայն codex)

# Նույն հոսթը և պորտը, ինչ HTTP API-ի համար է (լռելյայն՝ 20128) արդիականացրեք կապը.
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (կամ՝ -H "Authorization: Bearer <OMNIROUTE_API_KEY>")

# Առաջին ֆրեյմը ՊԵՏՔ Է լինի 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 կապ և թունելավորում դեպի wss://chatgpt.com/backend-api/codex/responses wreq-js փոխադրամիջոցի միջոցով։ Ոչ codex մոդելները մերժվում են (codex_ws_provider_required)։ Քվոտայի համօգտագործմամբ երթուղավորման համար օգտագործեք model: "qtSd/<group>/codex/<model>"։ Իրականացված է 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/ նախածանցի)

OpenAI Codex CLI-ն հաճախորդի կողմում վավերացնում է մոդելի անունը, երբ supports_websockets = true, և մերժում է մատակարարի նախածանցով id-ները, ինչպիսին է codex/gpt-5.5-ը (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 CLI-ն դեպի OmniRoute՝ ~/.codex/config.toml-ում ավելացնելով WebSocket-ի աջակցությամբ հատուկ մատակարար (օգտագործեք առանձին CODEX_HOME, որպեսզի գոյություն ունեցող կազմաձևումը չփոփոխեք)։

model = "gpt-5.5"                 # պարզ id — ՈՉ ԹԵ "codex/gpt-5.5"
model_provider = "omniroute"

[model_providers.omniroute]
name = "OmniRoute (WS)"
base_url = "http://localhost:20128/v1"   # առանց վերջավոր շեղագծի․ WS URL-ը ստացվում է սրանից (արտադրական միջավայրում օգտագործեք https/wss)
wire_api = "responses"                    # միակ աջակցվող արժեքը՝ 2026 թ. փետրվարից ի վեր
supports_websockets = true                # միացնում է Responses-over-WS փոխադրամիջոցը
env_key = "OMNIROUTE_API_KEY"             # պարունակում է OmniRoute API բանալին (Bearer)
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 վահանակ)՝ բանալու տիրոջը նրա ծախսերը ցուցադրելու համար։

# Տեքստային ձևաչափ (պատմական պայմանագիրը՝ պարզ տեքստ տերմինալի համար)
curl -H "Authorization: Bearer <your-api-key>" \
  http://localhost:20128/api/usage/om-usage

# Կառուցվածքային ձևաչափ՝ այն, որն օգտագործում է UI-ը
curl -H "Authorization: Bearer <your-api-key>" \
  "http://localhost:20128/api/usage/om-usage?format=json"

Բանալու համար allowUsageCommand-ը պետք է միացված լինի (լռելյայն անջատված է. կառավարման վահանակի API բանալիների կառավարիչն այն փոխարկում է յուրաքանչյուր բանալու համար)։ Առանց դրա վերջնակետը պատասխանում է 403։

?format=json-ը վերադարձնում է տարբերակելի կառուցվածք, որպեսզի կանչողը երբեք տվյալների դաշտ չկարդա մերժման պատասխանից։ Հաջողության դեպքում՝

{
  "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-ով։


Իմաստաբանական քեշ

# Ստանալ քեշի վիճակագրությունը
GET /api/cache/stats

# Մաքրել բոլոր քեշերը
DELETE /api/cache/stats

Պատասխանի օրինակ՝

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

Ազդեցությունը ուշացման վրա

Իմաստաբանական քեշում համընկնումը պատասխանը տրամադրում է քեշից՝ առանց վերին հոսքին կանչ կատարելու, ուստի հաղորդվող X-OmniRoute-Response-Latency-ն գրեթե զրոյական է (անկախ վերին հոսքի սկզբնական ուշացումից)։ Ուշացման նկատմամբ զգայուն հաճախորդները (արտադրողականության չափում, p50/p99 մոնիթորինգ) պետք է ստուգեն պատասխանի X-OmniRoute-Cache-Latency վերնագիրը՝

Արժեք Նշանակություն
synthetic Պատասխանը տրամադրվել է քեշից. ուշացումը վերին հոսքի իրական ժամանակը չէ
(բացակայում է) Պատասխանը ստացվել է վերին հոսքին կատարված իրական կանչից

Քեշի շրջանցում՝ ըստ բանալու

API բանալիները կարող են հրաժարվել իմաստաբանական քեշից կարդալուց՝ cacheDefaultMode-ի միջոցով՝

Արժեք Վարքագիծ
legacy Քեշի սովորական վարքագիծ (լռելյայն)
bypass Ամբողջությամբ բաց թողնել քեշի որոնումը. միշտ դիմել վերին հոսքին

Սահմանեք բանալին ստեղծելիս (POST /api/keys) կամ թարմացնելիս (PATCH /api/keys/[id])՝

{ "cacheDefaultMode": "bypass" }

Շրջանցում՝ ըստ հարցման

Ցանկացած հարցում կարող է շրջանցել քեշը՝ անկախ բանալու կարգավորումներից՝

X-OmniRoute-No-Cache: true

Վահանակ և կառավարում

Կառավարման երթուղիները (/api/*, բացառությամբ հանրային նույնականացման/մուտքի) չեն թույլատրվում սովորական inference API բանալիներով։ Հավատարմագրերի տեսակները, հասանելիության շրջանակները և curl-ի օրինակները՝ Կառավարման նույնականացում։

Նույնականացում

Վերջնակետ Մեթոդ Նկարագրություն
/api/auth/login POST Մուտք
/api/auth/logout POST Ելք
/api/settings/require-login GET/PUT Միացնել կամ անջատել պարտադիր մուտքը

Մատակարարների կառավարում

Վերջնակետ Մեթոդ Նկարագրություն
/api/providers GET/POST Ցուցակագրել / ստեղծել մատակարարներ
/api/providers/[id] GET/PUT/DELETE Կառավարել մատակարարին
/api/providers/[id]/test POST Փորձարկել մատակարարի կապը
/api/providers/[id]/models GET Ցուցակագրել մատակարարի մոդելները
/api/providers/validate POST Վավերացնել մատակարարի կազմաձևումը
/api/providers/bulk POST Զանգվածաբար ավելացնել API բանալիներ ՄԵԿ մատակարարի համար
/api/providers/import POST Ներմուծել մատակարարների տարասեռ ՑՈՒՑԱԿ վերլուծված CSV/JSON ֆայլից (#6836) մասնակի ձախողման արդյունքներ՝ ըստ յուրաքանչյուր տողի
/api/provider-nodes* Տարբեր Մատակարարի հանգույցների կառավարում
/api/provider-models GET/POST/PATCH/DELETE Հատուկ մոդելներ (ավելացնել, թարմացնել, թաքցնել/ցուցադրել, ջնջել)

OAuth հոսքեր

Վերջնակետ Մեթոդ Նկարագրություն
/api/oauth/[provider]/[action] Տարբեր Մատակարարին հատուկ OAuth

Երթուղավորում և կազմաձևում

Վերջնակետ Մեթոդ Նկարագրություն
/api/models/alias GET/POST Մոդելների այլանուններ
/api/models/catalog GET Բոլոր մոդելներն՝ ըստ մատակարարի և տեսակի
/api/combos* Տարբեր Համակցությունների կառավարում
/api/keys* Տարբեր API բանալիների կառավարում
/api/pricing GET Մոդելների գնագոյացում

Օգտագործում և վերլուծություն

Վերջնակետ Մեթոդ Նկարագրություն
/api/usage/history GET Օգտագործման պատմություն
/api/usage/logs GET Օգտագործման մատյաններ
/api/usage/request-logs GET Հարցման մակարդակի մատյաններ
/api/usage/[connectionId] GET Յուրաքանչյուր կապի օգտագործում
/api/usage/token-limits GET/POST/DELETE Յուրաքանչյուր API բանալու թոքենների սահմանաչափի բյուջեներ
/api/usage/model-latency-stats GET Յուրաքանչյուր մատակարարի/մոդելի սահող ուշացման ագրեգացված տվյալներ (միջին/p50/p95/p99, հաջողության գործակից), զտիչներ՝ windowHours/minSamples/maxRows/provider/model (#6873)
/api/usage/cache-health GET call_logs-ի հիման վրա հուշումների քեշի վիճակի ամփոփում՝ գրելու/կարդալու հարաբերակցություն, գրառման չափերի p50/p90/p99 բաշխում, մեծածավալ գրառումների կենտրոնացում, ըստ մոդելների բաժանում և healthy/degraded/thrash/no-data վճիռ, հարցման պարամետրեր՝ range (1h|24h|7d|30d, լռելյայն՝ 24h) և ընտրովի model (#8827)

Կարգավորումներ

Վերջնակետ Մեթոդ Նկարագրություն
/api/settings GET/PUT/PATCH Ընդհանուր կարգավորումներ
/api/settings/proxy GET/PUT Ցանցային պրոքսիի կազմաձևում
/api/settings/proxy/test POST Պրոքսի կապի փորձարկում
/api/settings/ip-filter GET/PUT IP թույլատրման/արգելափակման ցանկ
/api/settings/thinking-budget GET/PUT Մտածողության/դատողության հարցման վերագրման ռեժիմ (անփոփոխ փոխանցում / ինքնաշխատ հեռացում / անհատական / հարմարվողական)։ Սեղմումից անկախ է։ Տե՛ս THINKING_BUDGET.md։
/api/settings/system-prompt GET/PUT Համընդհանուր համակարգային հուշում
/api/settings/compression GET/PUT Համընդհանուր սեղմման կազմաձևում
/api/settings/purge-request-history POST Մաքրել հարցումների մատյանի տողերը և կանչերի մատյանի տեղային արտեֆակտները

Համատեքստ և սեղմում

Վերջնակետ Մեթոդ Նկարագրություն
/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 Սեղմման վերլուծության այլանուն

Մոնիթորինգ

Վերջնակետ Մեթոդ Նկարագրություն
/api/sessions GET Ակտիվ աշխատաշրջանների հետևում
/api/rate-limits GET Յուրաքանչյուր հաշվի հարցումների հաճախականության սահմանաչափեր
/api/monitoring/health GET Առողջական վիճակի ստուգում + մատակարարների ամփոփում (catalogCount, configuredCount, activeCount, monitoredCount)։ Կառավարման տեսքը ներառում է credentialHealth-ը՝ զննման քեշի սկալյարներ, failedConnections, երբ failed>0, և staleDbNonOkCount (SQLite-ի կայուն test_status, ոչ թե չափիչը)։ Տե՛ս MONITORING_GUIDE.md։
/api/cache/stats GET/DELETE Քեշի վիճակագրություն / մաքրում
/api/modality-bridge/stats GET Հիշողության մեջ պահվող attempts, հաջողություններ/bridged, ձախողումներ, քեշի համապատասխանություններ, totalLatencyMs, latencySamples, նմուշների քանակով բաժանված averageLatencyMs և վերջին օգտագործման ժամանակը (վերակայվում է վերագործարկման ժամանակ, կառավարման նույնականացում)
/api/modality-bridge/video/runtime GET Խիստ վստահելի loopback-ի ստուգում՝ կառավարման նույնականացումից/զննումից առաջ․ մաքրված FFmpeg/ffprobe հասանելիություն և տարբերակներ (չպահել)
/api/modality-bridge/video/extract POST Ներքին, նույնականացված, վստահելի loopback բայթերի միջնորդ․ 50 MiB մուտք, սահմանափակ հերթ/32 MiB ելք, 503՝ հզորության սահմանափակում, 499՝ կապի անջատում, 504՝ վերջնաժամկետ․ հանրային վերբեռնման API չէ

Պահուստավորում և արտահանում/ներմուծում

Վերջնակետ Մեթոդ Նկարագրություն
/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 արխիվ

Ամպային համաժամացում

Վերջնակետ Մեթոդ Նկարագրություն
/api/sync/cloud Տարբեր Ամպային համաժամացման գործողություններ
/api/sync/initialize POST Նախաստեղծել համաժամացումը
/api/cloud/* Տարբեր Ամպի կառավարում

Թունելներ

Վերջնակետ Մեթոդ Նկարագրություն
/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 գործիքներ

Վերջնակետ Մեթոդ Նկարագրություն
/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 գործակալներ

Վերջնակետ Մեթոդ Նկարագրություն
/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)։

Կայունություն և հարցումների հաճախականության սահմանաչափեր

Վերջնակետ Մեթոդ Նկարագրություն
/api/resilience GET/PATCH Ստանալ/թարմացնել հարցումների հերթը, կապի դադարը, մատակարարի անջատիչը և սպասման կարգավորումները
/api/resilience/reset POST Վերակայել մատակարարների շղթայական անջատիչները
/api/resilience/model-cooldowns GET Թվարկել ակտիվ՝ ըստ (մատակարար, կապ, մոդել) արգելափակումները՝ դասավորված ըստ մնացած ժամանակի
/api/resilience/model-cooldowns DELETE Մաքրել մոդելի արգելափակումը՝ մարմնում {provider, model} կամ {all: true}՝ ամեն ինչ ջնջելու համար
/api/rate-limits GET Հարցումների հաճախականության սահմանաչափի վիճակ՝ ըստ հաշվի
/api/rate-limit GET Հարցումների հաճախականության սահմանաչափի համընդհանուր կազմաձևում

Բոլոր չորս /api/resilience/* երթուղիները պահանջում են կառավարման նույնականացում (requireManagementAuth)։ Մատակարարի անջատիչի, կապի դադարի և մոդելի արգելափակման ամբողջական տարբերակման համար տե՛ս Կայունություն (ընդլայնված) բաժինը։

Գնահատումներ

Վերջնակետ Մեթոդ Նկարագրություն
/api/evals GET/POST Թվարկել գնահատման հավաքակազմերը / գործարկել գնահատում

Քաղաքականություններ

Վերջնակետ Մեթոդ Նկարագրություն
/api/policies GET/POST/DELETE Կառավարել երթուղավորման քաղաքականությունները

Համապատասխանություն

Վերջնակետ Մեթոդ Նկարագրություն
/api/compliance/audit-log GET Համապատասխանության աուդիտի մատյան (վերջին N գրառումները)

v1beta (Gemini-ի հետ համատեղելի)

Վերջնակետ Մեթոդ Նկարագրություն
/v1beta/models GET Թվարկել մոդելները Gemini ձևաչափով
/v1beta/models/{...path} POST Gemini-ի generateContent վերջնակետը

Այս վերջնակետերը կրկնօրինակում են Gemini-ի API ձևաչափը այն հաճախորդների համար, որոնք ակնկալում են բնիկ Gemini SDK համատեղելիություն։

Ներքին / համակարգային API-ներ

Վերջնակետ Մեթոդ Նկարագրություն
/api/init GET Հավելվածի սկզբնավորման ստուգում (օգտագործվում է առաջին գործարկման ժամանակ)
/api/tags GET Ollama-ի հետ համատեղելի մոդելների պիտակներ (Ollama-ի հաճախորդների համար)
/api/restart POST Նախաձեռնել սերվերի սահուն վերագործարկում
/api/shutdown POST Նախաձեռնել սերվերի սահուն անջատում
/api/system/env/repair POST Վերականգնել OAuth մատակարարի միջավայրի փոփոխականները

Նշում․ Այս վերջնակետերն օգտագործվում են համակարգի կողմից ներքին նպատակներով կամ Ollama-ի հաճախորդների հետ համատեղելիության համար։ Սովորաբար վերջնական օգտատերերը դրանք չեն կանչում։

OAuth միջավայրի վերականգնում (v3.6.1+)

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

{
  "provider": "claude-code"
}

Վերականգնում է կոնկրետ մատակարարի բացակայող կամ վնասված OAuth միջավայրի փոփոխականները։ Վերադարձնում է՝

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

Ձայնագրության տառադարձում

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

Տառադարձեք ձայնային ֆայլերը՝ օգտագործելով կազմաձևված ցանկացած STT մատակարար։ Ուղու առաջին հատվածն ընտրում է բնիկ մատակարարին (openai/…, deepgram/…)։ Այլ մատակարարի մոդելը վերաարտահանող դարպասներն օգտագործում են որակավորված նույնացուցիչ (openrouter/deepgram/nova-3)։

Հարցում՝

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

Պատասխան՝

{
  "text": "Բարև, սա տառադարձված ձայնային բովանդակությունն է։",
  "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 ձևաչափն օգտագործող հաճախորդների համար՝

# Զրույցի վերջնակետ (Ollama ձևաչափ)
POST /v1/api/chat

# Մոդելների ցանկ (Ollama ձևաչափ)
GET /api/tags

Հարցումներն ավտոմատ կերպով փոխակերպվում են Ollama-ի և ներքին ձևաչափերի միջև։

Թոքեն պարունակող VS Code / առանց վերնագրի այլընտրանքային ուղիներ

Օգտագործեք այս այլընտրանքային ուղիները, երբ ինտեգրումը չի կարող ներարկել Authorization վերնագիր, և անհրաժեշտ է API բանալին ներկառուցել բազային URL-ի մեջ։

# OpenAI ոճի կատալոգի այլընտրանքային ուղի
GET /api/v1/vscode/{token}/
GET /api/v1/vscode/{token}/models

# OpenAI ոճի զրույցի այլընտրանքային ուղիներ
POST /api/v1/vscode/{token}/chat/completions
POST /api/v1/vscode/{token}/responses

# Ollama ոճի այլընտրանքային ուղիներ
POST /api/v1/vscode/{token}/api/chat
GET /api/v1/vscode/{token}/api/tags

Օրինակ՝

curl https://your-host.example/api/v1/vscode/YOUR_API_KEY/models
curl -X POST https://your-host.example/api/v1/vscode/YOUR_API_KEY/chat/completions \
  -H "Content-Type: application/json" \
  -d '{"model":"auto","messages":[{"role":"user","content":"բարև"}]}'

Նշումներ՝

  • Թոքեն պարունակող այլընտրանքային ուղիները վերօգտագործում են /v1/*-ի և /api/tags-ի նույն մշակիչները․ պատասխանների կառուցվածքները մնում են նույնը։
  • Նախընտրեք Authorization: Bearer ..., երբ հաճախորդն աջակցում է հատուկ վերնագրեր։
  • URL-ի վրա հիմնված թոքենները կարող են հայտնվել հակադարձ պրոքսիի մատյաններում, զննարկչի պատմության մեջ և OmniRoute-ից դուրս հեռաչափության տվյալներում։ Դրանք դիտարկեք որպես համատեղելիության տարբերակ, այլ ոչ թե նույնականացման լռելյայն ռեժիմ։

Հեռաչափություն

# Ստանալ ուշացման հեռաչափության ամփոփումը (p50/p95/p99՝ ըստ մատակարարի)
GET /api/telemetry/summary

Պատասխան՝

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

Բյուջե

# Ստանալ բյուջեի կարգավիճակը բոլոր API բանալիների համար
GET /api/usage/budget

# Սահմանել կամ թարմացնել բյուջեն
POST /api/usage/budget
Content-Type: application/json

{
  "apiKeyId": "key-123",
  "dailyLimitUsd": 5.00,
  "weeklyLimitUsd": 30.00,
  "monthlyLimitUsd": 100.00,
  "warningThreshold": 0.8,
  "resetInterval": "monthly"
}

Սխեմայի նշումներ (setBudgetSchema)՝ apiKeyId-ն պարտադիր է․ dailyLimitUsd, weeklyLimitUsd կամ monthlyLimitUsd դաշտերից առնվազն մեկը պետք է զրոյից մեծ լինի։ Ընտրովի դաշտեր՝ warningThreshold (01), resetInterval (daily | weekly | monthly), resetTime (HH:MM)։ Հնացած {keyId, limit, period} կառուցվածքը վերադարձնում է 400 Bad Request։

Թոքենների սահմանաչափեր

Յուրաքանչյուր API բանալու համար սահմանվող թոքենային բյուջեներ (տարբերվում են վերևում նշված՝ USD-ի վրա հիմնված բյուջեից)։ Դրանք կիրառվում են անմիջապես հարցման մշակման ուղու վրա․ երբ բանալու ընթացիկ պատուհանի օգտագործումը հասնում է սահմանաչափին, հարցումները մերժվում են 429 Too Many Requests պատասխանով։ Սահմանաչափերը կարող են վերաբերել որոշակի model-ի, provider-ի կամ կիրառվել global կերպով ամբողջ բանալու համար․ երբ հարցմանը համապատասխանում են մի քանի սահմանաչափեր, կիրառվում է ամենախիստը։

# Ցուցադրել բանալու թոքենների սահմանաչափերը (ներառյալ ընթացիկ պատուհանի փաստացի օգտագործումը)
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) պարտադիր են։ scopeValue-ն անհրաժեշտ է, եթե scopeTypeglobal չէ (օրինակ՝ մոդելի id՝ model տիրույթի համար, մատակարարի id՝ provider տիրույթի համար)։ 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-ը ստուգում է իմաստային/ստորագրային քեշը և որոշում combo-ի սեղմման կարգավորումները
  6. Երբ միացված է, կանխարգելիչ սեղմումն իրականացվում է մինչև մատակարարի ձևաչափի փոխակերպումը (lite, Caveman, RTK կամ շերտավորված)
  7. Մատակարարի կատարիչը հարցումն ուղարկում է վերադաս ծառայությանը
  8. Պատասխանը փոխակերպվում է հաճախորդի ձևաչափին (չատի համար) կամ վերադարձվում է անփոփոխ (ներդրումների/պատկերների/ձայնի համար)
  9. Օգտագործումը, սեղմման վերլուծական տվյալները և հարցումների մատյանները գրանցվում են
  10. Սխալների դեպքում պահուստային տարբերակն կիրառվում է combo-ի կանոնների համաձայն

Ճարտարապետության ամբողջական տեղեկատու՝ ARCHITECTURE.md


Combo-ների կառավարում

Ավելի բարձր մակարդակի երթուղավորման combo-ները (որոնք արդեն ամփոփված են /api/combos* բաժնում) կարող են նաև 1:1 համապատասխանեցվել մոդելի id-ի ձևանմուշից՝ թույլ տալով OpenAI ոճի մոդելի id-ն աննկատ վերահղել դեպի combo։

Մեթոդ Ուղի Նկարագրություն
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 Ցուցադրել վեբհուքները (գաղտնիքները քողարկվում են որպես <prefix>...)
POST /api/webhooks Ստեղծել վեբհուք — մարմին՝ {url, events?: ["*"], secret?, description?}
GET /api/webhooks/[id] Ստանալ վեբհուքը
PUT /api/webhooks/[id] Թարմացնել url/events/secret/description դաշտերը
DELETE /api/webhooks/[id] Հեռացնել վեբհուքը
POST /api/webhooks/[id]/test Ուղարկել փորձնական տվյալների փաթեթ վեբհուքի URL-ին և վերադարձնել առաքման կարգավիճակը

Նույնականացում՝ կառավարման աշխատաշրջան/API բանալի (requireManagementAuth)։


Գրանցված բանալիներ (ավտոմատ կառավարում)

Օգտագործվում է բանալիների ավտոմատ կառավարման ենթահամակարգի կողմից՝ հիմքում ընկած մատակարարի/հաշվի համար API բանալիներ տրամադրելու և ռոտացիայի ենթարկելու նպատակով՝ օրական/ժամային քվոտաներով։

Մեթոդ Ուղի Նկարագրություն
GET /api/v1/registered-keys Ցուցադրել գրանցված բանալիները (միայն քողարկված նախածանցը)
POST /api/v1/registered-keys Տրամադրել նոր գրանցված բանալի — մարմին՝ {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}։ Չմշակված բանալին վերադարձվում է միայն մեկ անգամ։ Քվոտայի պատճառով մերժման դեպքում վերադարձվում է 429։
GET /api/v1/registered-keys/[id] Ստանալ գրանցված բանալու մետատվյալները (առանց չմշակված բանալու տվյալների)
DELETE /api/v1/registered-keys/[id] Չեղարկել գրանցված բանալին
POST /api/v1/registered-keys/[id]/revoke Բացահայտ չեղարկման վերջնակետ (նույն ազդեցությունն ունի, ինչ DELETE-ը)

Նույնականացում՝ Bearer API բանալի (isAuthenticated)։ Տե՛ս նաև /v1/quotas/check և /v1/issues/report։


Գործակալների արձանագրություն

Ամպային գործակալների առաջադրանքներ (Claude Code, Codex Cloud, OpenHands և այլն), որոնք հեռակա կարգով կատարվում են OmniRoute-ի օգտատերերի անունից։

Մեթոդ Ուղի Նկարագրություն
GET /api/v1/agents/tasks Առաջադրանքների ցանկ — ոչ պարտադիր ?provider=, ?status=, ?limit= (1500, լռելյայն՝ 50)
POST /api/v1/agents/tasks Ստեղծել առաջադրանք — հարցման մարմինը վավերացվում է CreateCloudAgentTaskSchema-ով (providerId, prompt, source, options?)։ Վերադարձնում է 201՝ առաջադրանքի փաթեթով
DELETE /api/v1/agents/tasks?id=... Ջնջել առաջադրանքը
GET /api/v1/agents/tasks/[id] Կարդալ առաջադրանքը — համաժամանակ թարմացնում է կարգավիճակը վերին մակարդակի ամպային գործակալից, երբ external_id-ը սահմանված է
POST /api/v1/agents/tasks/[id] Տարբերակված գործողություն՝ {action: "approve"}, {action: "message", message} կամ {action: "cancel"}
DELETE /api/v1/agents/tasks/[id] Ջնջել որոշակի առաջադրանք՝ ըստ id-ի

Նույնականացում․ յուրաքանչյուր մեթոդի համար պահանջվում է կառավարման նույնականացում (requireCloudAgentManagementAuth)։ Մինչև v3.8.0 տարբերակը դրանք նույնականացում չէին պահանջում. անհամատեղելի փոփոխության համար տե՛ս 588a0333 կոմիթը։

# Ստեղծել Claude Code ամպային առաջադրանք
curl -X POST http://localhost:20128/api/v1/agents/tasks \
  -H "Authorization: Bearer your-management-key" \
  -H "Content-Type: application/json" \
  -d '{"providerId":"claude-code-cloud","prompt":"Fix the failing test","source":{"repo":"...","branch":"..."}}'

Կառավարման պրոքսիներ

Ելքային HTTP(S)/SOCKS պրոքսիներ, որոնք կարող են նշանակվել մատակարարներին, հաշիվներին կամ գլոբալ մակարդակով։

Մեթոդ Ուղի Նկարագրություն
GET /api/v1/management/proxies Պրոքսիների ցանկ (?id=-ի դեպքում վերադարձնում է մեկը, իսկ ?id=&where_used=1-ի դեպքում՝ նշանակումների գրաֆը)
POST /api/v1/management/proxies Ստեղծել պրոքսի — հարցման մարմինը վավերացվում է createProxyRegistrySchema-ով
PATCH /api/v1/management/proxies Թարմացնել պրոքսին — հարցման մարմինը վավերացվում է updateProxyRegistrySchema-ով (պահանջվում է id)
DELETE /api/v1/management/proxies?id=...&force=1 Ջնջել պրոքսին (նշանակումներն անջատելու համար օգտագործեք force=1)
GET /api/v1/management/proxies/assignments Նշանակումների ցանկ — զտելի է ըստ proxy_id, scope, scope_id դաշտերի․ փոխանցեք resolve_connection_id=<id>՝ կապի ակտիվ պրոքսին որոշելու համար
PUT /api/v1/management/proxies/assignments Նշանակել — հարցման մարմինը վավերացվում է proxyAssignmentSchema-ով ({scope, scopeId?, proxyId?})։ Մաքրում է դիսպետչերի քեշը
PUT /api/v1/management/proxies/bulk-assign Զանգվածային նշանակում — հարցման մարմինը վավերացվում է bulkProxyAssignmentSchema-ով ({scope, scopeIds[], proxyId?})
GET /api/v1/management/proxies/health?hours=24 Պրոքսիի առողջության ամփոփ տվյալներ (հաջողությունների/ձախողումների քանակ, ուշացում)՝ ժամանակային պատուհանի ընթացքում

Նույնականացում․ յուրաքանչյուր երթուղու համար պահանջվում է կառավարման աշխատաշրջան/API բանալի (requireManagementAuth)։

Առաջադրանքի նկարագրության POST /api/v1/management/proxies/[id]/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 դաշտերը․ նույն դաշտերը հասանելի են Կառավարման վահանակ → Կարգավորումներ → Դիմակայունություն բաժնում։

# Մաքրել մեկ մոդելի արգելափակումը
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
  -H "Cookie: auth_token=..." \
  -H "Content-Type: application/json" \
  -d '{"provider":"openai","model":"gpt-4o-mini"}'

# Մաքրել բոլոր արգելափակումները
curl -X DELETE http://localhost:20128/api/resilience/model-cooldowns \
  -H "Cookie: auth_token=..." \
  -d '{"all":true}'

Ամբողջական հայեցակարգային տեղեկանքի և անջատիչի լռելյայն արժեքների համար տե՛ս CLAUDE.md → «Դիմակայունության կատարման ժամանակի վիճակ»։


Հմտություններ

OmniRoute-ը հատուկ գործարկվող մշակիչներով ընդլայնելու հմտությունների շրջանակ, ինչպես նաև մարքեթփլեյսի ինտեգրումներ։

Մեթոդ Ուղի Նկարագրություն
GET /api/skills Ցուցակագրել տեղադրված հմտությունները՝ ?q=, ?mode=on|off|auto, ?source=skillsmp|skillssh|local զտիչներով և էջավորմամբ
GET /api/skills/[id] Ստանալ մեկ հմտություն
PUT /api/skills/[id] Թարմացնել հմտությունը (անուն, նկարագրություն, ռեժիմ, սխեմա, մշակիչ, պիտակներ)
DELETE /api/skills/[id] Ապատեղադրել հմտությունը
POST /api/skills/install Տեղադրել հմտություն չմշակված մանիֆեստից՝ հարցման մարմին՝ {name, version, description, schema:{input, output}, handlerCode, apiKeyId?}
GET /api/skills/executions Ցուցակագրել հմտությունների վերջին գործարկումները (մուտքային/ելքային տվյալներով և տևողությամբ աուդիտի հետագիծ)
GET /api/skills/marketplace?q=... Որոնում/հանրաճանաչների ցանկ SkillsMP մարքեթփլեյսից (պահանջվում է skillsmpApiKey կարգավորումը)
POST /api/skills/marketplace/install Տեղադրել հմտություն SkillsMP-ից՝ ըստ id-ի
GET /api/skills/skillssh?q=&limit= Որոնել skills.sh ռեեստրում
POST /api/skills/skillssh/install Տեղադրել հմտություն skills.sh-ից՝ ըստ id-ի

Նույնականացում․ կառավարման աշխատաշրջան/API բանալի։ Մարքեթփլեյսի որոնման երթուղիներն ընդունում են կա՛մ կառավարման նույնականացում, կա՛մ Bearer API բանալի (isAuthenticated)։


Հիշողություն

Զրույցների/փաստերի մշտական հիշողության պահոց՝ սահմանափակված ըստ API բանալու / աշխատաշրջանի։

Մեթոդ Ուղի Նկարագրություն
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 Հիշողության ենթահամակարգի վիճակ (ՏԲ կապակցում, ներդրումների բեքենդ, վեկտորային ինդեքսի կարգավիճակ)

Նույնականացում․ կառավարման աշխատաշրջան/API բանալի (requireManagementAuth)։ type թվարկում՝ FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (տե՛ս MemoryTypesrc/lib/memory/types.ts-ում)։


MCP սերվեր

OmniRoute-ը տրամադրվում է ներկառուցված Model Context Protocol սերվերով՝ 3 փոխադրման եղանակով (stdio, SSE, streamable-http) և սահմանափակված գործիքներով։ Ստորև նշված կառավարման վահանակի վերջնակետերը կարդում են կարգավիճակի/աուդիտի տվյալները և միջնորդում HTTP փոխադրումները։

Մեթոդ Ուղի Նկարագրություն
GET /api/mcp/status Պարբերական ազդանշան, փոխադրում, առցանց վիճակ, վերջին կանչ, առաջատար գործիքներ, 24-ժամյա հաջողության ցուցանիշ
GET /api/mcp/tools MCP գործիքների ցանկ՝ name, description, scopes, phase, auditLevel, sourceEndpoints դաշտերով
GET /api/mcp/sse Բացել SSE հոսք SSE փոխադրման համար (վերադարձնում է 503, եթե MCP-ն անջատված է կամ փոխադրումը չի համապատասխանում)
POST /api/mcp/sse Ուղարկել JSON-RPC ֆրեյմ SSE փոխադրմամբ
GET /api/mcp/stream Բացել Streamable HTTP փոխադրման SSE կողմը (սերվերի կողմից նախաձեռնված հաղորդագրություններ)
POST /api/mcp/stream Ուղարկել JSON-RPC ֆրեյմ Streamable HTTP փոխադրմամբ
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 (Agent-to-Agent) JSON-RPC 2.0 վերջնակետ, ինչպես նաև REST փաթեթավորիչ՝ զննման/վահանակի օգտագործման համար։

JSON-RPC

POST /a2a
Authorization: Bearer your-api-key   # պարտադիր չէ, եթե OMNIROUTE_API_KEY-ը սահմանված չէ
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "message/send",
  "params": {
    "skill": "smart-routing",
    "messages": [{"role": "user", "content": "Route this coding task"}]
  }
}

Աջակցվող մեթոդներ (բոլորը կախված են settings.a2aEnabled-ից).

Մեթոդ Նկարագրություն
message/send Հմտության համաժամանակյա կատարում․ վերադարձնում է {task, artifacts, metadata}
message/stream Նույն հմտությունների հավաքածուի հոսքային SSE կատարում
tasks/get Ստանալ առաջադրանքն ըստ taskId
tasks/cancel Չեղարկել առաջադրանքն ըստ taskId

Ներկառուցված հմտություններ՝ smart-routing, quota-management, provider-discovery, cost-analysis, health-report։

Գործակալի քարտ

GET /.well-known/agent.json

Վերադարձնում է հանրային A2A գործակալի քարտը (անուն, նկարագրություն, հնարավորություններ, հմտությունների կատալոգ, նույնականացման սխեմա)՝ հանրային քեշավորմամբ 1 ժամով։ Նույնականացում չի պահանջվում։

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 Տրամաբանական մոդելի նույնացուցիչը համապատասխանեցնել կոնկրետ մատակարարի/մոդելի՝ օգտագործելով տեղային երթուղավորման աղյուսակը
GET /api/cloud/models/alias Ցուցակել մոդելների կեղծանունները՝ ամպային համաժամացմանը հասանելի տեսքով
GET /api/assess Կարդալ վերջին գնահատման դասակարգումները (ըստ մատակարարի/մոդելի)
POST /api/assess Գործարկել գնահատում — մարմին՝ `{scope: {type:"all"} {type:"provider", providerId} {type:"model", modelId}, trigger?}`
GET /api/evals Ցուցակել ներկառուցված գնահատման թեստերի հավաքածուները + ամենավերջին գործարկումները
POST /api/evals Սկսել գնահատման թեստի գործարկում
POST /api/evals/suites Ստեղծել հատուկ գնահատման թեստերի հավաքածու — մարմինը վավերացվում է evalSuiteSaveSchema-ով
GET /api/evals/suites/[id] Ստանալ հատուկ գնահատման թեստերի հավաքածուն

Նույնականացում․ /api/cloud/auth-ն ուղղակիորեն վավերացնում է Bearer բանալին, իսկ մյուս /api/cloud/*, /api/evals/* և /api/assess երթուղիները պահանջում են կառավարման նստաշրջան/API բանալի։ /api/assess POST-ն օգտագործում է validateBody՝ տարբերակիչ միավորմամբ տիրույթի սխեմայի հետ։


ACP-ի (Agent Client Protocol) կառավարում

որպես դուստր պրոցեսներ։ Այս վերջնակետերը կառավարում են ACP գործակալների հայտնաբերումը և հատուկ գործակալների գրանցումը։

Մեթոդ Ուղի Նկարագրություն
GET /api/acp/agents Ցուցակագրել բոլոր հայտնի CLI գործակալները (ներկառուցված + հատուկ)՝ տեղադրման կարգավիճակով, տարբերակով և գործարկվող ֆայլով
POST /api/acp/agents Գրանցել հատուկ ACP գործակալ կամ թարմացնել քեշը — հարցման մարմին՝ {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} կամ {action: "refresh"}
DELETE /api/acp/agents Հեռացնել հատուկ ACP գործակալ — հարցման պարամետր՝ ?id=<agentId>

Պատասխանի օրինակ (GET /api/acp/agents)

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

Նույնականացում․ Պահանջվում է կառավարման աշխատաշրջան (վահանակի auth_token cookie) կամ կառավարման տիրույթով API բանալի։

Ամբողջական մանրամասների համար տե՛ս ACP Framework։


Վերլուծություն և դիտարկելիություն

Երթուղավորումը, սեղմումը և մատակարարների բազմազանությունը մշտադիտարկելու իրական ժամանակի վերլուծական վերջնակետեր։ Դրանք ապահովում են /dashboard/analytics/* էջերի աշխատանքը։

Ավտոմատ երթուղավորման վերլուծություն

Մեթոդ Ուղի Նկարագրություն
GET /api/analytics/auto-routing Ավտոմատ երթուղավորման համախմբված վիճակագրություն՝ կանչերի ընդհանուր քանակ, ռազմավարությունների բաշխում, մակարդակների բաշխում, առաջատար մատակարարներ
GET /api/analytics/auto-routing?days=7 Ժամանակային պատուհանով վիճակագրություն (լռելյայն՝ 24 ժ)

Պատասխանի օրինակ

{
  "window": "24h",
  "totalCalls": 1234,
  "strategyBreakdown": {
    "rules": 800,
    "cost": 200,
    "latency": 150,
    "sla-aware": 50,
    "lkgp": 34
  },
  "tierBreakdown": {
    "ultra": 100,
    "pro": 500,
    "standard": 400,
    "free": 234
  },
  "topProviders": [
    { "provider": "openai", "calls": 500, "avgLatencyMs": 850 },
    { "provider": "anthropic", "calls": 300, "avgLatencyMs": 1200 }
  ]
}

Սեղմման վերլուծություն

Մեթոդ Ուղի Նկարագրություն
GET /api/analytics/compression Սեղմման համախմբված վիճակագրություն՝ խնայված թոքեններ, խնայողության %, ռեժիմների բաշխում, շարժիչների օգտագործում

Պատասխանի օրինակ

{
  "window": "24h",
  "totalOriginalTokens": 5000000,
  "totalCompressedTokens": 3500000,
  "totalSavings": 1500000,
  "savingsPct": 30.0,
  "modeBreakdown": {
    "lite": 400,
    "standard": 600,
    "aggressive": 100,
    "ultra": 50,
    "rtk": 84
  },
  "engineBreakdown": {
    "caveman": 800,
    "rtk": 434
  }
}

Մատակարարների բազմազանության հետևում

Մեթոդ Ուղի Նկարագրություն
GET /api/analytics/diversity Շենոնի էնտրոպիայի վրա հիմնված բազմազանության հետևում՝ կանխում է խափանման եզակի կետերը՝ չափելով մատակարարների բաշխվածությունը

Պատասխանի օրինակ

{
  "window": "24h",
  "shannonEntropy": 2.45,
  "maxEntropy": 3.17,
  "diversityRatio": 0.77,
  "providerUsage": {
    "openai": 0.4,
    "anthropic": 0.25,
    "google": 0.2,
    "kiro": 0.15
  },
  "warnings": ["OpenAI accounts for 40% of traffic — consider diversifying"]
}

Նույնականացում․ Պահանջվում է կառավարման աշխատաշրջան կամ կառավարման տիրույթով API բանալի։


Ադմինիստրատիվ գործողություններ

Միայն ադմինիստրատորների համար նախատեսված վերջնակետեր՝ գործառնական կառավարման համար։

Մեթոդ Ուղի Նկարագրություն
GET /api/admin/concurrency Կարդալ զուգահեռության ընթացիկ սահմանաչափերը (ընդհանուր + ըստ մատակարարի)
POST /api/admin/concurrency Թարմացնել զուգահեռության սահմանաչափերը — մարմին՝ {global?: number, perProvider?: Record<string, number>}

Նույնականացում՝ Պահանջվում է ադմինիստրատորի շրջանակով կառավարման աշխատաշրջան։


CLI գործիքների կառավարում

Կառավարեք OmniRoute-ի հետ ինտեգրվող CLI գործիքները (antigravity, chipotle, commandCode, devin-cli և այլն)։ Ամբողջական ցանկի համար տե՛ս Մատակարարների տեղեկատուն։

Մեթոդ Ուղի Նկարագրություն
GET /api/cli-tools/all-statuses Բոլոր CLI գործիքների կարգավիճակը (տեղադրված լինելը, տարբերակը, վերջին հայտնվելը)
GET /api/cli-tools/status Մեկ CLI գործիքի կարգավիճակի մանրամասները (?tool= հարցում)
POST /api/cli-tools/apply Գրանցել գործիքի գեներացված կազմաձևը (dryRun-ը ցուցադրում է նախադիտումը, կոնտեյներային միջավայրում՝ 422 + containerEphemeralTarget, իսկ migration-ը նշում է հին Codex YAML-ը)
GET /api/cli-tools/backups Ցուցակել CLI գործիքների կազմաձևերի պահուստային պատճենները
POST /api/cli-tools/backups Ստեղծել CLI գործիքների բոլոր կազմաձևերի պահուստային պատճենը
POST /api/cli-tools/backups Վերականգնել՝ նույն վերջնակետը, որի մարմնում կա {tool, backupId}, վերականգնում է տվյալ պահուստային պատճենը
GET /api/cli-tools/antigravity-mitm Antigravity MITM պրոքսիի կարգավիճակը («antigravity-mitm» CLI գործիք)
POST /api/cli-tools/antigravity-mitm/alias Կազմաձևել antigravity-mitm-ի այլանունները

Նույնականացում՝ Պահանջվում է կառավարման աշխատաշրջան։


Գործակալների հմտություններ

Կառավարեք ԱԲ գործակալների հմտությունները (նման են 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 Բնական լեզվով նկարագրությունից ԱԲ-ի միջոցով գեներացնել նոր հմտություն

Նույնականացում՝ Պահանջվում է կառավարման աշխատաշրջան կամ կառավարման շրջանակով API բանալի։


Քեշի կառավարում

Կառավարեք իմաստային քեշը և դատողությունների քեշը։

Մեթոդ Ուղի Նկարագրություն
GET /api/cache Քեշի ակնարկ՝ գրառումների ընդհանուր քանակը, դիպումների գործակիցը, սկավառակի վրա զբաղեցրած չափը
GET /api/cache/entries Քեշավորված գրառումների ցանկ (էջավորմամբ)
DELETE /api/cache/entries Ջնջել քեշի գրառումները (զտել ըստ հարցման պարամետրերի)
GET /api/cache/stats Քեշի մանրամասն վիճակագրություն (ըստ մատակարարի, ըստ մոդելի)
GET /api/cache/reasoning Դատողությունների քեշի կարգավիճակը (դատողությունների վերարտադրման համար)
DELETE /api/cache/reasoning Մաքրել դատողությունների քեշը — հարցման պարամետրեր՝ ?toolCallId=<id> (մեկը), ?provider=<p> կամ առանց պարամետրերի (բոլորը)

Նույնականացում․ Պահանջվում է կառավարման աշխատաշրջան։


Հիշողության համակարգ

Կառավարեք մշտական հիշողությունը (FTS5 + վեկտորային ներդրումներ)։

Մեթոդ Ուղի Նկարագրություն
GET /api/memory Հիշողության գրառումների ցանկ (զտել ըստ տիրույթի, տեսակի, որոնման հարցման)
POST /api/memory Ստեղծել հիշողության նոր գրառում — մարմին՝ {scope, type, content, metadata?}
GET /api/memory/[id] Ստանալ հիշողության որոշակի գրառում
PUT /api/memory/[id] Թարմացնել հիշողության գրառումը
DELETE /api/memory/[id] Ջնջել հիշողության գրառումը
GET /api/memory?q= Որոնել հիշողության մեջ (FTS5 + վեկտոր) — վիճակագրությունը ներառված է նույն պատասխանում

Նույնականացում․ Պահանջվում է կառավարման աշխատաշրջան կամ կառավարման տիրույթով API բանալի։


Webhook-ներ

Կառավարեք իրադարձությունների webhook բաժանորդագրությունները։

Մեթոդ Ուղի Նկարագրություն
GET /api/webhooks Բոլոր webhook բաժանորդագրությունների ցանկը
POST /api/webhooks Ստեղծել webhook բաժանորդագրություն — մարմին՝ {url, events[], secret?, active?}
GET /api/webhooks/[id] Ստանալ որոշակի webhook բաժանորդագրություն
PUT /api/webhooks/[id] Թարմացնել webhook բաժանորդագրությունը
DELETE /api/webhooks/[id] Ջնջել webhook բաժանորդագրությունը
GET /api/webhooks/[id]/deliveries Ստանալ webhook-ի առաքումների պատմությունը (հաջողության/ձախողման մատյան)
POST /api/webhooks/[id]/test Ուղարկել փորձնական իրադարձություն webhook-ին

Նույնականացում․ Պահանջվում է կառավարման աշխատաշրջան։

Իրադարձությունների տեսակների ամբողջական ցանկի համար տե՛ս Webhook-ների հենքը։


Հմտությունների շրջանակ

Կառավարեք հմտությունները (ագենտային ընդլայնումների շրջանակը)։

Մեթոդ Ուղի Նկարագրություն
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 բանալի։

Ամբողջական մանրամասների համար տե՛ս Հմտությունների շրջանակ։


Փլագիններ

Կառավարեք 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 Թարմացնել փլագինի կազմաձևումը

Նույնականացում՝ պահանջվում է կառավարման աշխատաշրջան։

Ամբողջական մանրամասների համար տե՛ս Փլագինների շրջանակ։


Ստվերային երթուղավորում

Պրովայդերների ստվերային / A-B համեմատությունը ինքնուրույն REST մակերես չէ. այն կազմաձևվում է համակցված երթուղավորման միջոցով (տե՛ս Ավտոմատ համակցում)։ Յուրաքանչյուր համակցության համեմատական չափորոշիչները տրամադրվում են GET /api/combos/metrics-ի միջոցով։


Պաշտպանական սահմանափակումներ

Դիտարկեք կատարման միջավայրի պաշտպանական սահմանափակումները (PII-ի հայտնաբերում, պրոմփթի ներարկման հայտնաբերում, տեսողական կապակցում)։ Պաշտպանական սահմանափակումները գործարկվում են յուրաքանչյուր հարցման ժամանակ։ Յուրաքանչյուր կանչի համար դրանցից հրաժարումը կատարվում է հարցման x-omniroute-disabled-guardrails վերնագրի միջոցով. միացման/անջատման պահպանվող մակերես չկա։

Մեթոդ Ուղի Նկարագրություն
GET /api/guardrails Ցուցադրել գրանցված պաշտպանական սահմանափակումներն ու դրանց կարգավիճակը (անուն / միացվածություն / առաջնահերթություն)
POST /api/guardrails/test Փորձնական մուտքի վրա նախականչային խողովակաշարի չոր գործարկում — մարմին՝ {input, disabledGuardrails?}

Նույնականացում՝ պահանջվում է կառավարման աշխատաշրջան։

Ամբողջական մանրամասների համար տե՛ս Անվտանգություն > Պաշտպանական սահմանափակումներ։



Նույնականացում

Չորս տեսակի հավատարմագրերի (կառավարման վահանակի աշխատաշրջան, տեղային CLI թոքեն, oma_live_… հասանելիության թոքեն, կառավարման շրջանակով API բանալի) և եզրակացության բանալիներից դրանց տարբերությունների մասին տե՛ս Կառավարման նույնականացում։

  • Կառավարման վահանակի երթուղիները (/dashboard/*) օգտագործում են auth_token cookie
  • Մուտք գործելիս օգտագործվում է պահպանված գաղտնաբառի հեշը, իսկ որպես պահուստային տարբերակ՝ INITIAL_PASSWORD
  • requireLogin-ը կարելի է միացնել կամ անջատել /api/settings/require-login-ի միջոցով
  • /v1/* երթուղիները կարող են պահանջել Bearer API բանալի, երբ REQUIRE_API_KEY=true
  • Այս տեղեկատուում «կառավարման թոքեն» / «կառավարման շրջանակով API բանալի» նշանակում է այդ ուղեցույցում նշված տեսակներից մեկը, այլ ոչ թե լրացուցիչ, չսահմանված գաղտնիքի տեսակ

Հետադարձ համատեղելիությունը խախտող փոփոխություն (v3.8.0)/api/v1/agents/tasks/*-ը և հապաղման ժամանակահատվածի կառավարման վերջնակետերն այժմ պահանջում են կառավարման նույնականացում (կառավարման վահանակի auth_token cookie կամ կառավարման շրջանակով API բանալի)։ Այն հաճախորդները, որոնք նախկինում այս երթուղիները կանչում էին առանց նույնականացման, կստանան 401 Unauthorized։ Տե՛ս 588a0333 կոմիթը (fix(auth): require management auth for agent and cooldown APIs)։