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
185 KiB
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 ¡ đŚđ˛ hy ¡ đŽđŠ id ¡ đłđŹ ig ¡ đŽđš it ¡ đŻđľ ja ¡ đŹđŞ ka ¡ đŽđł 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 ¡ đŚđ˛ hy ¡ đŽđŠ id ¡ đłđŹ ig ¡ đŽđš it ¡ đŻđľ ja ¡ đŹđŞ ka ¡ đŽđł 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/ ááşááśáááááááááááá
ááśááˇááś
- ááśááááááááśááááá
- ááśááá˝ááááááááááśááááááááááááááśá áááťá
- áááˇá ááááááááá
- ááśáááááážáááźáááśá
- OCR áŻáááśá
- ááááá¸áááźááá
- Manifest ááááááˇáá¸áááá˝áááááá˘ááááááááááááś
- Endpoint ááśáááááááś
- Files API
- Batches API
- Search API
- ááśááááááá¸áááśá WebSocket
- ááśáááśáááśáááá˘ááá¸ááźááś ááˇááááá áś
- ááááśáááááááśááááśáá˘áááááá
- ááááśááááááááááá ááˇáááśáááááááááá
- ááśáááááááááá Combo
- Webhooks
- ááźááááááááśáá áťáááááá (ááśááááááááááááááááááááááááááˇ)
- ááˇáá¸ááśá Agents
- ááááźáááá¸ááááááááá
- ááśáááá (áááááá)
- ááááśá
- á˘áááá áá áśá
- áááśááá¸ááá MCP
- áááśááá¸ááá A2A
- Cloud, Evals ááˇá Assess
- ááśááááážáááśáááááž
- ááśááááááááááśááá˘ááááááááśá
ááśááááááááśááááá
POST /v1/chat/completions
Authorization: Bearer your-api-key
Content-Type: application/json
{
"model": "cc/claude-opus-4-6",
"messages": [
{"role": "user", "content": "áááááááťáááśááá˝ááážáááá¸..."}
],
"stream": true
}
Header ááááśáááááá˝á
| Header | ááˇááá | ááśáááˇáááááś |
|---|---|---|
X-OmniRoute-No-Cache |
ááááž | áááááááś true áážáááá¸ááááááááśáááááááśáá |
x-omniroute-no-memory |
ááááž | áááááááś true áážáááá¸ááááááśááááá
áźáá˘áááá
áá
áśá + ááááśááááááśáááááážááá (ááźá
áášáááśáááˇááááážááááśáááááááśáá; áááááśáááśáá
áááśá token/áááááážáááááťáááśáá á
áá¸áá˝áá) |
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 |
ááśááááážááá | ID ááááááśáááááááááá OmniRoute ááśáááááž |
X-OmniRoute-Request-Id |
ááśááááážááá | ID áááááśááááááśááááááśááááááááááž (áá áááááááśáá) |
X-OmniRoute-Version |
ááśááááážááá | áááá build áááá OmniRoute (ááśáááśááˇá áá ) |
X-OmniRoute-Cost-Saved |
ááśááááážááá | á
ááá˝á USD áááááááśáááááááśááááśááá˝áááááááá
ááá HIT (áááááśááááááśáá
áźááááážááááśáááááááśáááááááááźáááááśáááťááááá) |
X-OmniRoute-Decision |
ááśááááážááá | ááśáááááśááááááááááźáá strategy=<name>; provider=<alias>; latency_ms=<n> (<name> ááşááśááťáááááśááááá combo Ꮰsingle áááááśáááááážáááááˇááááááś combo) â ááśáááśááˇá
áá
áá
ááááťáááśááááážáááááááááá
áá |
á áááśáá˘ááḠNginxá áááááˇááážá˘ááááášáááá˘ááááž header áááááśááááááśááźáááááá (á§ááśá ááá
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, ááˇá endpoint ááááááśááś â/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)á
áááááá áááśáááá cache hit: áá ááá semantic cache HIT (
X-OmniRoute-Cache-Hit: true) ááˇáááśáááśáá á áá upstream áá ááźá ááááX-OmniRoute-Response-Costááş0.0000000000(á áááśá áááááá áááááśááááśááááááž hit ááá)á á áááśááážá/á áááśáááááášááážáááśá ááááźáááśáááśáááśáááááśá áááááĄáááá ááááťáX-OmniRoute-Cost-Savedá á˘ááááááážááááśááááˇááááááááˇáááááááááá˝áááźááááťáX-OmniRoute-Response-Cost(hit ááˇáááśáá áááśááá); ááśáááˇááśá cache á˘áśá áááťáX-OmniRoute-Cost-Savedá
ááśááá˝ááááááááááśááááááááááááááśá áááťá
ááśááá˝ááááááááááśááááááááááááááśá áááťá ááşááśááˇá áá áááááśáááááááááźááááá˘áśá áááážááážáááááž ááˇáááˇáá˘áśááááááážáááśááá¸ááááááá ááá áśááááááááááá˝á ááśááááśááááśááááááśáá OmniRoute áááááśáááˇááááˇáá˝áá ááśááˇááá˝ááááźááá ááˇááááááźááąááááśá OAuth ááˇááááááá˘ááááááááśá áááśááá¸ááááááááśááááśááááśáá˝á ááˇáááˇááááááźááąááááśáá˘ááááááááááááśááśááááśááááśáá˝áááá
API key ááááááážáááááśááááśááááááááááśááááááźáááááśáááˇááśáááśá lease:exclusive ááˇáááááá¸
allowedConnections áááááśááááááśáááááśáá
áááśáá ááˇáááˇááááá áááááááááááśáááááááááźáááááśáááˇááááááá˘ááťááááááááááááááśáááá¸ááá˝áááááś áá
ááá
ááááážá key ááˇááááážáá
áá
áťááááááááśááá˝ááááááá
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"}
ááśááááážáááááááááááááááááśááááśáááá˝á ááśááááá ááˇáááśááááááá áááá áśá timestamp, state ááˇá
generation ááˇáááááśáááˇáááááśáá áááťááááááˇááááá áśáááśááááááśáá áŹááááááśááááááśáááááááśááááážááážááĄážáá ááśááááá ááˇáááśááááááá ááááá
generation áá
ááááťá JSON bodyá
{ "action": "renew", "generation": 1 }
{ "action": "release", "generation": 1, "reason": "OWNER_EXIT" }
ááá áśáá lease áááááá˘áśá áááážááťááááśáá áááśááááźá metadata áááááśáááááá áśááááááśáááśááŻáááááśá áááááśáá binding áá áá áťáááááááááááááá˝áá
{ "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"
}
}
áááááááśá status áááááááźááááážááážááááážááá ááááźáááśáá ááťááááááááá owner áááá˘áśáá, managed API key áááááśááááááááááśáá ááˇá
generation áááááááˇáááááśáá áá
ááááťá transaction ááźáááááśáááˇáááááááááá˝áá displayName ááşááááśááááááśááááá
ááśááááááśáááááááśáááááááá
ááśáááááááá ááˇáááśáááááááááśááťáááˇáá
áááááťááááá; ááśááş null áá
áááááˇáááśáááááááááááśáááááááá
ááśáááááááá ááˇáááśáááťáááááˇááśáá OmniRoute ááˇáááááááá˝áááśááá
á˘áá¸ááá áŹá˘ááááááááśááááá¸áááááśáááááážáááá ááááá provider ááşááśááááśááááá áśááááááˇáááážá á ážáááˇááááááś
á˘ááááááááśáá˘ááááááááááááśáááááááááś ááˇáááááźáááśáááááážááĄážáá ááááááśááááááśáá, token, cookie, ID áážááááá connection ᏠAPI
key, owner hash, fencing secret ááˇáááˇáááááááááááááááźáááśáááááťá ááááźáááśáááá
ááá
ááśáááááááááááááááž key ááťá, owner ááťá, generation á
áśáá, ááśáá, ááťáááááá, ááśááááááá ááˇáááśááááážáąááá˘ááááá ááťááááá
ááááĄááááá áťá 409 LEASE_FENCE_STALE ááźá
ááááś áááááááśá metadata ááááááśááááááśááá áááśááá¸áááááááááááśáááá˝áááśááááážááááąáááááá
áśááááááááśá ááˇáááśá binding ááááááááááśáááááá˝áááˇááˇáááááá áá
áááááśááááááááááźáááááśááááááźá lease ááááá
generation áááááá
ááááśáááťááááśá á ážá status áášáááááĄáá binding áááá¸áááá˘áśááźááˇá ááˇáááá binding á
áśáááĄážáá
áááśááá¸áááááááááááśáááááśáááá
ááááˇáááááśááááááźá áá¸áááááááśááááážááá acquire, renew, release ááˇá waiting áááááś
áááááááá¸ááťáááááááśá
ááˇá
áá
áááááśáááááááśááá¸ááááááááˇáááááśááááááźá OpenAI Codex /status áážáááá áá
áá
áťáááááá Codex áážáááśáááśáááá˘ááá¸
á˘áááááááááááźááá ááˇáááááśáááśáááśááááááááááśáá/áááá¸áááááááśááááááśáá˝á áááťááááááˇááááá áśá metadata áááá¸áááá
á˘ááááááááááááśááááśáááááá˝áááśáá˘ááážá
áˇááááá; ááśááá˝ááááá
áźáááśáá˝ááááśááá¸áááááááá
áááááááá ááááźáááá á
áááááááśáááá á ážááááááá
ááśááááźá
áááá áśá connection.displayName áááááááááśá
áááááśáááá ááśááááááž inference áááááśáááááááááá ááááá control header ááśáááá¸áá
X-OmniRoute-Lease-Owner: vlo_<43-base64url-characters>
X-OmniRoute-Lease-Generation: 1
owner, generation, ááśááááááśááááááá ááˇá API key áááááśááááááááááśááááˇáááááśáá ááááźáááśáá ááťááááááááááśáá ááťáááśáááááśááśá upstream áá¸áá˝áááááááśááááá ááśáá áśáááĄážáááˇáááźá owner ááˇá generation ááśáá˝á key ááááá áášááááśááá ááźáááá¸áá áá ááá key áááá˘ááťááááśááąáááááážááśááááááśááááźá ááááśáááááá owner áážáááˇáááááźáááśááááááśááťá, áááááááśááááťá log, áááááśááťáááááťá request snapshot áŹáááááźááááááá upstream ááá
ááśáááááááááááááá˘áśáááá ááááĄáá HTTP 429 ááśáá˝á Retry-After ááˇáá
{
"state": "WAITING_FOR_CAPACITY",
"error": { "type": "lease_error", "code": "LEASE_CAPACITY_UNAVAILABLE" },
"reason": "NO_FREE_ELIGIBLE_CONNECTION",
"retryAfter": 30
}
ááśááááážááááááááśáááááááášáááááś ááááťááááááśáááˇááááˇááááááśááˇáááá á ážááááááááśááááááááśááá˘ááááááźáááśá ááśááááśááááá lease ááááááááááá áááźááá/á˘ááááááááááááśáááááˇáááśáááá, ááśáááˇáááááźáááááśáášááááááśááá, cooldown, quota, ááťáááśá ááˇáááśááááśááááááááááˇááááˇááááááśáááááááá áá áááááááśááśááááážááá OmniRoute áááááśáááááśááá
x-omniroute-compression
ááśáááááááááá˝ááááááśááááá áśáááááááśáááááážáá¸áá˝ááá ááśáá˘áśááˇááśááááááááááťá â áááááážááśáááááááááá˝á routing-combo, profile ááááá, auto-trigger ááˇá Default áááá panelá áááááá
| ááááá | áááááˇáááááśá |
|---|---|
off |
ááááśáááśááááá áśáááááááśáááááážáááá |
default |
Profile Default ááááááááááá panel (ááˇáá˘ážááž profile ááááá)á |
engine:<id> |
Engine áááá˝ááá
áááááśááážáááááž á§. engine:rtká |
<combo> |
Combo áááááśáááááá áááááááźááááááśááááááááťááá (ááˇááááááśáááá˝á˘ááááááááźá ) áááááśááááááśá idá |
á áááśáá
- ááááááááááˇáááááśááááááźáááśáááˇáá˘ážááž (áááážááˇáááááźáááśááááˇááááĄážá); ááśááááááááśááášááááááá ááááśááá˘áśááˇááśááááááˇáááááˇááááááááśá
- áááááˇáááž combo á ááážáááśááááááááźá ááááś ááźááááááźá id áááá combo áážáááá¸ááá˝áááśáááśáááááźááááááááááááá áááśááááśááá
- Combo áááááśáááááá
offáŹdefaultááˇáá˘áśá ááááźáááśááááážááážáááśáááááááá (ááśáááááááášáááśáááááááááźáááśáááááááśáááśááťá); ááźáááááá combo ááááááááśá id ááááááśá - ááťáááśáááááá áśááááááşááśá áááááśááśááááśá áááśáá áá áááááśááááá áśááááááźáááśáááˇáááśááá header áááááˇáá˘áśá áážáááśááśáááá
áááááśááááááśáá˘ááťááááááááźáááśááááááźáááááĄáááá ááááťá response headerá
X-OmniRoute-Compression: <mode>; source=<source>
ááá <source> ááşááśááááááá˝áááááťáá
áááá request-header, routing-override, active-profile, auto-trigger, default Ꮰoffá
Embeddings
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) ááá˘áśá
ááááźáááśááááááááśááááááá áááááˇáááááˇááśá embed/rerank/classify/segment áááá Jina áááážááááááśááááááśááá˘ááááááááśá jina-ai áá¸ááááśáááááááááááááśááťáááˇá; JINA_AI_API_KEY ááśááááážááááááťáááááááťááááá¸áááááˇáááśá key ááááťáááááśááááááááááááááťáááááá ááśá jina-reader ááşáááááśáááá Reader / r.jina.ai (POST /v1/web/fetch) áááťááááá á ážáááˇáááááááááááááś embeddings Ꮰrerank ááá
áááźáááááááťáááááá¸á
áťááááááááááááááśáááśááśáááááá áťáááááááśá ááááá˝áááááśááťáááááśááá
ááśááááááááá˘ááááśáááášáá
ááááá˘ááááááááááááśááśááá áźáááá 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) ááááá˝ááááŻáááśáááááž EmbeddingsV5Request áážááááá Jina ááááá á ážá áááááźáááśááááááśááááááťááááááˇááááááá áá
ááśáá 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 } á˘áśá
ááś URL HTTPS ááśááśááá, data: URI áŹ
base64 áážáá OmniRoute ááˇáááááááá˘ĺŻščąĄááśááááááá
ááśááááá˘áááá áŹááśááá URL ááźáááśááážáááááá â Jina ááśááá
ááááááśááśáááááááááá˝ááŻáá ááśá Jina áááááá (task, normalized, truncate, embedding_type) ááááźáááśá
áááááźáááááá SKU áááá Jina áááááśááááááá˘ááááá áá
áááááˇááááŻáááśááááááˇááááááśá˘áááááá
ááááááááááťáááááˇááśá ááˇáááśááááááźáá
- URL áááááá¸á
ááááśáááááźáááááś HTTPS ááśááśáááá ááśááť
{type,source:url}áááááááśáááááźáááśáááśááá áá ááááááááśááá¸ááá (ááśááááááááááśááááśááááááźááááááĄážáááˇá, timeout, ááááááááááá á, DNS ááśááśááá, ááśáá áśááááááśááááááśáá) ááˇá ááááááááťááááá á á˘ááááááááááááśá ááśááťáážááááá Jina{image:"https://..."}ááááźáááśááááááźáááááááźá áážá áááááśáááá¸ááśááááá˝áááˇááˇááá HTTPS ááśááśáááááźá ááááś; Jina ááśááá URL áááá - áááá base64 áááááááááááááśáá ááááźáááśáááááááááášá 8 MiB áááááśáááˇááźáááááťááá˝áááśááť ááˇá 16 MiB áááááśáááˇááźááááťáááááťááááážááśááááźáá
ááśáááááááááśáá˘ááááááááááááś (ááśááťáááááááśáááˇááááááááźáááśááááááźááááááááááááśáááśáááááśááááááźááá)á
- áááźááááá áťáááááááśááááá Jinaá ááśááťáááááˇáááááźááá¸áá˝ááááááśáááśá˘ĺŻščąĄáá˝ááááááśá key ááśááááááááááááááśá
(
text/image/audio/video/pdf) áááááááž data URI áááááśáááááááááááááááááááśáá; áááˇá ááááá˝áááááťá áá˝áááśááťáááááˇáááááźáá - áááááźá Gemini Embedding 2á á˘áśáááááááˇáááááźááá˝áááááśáááśáááážáážááááá˝á
models/{model}:embedContentáááááśácontent.parts(textáŹinline_data)á - áááźáááááˇáááááśáá/ááśááááááááááááśáááááśááˇáááááááááááááááááááśáá áááśááááśáá áášááááˇááá input áááááśááá ááśááááááááááá 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 áááá˝ááąááááśááááááááááááááśááťá ááśáááááááááááááááááˇááááááś input áá áážáááážááááá˘áááá/token á áśááá áášáááááááááááśáááááááááśáááśáááááśááááááźáá
# ááśáááááá¸áááźááá embedding ááśááá˘áá
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)á
| ááááááááśááá˘ááááááááááááś | ááááááááśáááááźááá | ááááá 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 |
ááááśááááá ááśááááá
áááťá
áááá
ááááááź openapi/chat/completions áááá Vertex AI â ááźááážáááśáááááááááááśááááśááááááááááśááá˘ááááááááśá/URLá |
á˘ááááááááááááśááśáááá¸áááážáááááááťááá˝ááˇáááááááááááśáááááááááźá Mistral ááźá ááááśá
{
"pages": [{ "index": 0, "markdown": "# Extracted text..." }],
"model": "mistral-ocr-latest",
"usage_info": { "pages_processed": 1 }
}
ááá áźáááááááážááááá Azure Document Intelligence
API analyze áááá Azure Document Intelligence ááşá˘ááááśáááááá áááážááááźááááááźáááááĄááááááśáááˇáááááá
Operation-Location áááá˝ááąáááá˝ááˇáááááá á ážáááááźáááááááááážááážáááá¸ááá˝áááśáááááááá ááááááˇáá¸áááááááśá
(open-sse/handlers/ocr.ts) ááááááážá URL ááááááááśáááá˝áááˇááśáḠáá áźáááá 30 áá á ážááááśáááááááśáá (ááˇá
ááááááááááážááá) áá
áááááśááááážááááá¸ááśáááááááážáááˇááááááś ok áŹááśáááááśáááśá "failed" ááˇááááááźáááááĄáá 504 áááááˇáááž
áááááˇáááááˇááśááá
áááááážáááśá áááááśáááá¸á
ááá˝áááśáááááśááśááááááśááááááááááźáááśááááážá˘ááá ááśááááážáááá
áťáááááááááá Azure ááááźáááśá
áááážáąááááśááááááááááááááśáááźá
ááááśáá
áášááááááá pages/markdown ááá Mistral ááááž ááťáááááááááźáááááĄáááá
á˘áááá á
ááźá
ááááááźááááśááá¸ááááááááˇáá
áśáááśá
ááááááááśáá˘ááááááááááááśáá¸áá˝ááááśáááá¸ááˇáááááá
ááśááááááááááśááá˘ááááááááśá ááˇáááśááááááá áááťá áááá áááááá Vertex AI DeepSeek OCR
vertex-deepseek-ocr áááážáĄážáááˇáááźáááśááááááááááśááá˘ááááááááśá Vertex AI ááźá
ááááśááá OmniRoute ááśáááááá˝á
á ážááááááśáá
á
ááśá
ááááááá/ááźáááśá (open-sse/executors/vertex.ts)á API key ááááááśááááááśáá ááşááś
ááááááśááááááśááá˘ááááááááśá Service Account JSON (áááááááźáááśáááááźáááááźáášáá
áźáááááž OAuth á˘áśááťááśááááá¸ááśááááááá áźá JWT-bearer)
áŹááśááźáášáá
áźáááááž OAuth áááááśáááááážááá˝á
ááˇáááááźáááśááááážááśááááááśáá URL á
áááťá
áááá
áááááááááááááśááážááşááś
á
áááťá
áááá
ááááááźááźáá
openapi/chat/completions áááá Vertex áááááááźáááśáááááážááá¸áááááá ááˇá
áááááááááááśááááááśáá â providerSpecificData.project/providerSpecificData.region áááááśááááááśááááśááááśáááááááááśáá˘áśááˇááśá;
áážááˇáááźá
áááááá ááááááááááźáááśááááḠproject_id áááá Service Account JSON á ážáááááá
ááááž 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=)
áááźáááááśáá
ááážáááááźáááśááááá áśáááááá ááťáááááááááá˘ááááááááááááśá ááťááááááááá˘áááááá˝áááśáááááźáááśááááááááááááá
feature flag MODELS_CATALOG_PREFIX_MODE á ážáá˘áśá
áááˇáááááśááááááááá áááááśáááááážáá¸áá˝áá ááśáááá
query parameter â ááśááśááááááááááááááśáá client áááá
ááááśáááááá¸ááá˘áśá áááááˇáááááśááááááźáááśááááááááźááśáá server
áááááśááá˘áááááááááááá
GET /v1/models?prefix=alias # id áá˝áááááťááá˝ááááźááá â ááťááááá alias áááá¸
GET /v1/models?prefix=dual # ááááááááśáááá¸á (ááááśááážááááá server)
GET /v1/models?prefix=canonical # ááśáááááťááááá provider-id áááááá
| áááá | áááá áá | ááááááááááśáá |
|---|---|---|
dual |
cc/claude-sonnet-4-6 ááˇá claude/claude-sonnet-4-6 |
ááááśááážáá id ááśáááá¸áááśáááááźááá ááśáááááźááááááá˝áá ááśááááźáááśááááááśááťááážáááá¸áąáá config áááá client áááááśááááááááááááááśáá˝ááááááááśáááá áááááážáááśáá ááśáááážáąáá catalog ááśáááá ááááá ááááááááá |
alias |
cc/claude-sonnet-4-6 |
ááśááťáá˝áááááťááá˝ááááźáááá á˘ááááááááááááśáááááááśá alias ááśá áááááĄáááá áááááá ááááśááťáááááá˝ááá ááźá ááááááááśáá˘ááá¸ááááźáááśáááśáááááááá |
canonical |
claude/claude-sonnet-4-6 |
ááśááťáá˝áááááťááá˝ááááźááááááááááťááááá provider-id ááááááá á˘ááááááááááááśáááááááśá alias ááśá
áááááĄáá (á§. antigravity/âŚ, agy/âŚ) áááááá
áá id áááá˝ááááááá˝ááááá
áá¸áááááá ááźá
ááááááááśáá˘ááá¸ááááźáááśáááśáááááááá |
mirror ááááťááááá dual ááá˘áśá
ááááźáááśáááááśáááááááˇáá
áśáááśá
áááááž query parameter áááááá ááśááśá field parent
áááá
ááá˘áťááá
ááśáá id á
ááááá
client ááááááá áśáá§ááááááááážááážááááźááááá˝áááááááž ?prefix=alias â áááááśá˘ááá¸ááá
ááááááááááá OmniCopilot áááááśáá VS Code áááážá
áááśáááááááááźááááááááˇáááˇá
áááááśáááááźááá Claude áááá˘áśá
ááˇáááśá /v1/models ááááááááááááśááááśáááááá áááááˇáááˇá ááááá ááá id ááááááśááááźáááśáááśááááťááááá claude-3-omniroute-no-thinking/á
claude-3-omniroute-no-thinking/<provider>/<model>
ááśááááážááážá id ááá (á§. ááááťá config áááá Claude Code ááááááááááááśáá block thinking) áášááááááááśáááááĄáááá
ááśáá <provider>/<model> ááˇáááááśáá áááááˇáááśááááááá â thinking:{type:"disabled"} áá
ááž path /v1/messages áŹáááááśáá field reasoning/reasoning_effort áá
ááž path /v1/chat/completionsá áááśáááááááááááááźáááśáááśááááááááśáááááźáááááááťááááááźá Claude áááááśááááááśáááˇá ááˇá ááá˝ááá disabled áááťááááá (ááźá
áááá á§. áááźááá adaptive-only ááááááˇááá disabled ááˇáááááźáááśáááśáááááá
áźááá)á áááááˇáááááˇááá˘áśá
ááááááážá áŹááˇááááśááááááááááááááśáááááźááááá¸áá˝ááááśáááá ModelSpec.noThinkingAliasá
áááśáá¸á ááááááááááááˇáá¸áááá˝áá˘ááááááááááááś
GET /api/v1/provider-plugin-manifest
ááááĄáááááśáá¸á ááááááááááááˇáá¸áááá˝áá˘ááááááááááááśáááááśáááťáááááˇááśááááááśáá JSON ááááááážááá Bifrost, CLIProxyAPI ááˇá ááááááá sidecar ááśáááá˘ááśááá ááśááááážáááááááźáááśáááááážááá¸ááááá¸á áťááááááá˘ááááááááááááś TypeScript á ážááááá ááááśááˇááá˝ááááá áźááááááááśáá OAuth áááááááśááá¸áááááá ááśááááááááśááááˇááááśáááááááážáááśá ááťáááśááááááˇááááᡠááááááśááááž ááˇáááˇáááááááááá¸áĄážáá
ááááž endpoint ááá áá
ááá sidecar áááážáááśááá
áááá
áááážáááśááá á ážáááˇáá˘áśá
import
open-sse/config/providerPluginManifestRegistry.ts áááááááśááááśáá
Endpoint áááááśááááśáááááźáááááś
| ááˇáá¸ááśááááá | ááááźá | áááááááááśá |
|---|---|---|
| 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 (ááááááá˝á/inpaint) |
| POST | /v1/videos/generations |
ááśáááááážááá¸ááá˘áźááá OpenAI |
| POST | /v1/music/generations |
ááśáááááážáááááááá¸ááá OpenAI |
| POST | /v1/audio/transcriptions |
OpenAI Audio (STT) |
| POST | /v1/audio/speech |
OpenAI TTS (ááááĄáááááášáááśáá˘áźáá¸áááź) |
| POST | /v1/rerank |
ááśááááááááśáááĄážáááˇáááá Cohere/Voyage |
| POST | /v1/classify |
ááśáá
áśááááááśáá Jina (api.jina.ai) |
| POST | /v1/segment |
ááááááˇáá¸áááá
ááááááá Jina (segment.jina.ai) |
| POST | /v1/moderations |
OpenAI Moderations |
| GET | /v1/models |
OpenAI |
| POST | /v1/messages/count_tokens |
Anthropic |
| GET | /v1beta/models |
Gemini |
| POST | /v1beta/models/{...path} |
Gemini generateContent |
| POST | /v1/api/chat |
Ollama |
| GET | /api/v1/vscode/{token}/ |
ááááááááááááááśáááśááśáĄáťá OpenAI |
| GET | /api/v1/vscode/{token}/models |
ááááááááááááááśááááźááá OpenAI |
| POST | /api/v1/vscode/{token}/chat/completions |
ááááááááááááááśá OpenAI áááááśá token |
| POST | /api/v1/vscode/{token}/responses |
ááááááááááááááśá OpenAI Responses áááááśá token |
| POST | /api/v1/vscode/{token}/api/chat |
ááááááááááááááśá Ollama áááááśá token |
| GET | /api/v1/vscode/{token}/api/tags |
ááááááááááááááśáááááśá Ollama áááááśá token |
Route POST ááśááá˘áááááážááááááááźá
ááááśá Bearer your-api-key + áááášáááśá JSON áááááśááááááááááśááááá Zod (v1RerankSchema, v1ModerationSchema, v1AudioSpeechSchema ááśáážá ááźááážá src/shared/validation/schemas.ts)á 4xx áášáááááźáááśáááááĄáá áá
áááááśááááááááááśáá schema áááśáááá
áááááśáááááśááá¸áááááááááááˇáá˘áśá
ááááśáá Authorization: Bearer ... ááśá OmniRoute ááááá˝ááá API key áá
ááááťá URL ááśááááááśáááááźáááááśááśáá˝á query string (?token=..., ?apiKey=..., ?api_key=..., ?key=...) Ꮰendpoint /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": "..." }
Route á˘ááááááááááááśááśá áááááĄáá
POST /v1/providers/{provider}/chat/completions
POST /v1/providers/{provider}/embeddings
POST /v1/providers/{provider}/images/generations
ááťáááááá˘ááááááááááááśáášáááááźáááśááááááááááááááááááááááᡠáááááˇááážááśááá áááźááááááááˇáááááźáááááśáášáááááĄáá 400á
Files API
á áááťá áááá áááááááśáááŻáááśááááááááźáááááśááśáá˝á OpenAI áááááśááááśááááá áźá/áááá ááááśááśá á ááˇáááśáááááťááŻáááśááĄážáááśááááááááá
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| POST | /v1/files |
ááááťááŻáááśááĄážá (multipart: file, purpose, expires_after[anchor], expires_after[seconds]) â á˘ááˇááááś 512 MiB |
| GET | /v1/files |
ááśáááááá¸áŻáááśááááááśáá API key áááááśááááááááááśááá˘ááááááááśá |
| GET | /v1/files/[id] |
ááśáááááˇááááááááááśáááááŻáááśá |
| DELETE | /v1/files/[id] |
ááťááŻáááśá |
| GET | /v1/files/[id]/content |
áááááá¸ááá˝áŻáááśááážáááááĄááááááˇá |
ááśááááááááááśááá˘ááááááááśá: Bearer API key â áŻáááśáááááźáááśááááááááˇááśáááśáááśá
áááááĄááááśá API key ááśáááá getApiKeyRequestScopeá
Batches API
ááśááááážáááśáááśááśá ááááááááźáááááśááśáá˝á OpenAIá
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| POST | /v1/batches |
ááááážáááśá
á â áá˝áááážááááźáááśááááááááááśááááá v1BatchCreateSchema (input_file_id, endpoint, completion_window) |
| GET | /v1/batches |
ááśáááááá¸ááśá á |
| GET | /v1/batches/[id] |
ááśáááááááśáááśáááśá
á + request_counts |
| DELETE | /v1/batches/[id] |
ááťáááśá ááááááśááááá áá/áááśááá |
| POST | /v1/batches/[id]/cancel |
ááááááááśá ááááááááťááááážáááśá |
ááśááááááááááśááá˘ááááááááśá: Bearer API keyá ááśá áááááźáááśááááááááˇááśáááśáááśá áááááĄááááśá API keyá
Search API
áááááśááá˘ááźáá¸áááááśááá˘ááááááááááááśááˇá/ááááááá (Tavily, Brave, Exa, Serper ááśáážá)á
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /v1/search |
ááśáááááá¸á˘ááááááááááááśááááááááááááśáááááááá ááśáááááááá + áááááááśá |
| POST | /v1/search |
áááážáááśááááá˝áááááááá â áá˝áááážááááźáááśááááááááááśááááá v1SearchSchema ááˇáááśááááááśááááááśááťáááááťáááááśáááááááśáá/ááśááá˝ááááá
áźáááááž |
| GET | /v1/search/analytics |
ááááˇááˇá ááá˝ááááááá/áááááááááážááá/ááááśáááááááśááááśáá˘ááááááááááááśáá¸áá˝áá |
ááśááááááááááśááá˘ááááááááśá: Bearer API key (extractApiKey + isValidApiKey)á áááááśááááááááááááááźáááśáá˘ááťááááááśáááá enforceApiKeyPolicyá
Web Fetch API
áááááááśááˇááśáḠURL ááśááááá˘ááááááááááááś web-fetch áááááśáááááááá ááśáááááááá (Firecrawl, Jina Reader, Tavily Extract, TinyFish Fetch, Nimble Extract)á
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| POST | /v1/web/fetch |
ááśááá/áááááźáááˇáááááááḠURL â body ááááźáááśááááááááááśááááá v1WebFetchSchema |
ááśááááááááááśááá˘ááááááááśá: Bearer API key (extractApiKey + isValidApiKey)á áááááśáááááááźáááśáá˘ááťááááááśáááá enforceApiKeyPolicyá
ááśáááááźááá
ááááážááááááťááááááˇáááźááá¸ááźááś (#8297): áá
áááááˇáááśááááááśáá provider ááśááááśáá pool
(firecrawl â jina-reader â tavily-search â tinyfish â nimble-search) áášáááááźáááśá
ááááááśááááśáááááśááá˘áśááˇááśáááá
(fill-first) â á˘ááááááááááááśáááááśáááááááá
ááśáááááááá áááťááááááááźáááśááááááˇáá˘ááááś áášáááááźááááá
áááá˝ááąááááśááááá
áááááážááááśáá á ážáááśááááśááááḠupstream áááá˘áśá
ááśááááááĄážáááˇáááśá/ááśáááááášáááźááś
(HTTP 429 ááśááˇá
áá
; 402/403 áááááśáááááááˇááĽáááˇááááááááááśáááááááááźááśáááá Firecrawl/Tavily/TinyFish â
ááˇáááááááááśáá Jina Reader á ážáááááˇáááááááááśáááááážááťáááááááś 400 áĄážá) áášááááááá
á˘ááááááááááááśáááááśáááááááśáááááááśááááááśáá ááˇáááˇáááśááááśáááśááááá áá
ááááááážáááśááááážá áá
áááá˘ááááááááááááśááśááá˘ááááááťá
pool á˘ááááááááśá endpoint áášáááááĄáá 429 áááá˝á (ááśáá˝á header Retry-After)
áááá˝ááąáá 400 ááźáá
áá¸ááťáá áá
áááááááž provider ááśááááśáá áášáááˇáááśá
ááśáááááźááá
ááááážááááááťááááááááśááááá â á˘ááááááááááááśááśááááśáááááááááźáááśááááááˇáá˘ááááś áŹáááśááá
áášááááá áśáááá áťááááááááá˝á (429 áááááˇááážááááźáááśááááááˇáá˘ááááś áážááˇáááźá
áááááá ááşááááśáááśá
upstream)á
ááśááááááá¸áááśá WebSocket
GET /v1/ws?handshake=1
áááááááááśáá WebSocket upgrade handshake á ážáááááĄááááśáá§ááśá ááááá wire protocol (request, cancel)á WS frames ááśáááááááááááźáááśááááážáááśáááááááśááá¸ááá WS áááááááśááááááśáá˝á áá
ááśááááá
ááśááśá route áááá Next.jsá
ááśááááááááááśááá˘ááááááááśá: Bearer API key ááááťáá˘ááĄáťáááá handshakeá
Responses API ááśá WebSocket (áááááśáááá codex)
# áááśááá¸ááá host:port ááźá
ááááśáášá HTTP API (ááááśááážá 20128); áááĄážááááááˇáááśááááááśááá
wscat -c "ws://localhost:20128/v1/responses?api_key=<OMNIROUTE_API_KEY>"
# (áŹá -H "Authorization: Bearer <OMNIROUTE_API_KEY>")
# frame ááááźáááááźáááááś response.createá
{ "type": "response.create", "model": "gpt-5.5", "input": [ { "role": "user", "content": "hi" } ] }
ááááźáááḠResponses-API-over-WebSocket ááááźáááśáááááśáá ááááśá
áááťááá
codex (ChatGPT
backend)á ááśááááśáááá
ááž port ááźá
ááááśáášá API/dashboard ááśáááááźá /v1/responses,
/responses ááˇá /api/v1/responsesá áá
ááž frame response.create ááááźá ááś
áááááááááśááá˘ááááááááśá + áááá
áááśáááá bridge codex-responses-ws ááśáááááťá áááážááážá
ááśááááááśáá codex OAuth áá˝á á ážááááááźáááśááááźáááźááá
wss://chatgpt.com/backend-api/codex/responses
ááśáááá transport wreq-jsá áááźááááááááˇááááááś codex áášáááááźáááśááááˇááá (codex_ws_provider_required)á
áááááśáá quota-share routing ááźáááááž model: "qtSd/<group>/codex/<model>"á ááśáá˘ááťáááááá
ááááťá
app/server-ws.mjs + scripts/dev/responses-ws-proxy.mjs + src/app/api/internal/codex-responses-ws/route.tsá
ááśááááááááááśááá˘ááááááááśá: Bearer API key ááááťáá˘ááĄáťáááá handshakeá áááśááá¸ááá HTTP áááááááśááááááśáá˝á (server-ws.mjs)
ááááźáááááś entrypoint áááááááťááááážáááśá (ááśáááááśááážá ááśááś entrypoint áá
áááááśá app/server-ws.mjs)á
ááááááááśáááááźáááá áááážááááááááśáá ChatGPT áážá (ááááśáááťááááá codex/)
OpenAI Codex CLI áááááááááśááááááááááźááááá
ááááá client áá
ááá
supports_websockets = true á ážá áááˇáááááááááááśáááááááśáááťáááááá˘ááááááááááááś ááźá
ááś
codex/gpt-5.5 (The 'codex/gpt-5.5' model is not supported when using Codex with a ChatGPT account)á áááážááááááááśáá áážá (á§. gpt-5.5)á bridge áááá OmniRoute
ááśáááááá codex ááźá
ááááááśáááááááśáááááááááśáááážááĄážáááˇáááś codex model
(resolveCodexWsModelInfo) ááťáááááááááźáááśááááźáááźááá
upstream â ááááá¸ááś
gpt-5.5 áážá áášáááááźáááśááááááźááá
á˘ááááááááááááśááááááááááśá HTTP áááááá
ááśáááááááá ááśáááááááá OpenAI Codex CLI
á
ááá˘áťá Codex CLI áá
OmniRoute áááááááááá˘ááááááááááááśááááśáááááá˝ááááááśáááá WebSocket
áá
ááááťá ~/.codex/config.toml (ááááž CODEX_HOME ááśá
áááááĄáá áážáááá¸áááááśáááśááááááśáá
áááááśáááááááá
ááśáááááááááááááśáááááśáá)á
model = "gpt-5.5" # ááááááááśáááážá â ááˇáááá "codex/gpt-5.5"
model_provider = "omniroute"
[model_providers.omniroute]
name = "OmniRoute (WS)"
base_url = "http://localhost:20128/v1" # ááááśááááááś slash áá
ááśáá
áťá; WS URL ááááźáááśáááááážáá
áááá¸ááá (ááááž https/wss ááááťá production)
wire_api = "responses" # ááááááááá˝áááááááááśááááá
áśááááśáááḠFeb 2026
supports_websockets = true # áážááááážáááśá transport Responses-over-WS
env_key = "OMNIROUTE_API_KEY" # áááááśááťá OmniRoute API key (Bearer)
export OMNIROUTE_API_KEY=sk-... # OmniRoute API key áá˝á (key ááśáá˝á áááááˇáááž 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 + token) |
ááśááááááááááśááá˘ááááááááśá: áá Bearer API (isAuthenticated)á
ááśááááážááááśááááááááá˝ááŻá (/api/usage/om-usage)
áá API ááśáá˝áá˘áśá áážáááśááááážááááśáá ááˇáááźááś ááááśáááááá˝áááááááś ááśá áááááˇáááááźáááśáááśááááááááááśááá˘ááááááááśááááááśááááśááááááááááá áááááşááś endpoint ááá client (CLI áŹááááśáá OmniCopilot) áááážáážáááá¸áááá áśáááá áśááááá˘ááá¸ááśáá áááśááááááá˝áááá
# ááááááá˘ááááá (ááˇá
áá
áááááśáá¸ááťá â á˘áááááááááááśáááááśáá terminal)
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 áááá dashboard
áážá áŹááˇáááśáááááśáááááá¸áá˝áá)á áááááˇááážááˇááážááá endpoint áášááááážáááááá 403á
?format=json ááááĄáááá
ááśáááááááááááááśááááááśáááááśááááťáááááś ááźá
ááááá˘áááá á
áášáááˇáá˘áśáááśáááˇáááááááá¸
ááśááááˇááááĄážáá áá
áááááááááá
{
"allowed": true,
// ááśááááá
áááááááśááááážááááážááááááááááśááááážááááśááááááťááá˝ááá (USD áááá
áśááááá/áááá
áśááááááśá á)á
"personal": {
"dailySpentUsd": 1.25,
"dailyLimitUsd": 5,
"dailyResetAtIso": "âŚ",
"weeklySpentUsd": 8,
"weeklyLimitUsd": 20,
"weeklyResetAtIso": "âŚ" /* ⌠*/,
},
// ááˇáááááśáááźááśáááá provider áááááśááááážá Ꮰnull áá
áááááˇáááśááááśáá˘ááá¸ááááźáááśááááááśááťáááááťá cacheá
"provider": {
"connectionId": "âŚ",
"provider": "claude",
"plan": "âŚ",
"quotas": {/* ⌠*/},
},
// ááˇáááááśááááá connection ááśááá˘áá áážáááá¸áąáá UI á˘áśá
áááá áśá provider ááśá
ááážááá
áááááááááśá
"providers": [
{ "connectionId": "âŚ", "provider": "claude" /* ⌠*/ },
{ "provider": "codex" /* ⌠*/ },
],
}
áá
ááááááˇááá (401 ááááˇááááášáááááźá / 403 ááˇáááááźáááśáá˘ááťááááśá) route ááááááááášáááááĄáá
{ "allowed": false, "error": { "message": "âŚ" } } â personal/provider áááááśáááááááśááááťááááááá
(ááááááźáááśáá˘ááťááááśá áááťááááááˇáááśááááá˝áááśáááˇáááááá) ááşááśááááśáááśáááťááá¸ááśááááˇááá á ážáááśááááááááá JSON
áááťááááááááá˘áśá
áááá
ááááááśáááśáááśáááááááśáá
ááśááááááááááśááá˘ááááááááśá: áá Bearer API ááááśáááááá˝áááááá˘áááá á
áááááááźáááśááááááááááśááááá isValidApiKey â ááá ááˇááááááś
ááááááááááááá (/api/keys/âŚ) áá ááááá
ááááááźáááśáááśáááśáááá requireManagementAuthá
Cache ááśáá˘áááááá
# ááá˝áááááááˇáᡠcache
GET /api/cache/stats
# áááá˘áśá cache ááśááá˘áá
DELETE /api/cache/stats
á§ááśá áááááśááááážáááá
{
"semanticCache": {
"memorySize": 42,
"memoryMaxSize": 500,
"dbSize": 128,
"hitRate": 0.65
},
"idempotency": {
"activeKeys": 3,
"windowMs": 5000
}
}
áááááááśáááážááśáááşá
ááśááááážáááááťá semantic cache (HIT) áááááááśááááážááááḠcache áááááááśáááśáá á
áá
upstream
áĄážá ááźá
áááá X-OmniRoute-Response-Latency áááááśáááśáááśáááááśááááááááˇáááźááá
(áááááˇáááˇááá¸ááśáááşá upstream áážá)á client áááááá
áˇáááááťáááśááá
ááááááśáááşá
(ááśáááśááááááááááááááśá ááśááááá˝áááˇááˇááá p50/p99) áá˝áááááˇááˇááá response header
X-OmniRoute-Cache-Latencyá
| ááááá | á˘áááááá |
|---|---|
synthetic |
ááśááááážáááááááźáááśáááááááḠcache; ááśáááşáááˇááááááśáááááááś upstream ááˇáááááśáááá |
| (ááˇáááśá) | ááśááááážááááá¸ááśáá á áá upstream ááˇáááááśáá |
ááśááááá cache ááśááááá¸áá˝áá
áá API á˘áśá
áááážáááˇááááážááśáá˘áśááḠsemantic cache ááśáááá cacheDefaultModeá
| ááááá | áĽááˇááśáá |
|---|---|
legacy |
áĽááˇááśáá cache ááááááś (ááááśááážá) |
bypass |
ááááááśááááááááááááťá cache ááśááááááťá á ážááááááá á áá upstream |
ááááááá
áááááááážááá (POST /api/keys) áŹáááážáá
áá
áťááááááááśá (PATCH /api/keys/[id])á
{ "cacheDefaultMode": "bypass" }
ááśáááááááśááááážáá¸áá˝áá
áááážááśáá˝áá˘áśá áááá cache ááśá áááááˇáááˇááá¸ááśááááááááá
X-OmniRoute-No-Cache: true
ááááśááááááááááá ááˇáááśáááááááááá
Route áááááśááááśáááááááááá (/api/* áážáááááá auth/login ááśááśááá) ááˇáááááźáááśá áááááááˇááááˇááá
API key áááááśáá inference ááááááśááá áááááśáááááááá credential, scope ááˇáá§ááśá ááá curl ááźááážáá
ááśááááááááááśááá˘ááááááááśááááááśááááśááááááááááá
ááśááááááááááśááá˘ááááááááśá
| Endpoint | Method | ááśáááˇáááááś |
|---|---|---|
/api/auth/login |
POST | á áźááááḠ|
/api/auth/logout |
POST | á áśáá áááá¸áááḠ|
/api/settings/require-login |
GET/PUT | ááˇá/áážáááśááááááźááąááá áźááááḠ|
ááśáááááááááá Provider
| Endpoint | Method | ááśáááˇáááááś |
|---|---|---|
/api/providers |
GET/POST | áááá áśáááááḠ/ ááááážá provider |
/api/providers/[id] |
GET/PUT/DELETE | ááááááááá provider áá˝á |
/api/providers/[id]/test |
POST | ááśáááááááśááááááśáááááá provider |
/api/providers/[id]/models |
GET | áááá áśáááááḠmodel áááá provider |
/api/providers/validate |
POST | áááááááááśáá config áááá provider |
/api/providers/bulk |
POST | áááááá API key ááśá ááážááááááśáá provider áááá˝á |
/api/providers/import |
POST | ááśáá áźáááááḠprovider á ááááťááá¸áŻáááśá CSV/JSON áááááśá parse (#6836); áááááááááśááááááááááááááááśáááá˝ááá¸áá˝áá |
/api/provider-nodes* |
áááááá | ááśáááááááááá node áááá provider |
/api/provider-models |
GET/POST/PATCH/DELETE | model ááááśáááááá˝á (áááááá áááážáá áá áťááááááááśá ááśáá/áááá áśá ááťá) |
ááá áźá OAuth
| Endpoint | Method | ááśáááˇáááááś |
|---|---|---|
/api/oauth/[provider]/[action] |
áááááá | OAuth ááśááááśáááááááśáá provider |
ááśáááááá Route ááˇá Config
| Endpoint | Method | ááśáááˇáááááś |
|---|---|---|
/api/models/alias |
GET/POST | ááááááááááááááśááááá model |
/api/models/catalog |
GET | model ááśááá˘ááááśá provider + áááááá |
/api/combos* |
áááááá | ááśáááááááááá combo |
/api/keys* |
áááááá | ááśáááááááááá API key |
/api/pricing |
GET | ááááááááá model |
ááśááááážááááśáá ááˇáááśáááˇááśá
| Endpoint | Method | Description |
|---|---|---|
/api/usage/history |
GET | ááááááááˇááśááááážááááśáá |
/api/usage/logs |
GET | áááááá áááťááśááááážááááśáá |
/api/usage/request-logs |
GET | áááááá áááťáááááˇáááááž |
/api/usage/[connectionId] |
GET | ááśááááážááááśááááśáááśááááááśáááá¸áá˝áá |
/api/usage/token-limits |
GET/POST/DELETE | áááˇááśáááááá ááá˝á token áááááśáá API key áá¸áá˝áá |
/api/usage/model-latency-stats |
GET | ááááˇááˇáááťáááˇáááťááááááááááááááśáááśá provider/model (ááááá/p50/p95/p99, á˘ááááśáááááá); áááááá windowHours/minSamples/maxRows/provider/model (#6873) |
/api/usage/cache-health |
GET | ááá
áááá¸ááááááá˘ááá¸ááááśáááśá prompt-cache ááž call_logs â áááśááśáááááááá/á˘áśá, ááśáá
ááá
áśáááá áááááá p50/p90/p99, ááá áśááááááśááááááá
ááážá, ááśááááá
ááááśá model ááˇáááśáááˇááˇá
áááá healthy/degraded/thrash/no-data; query params range (1h|24h|7d|30d, ááááśááážá 24h) ááˇá model ááśááááážá (#8827) |
ááśáááááá
| Endpoint | Method | Description |
|---|---|---|
/api/settings |
GET/PUT/PATCH | ááśááááááááźáá |
/api/settings/proxy |
GET/PUT | ááśáááááááá ááśáááááááá proxy áááááśá |
/api/settings/proxy/test |
POST | ááśáááááááśááááááśáá proxy |
/api/settings/ip-filter |
GET/PUT | ááááḠIP áááá˘ááťááááśá/áááááááśáá |
/api/settings/thinking-budget |
GET/PUT | ááááááááááĄážáááˇáááźá ááááž áááááśáá thinking/reasoning (passthrough / auto-strip / custom / adaptive)á áŻáááśááááá¸ááśááááá áśááá ááźááážá THINKING_BUDGET.mdá |
/api/settings/system-prompt |
GET/PUT | system prompt ááá |
/api/settings/compression |
GET/PUT | ááśáááááááá ááśááááááááááśááááá áśááááá |
/api/settings/purge-request-history |
POST | áááá˘áśááá˝áááááááááá áááťááááž ááˇá artifact áá call-log ááźáááááśá |
Context ááˇáááśááááá áśáá
| á áááťá á áťá (Endpoint) | ááˇáá¸ááśááááá | ááá áááá¸ááˇáááááś |
|---|---|---|
/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 | á˘áśááááááááá áááááśáááśááááááááśáááážá ááˇáááśááááááśááťá ááśááááááááááááśáááááááˇá |
/api/context/combos |
GET/POST | ááśáááááá¸/ááááážááááááááśááááá áśáá |
/api/context/combos/[id] |
GET/PUT/DELETE | ááááááśááááá˘áˇá/áááážáá áá áťááááááááśá/ááťááááááááśááááá áśáá |
/api/context/combos/[id]/assignments |
GET/PUT | ááááááááááááśááááá áśáááá áąááááááááááááááááźá |
/api/context/analytics |
GET | ááááááááááááááśááááááśááááśáááˇááśáááśááááá áśáá |
ááśááááá˝áááˇááˇááá
| á áááťá á áťá (Endpoint) | ááˇáá¸ááśááááá | ááá áááá¸ááˇáááááś |
|---|---|---|
/api/sessions |
GET | ááśáááśáááśáááááááááá |
/api/rate-limits |
GET | ááááááááá˘ááááśáááááśáááááá¸áá¸áá˝áá |
/api/monitoring/health |
GET | ááśáááˇááˇáááááťáááśá + ááá
áááá¸ááááááá˘ááááááááááááś (catalogCount, configuredCount, activeCount, monitoredCount)á ááˇáááááśáááááááááááá˝áááśá credentialHealthá áááááááááśáááááááśáááááááśááááááśááááááááˇááˇááá, failedConnections áá
ááá failed>0 ááˇá staleDbNonOkCount (test_status ááśááááááááá SQLite ááˇááááááśáááááśáááá)á ááźááážá MONITORING_GUIDE.mdá |
/api/cache/stats |
GET/DELETE | ááááˇááˇááááśáááááááśáá / áááá˘áśá |
/api/modality-bridge/stats |
GET | attempts ááááťáá˘áááá
áá
áśá, ááśááááááá/bridged, ááśááááśááá, ááśáá
áźááááážááááśáááááááśááááśááááááá, totalLatencyMs, latencySamples, averageLatencyMs áááááááśááśáá
ááá˝áááááśá ááˇááááááááśáááážááááśááá
áťáááááá (ááááááĄážáááˇááá
áááá
áśáááááážááĄážáááˇá; ááśáááśáááśááááááááááśááááˇááááˇááááááááá) |
/api/modality-bridge/video/runtime |
GET | ááśáááˇááˇááá trusted-loopback áááśááášáááášá ááťáááśááááááááááśááááˇááááˇááááááááá/ááśááááááááˇááˇááá; ááááśáááśáá˘áśá áááážááśá ááˇááááááááá FFmpeg/ffprobe áááááśááááá˘áśáááááááśáááážá (ááˇááááááśááťá) |
/api/modality-bridge/video/extract |
POST | áááá˝ááááááśááááááááśááááááááááśááááˇáááᡠááˇáááś trusted-loopback áááááśáááááážááááááááťá; ááˇááááááá
áźá 50 MiB, áá˝ááááá
áśáááśááááááááá/ááˇááááááá
áá 32 MiB, 503 áááááśááá˘áááááááááśá, 499 áááááśááááśáááááśá
á ááˇá 504 áááááśááááťááááááááá; ááˇááááááś API ááááťááŻáááśááĄážáááśááśááááá |
ááśááááááťáááťá ááˇáááśáááśáá áá/ááśáá áźá
| Endpoint | Method | Description |
|---|---|---|
/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 |
ááśááááážááááśáááááááž Cloud
| Endpoint | Method | Description |
|---|---|---|
/api/sync/cloud |
áááááá | áááááˇáááááˇááśááááážááááśáááááááž Cloud |
/api/sync/initialize |
POST | á áśáááááážáááśááááážááááśááááá |
/api/cloud/* |
áááááá | ááśáááááááááá Cloud |
Tunnels
| Endpoint | Method | Description |
|---|---|---|
/api/tunnels/cloudflared |
GET | á˘áśáááááśáááśááááĄážá/áááážáááśááááá Cloudflare Quick Tunnel áááááśááááááśááááááááááá |
/api/tunnels/cloudflared |
POST | áážá áŹááˇá Cloudflare Quick Tunnel (action=enable/disable) |
/api/tunnels/ngrok |
GET | á˘áśáááááśáááśááááážáááśááááá ngrok Tunnel áááááśááááááśááááááááááá |
/api/tunnels/ngrok |
POST | áážá áŹááˇá ngrok Tunnel (action=enable/disable) |
á§ááááá CLI
| Endpoint | Method | Description |
|---|---|---|
/api/cli-tools/claude-settings |
GET | ááááśáááśá Claude CLI |
/api/cli-tools/codex-settings |
GET | ááááśáááśá Codex CLI |
/api/cli-tools/droid-settings |
GET | ááááśáááśá Droid CLI |
/api/cli-tools/openclaw-settings |
GET | ááááśáááśá OpenClaw CLI |
/api/cli-tools/runtime/[toolId] |
GET | ááááááážáááśá CLI ááźáá |
ááśááááážááááááá CLI áá˝áááśáá installed, runnable, command, commandPath, runtimeMode, reasoná
ááááśááááśá ACP
| Endpoint | Method | Description |
|---|---|---|
/api/acp/agents |
GET | ááśáááááá¸ááááśááááśááááááśááááážáááśááá˘áá (ááśáááááśáá + ááááśáááááá˝á) ááśáá˝áááááśáááśá |
/api/acp/agents |
POST | ááááááááááśááááśáááááśáááááá˝á áŹáááážáąááááááśáááááááśááááááśááááážáááááááĄážáááˇá |
/api/acp/agents |
DELETE | ááťáááááśááááśáááááśáááááá˝áááśááááśáááśáááááááááá˝á id |
ááśááááážááá GET áá˝áááśá agents[] (id, name, binary, version, installed, protocol, isCustom) ááˇá summary (total, installed, notFound, builtIn, custom)á
ááśáááá ááˇáááááááááá˘ááááś
| Endpoint | Method | Description |
|---|---|---|
/api/resilience |
GET/PATCH | ááá˝ááá/áááážáá áá áťááááááááśááá˝áááááž áááááááááá áśáááááśááááááśáá á§áááááááááśá ááááááá¸ááááá˘áááááááá ááˇáááśááááááááśááááá áśá |
/api/resilience/reset |
POST | áááááá§áááááááááśá ááááááá¸ááááá˘áááááááááĄážáááˇá |
/api/resilience/model-cooldowns |
GET | ááśáááááá¸ááśáá áśáááááááááááśá (á˘áááááááá ááśááááááśáá áááźááá) áááááśáááááááááśááááááááśáá ááá |
/api/resilience/model-cooldowns |
DELETE | áááá˘áśáááśáá
áśáááááááźááá â body {provider, model} Ꮰ{all: true} áážáááá¸ááťáá˘ááá¸áááśááá˘áá |
/api/rate-limits |
GET | ááááśáááśáááááááááá˘ááááśááśááááḠ|
/api/rate-limit |
GET | ááśáááááááá ááśááááááááááááááááá˘ááááśááá |
ááááźáááśáááá˝á
/api/resilience/*áááááźááąááááśá ááśááááááááááśááááśááááášáááááźááááááśááááśáááááááááá (requireManagementAuth)á ááźááážá ááśáááá (áááááá) áááááśááááśáááááááśááááá˘áˇáááááááá˘ááá¸ááśáááťáááááśáááśáá§áááááááááśá ááááááá¸ááááá˘áááááááá áááááááááá áśáááááśááááááśáá ááˇáááśáá áśáááááááźáááá
ááśáááśáááááá
| Endpoint | Method | Description |
|---|---|---|
/api/evals |
GET/POST | ááśáááááá¸ááááťááááááááśáááááá / áááážáááśáááśáááśáááááá |
áááááśááá
| Endpoint | Method | Description |
|---|---|---|
/api/policies |
GET/POST/DELETE | ááááááááááááááśááááááááááááźá |
á˘ááťáááááśá
| Endpoint | Method | Description |
|---|---|---|
/api/compliance/audit-log |
GET | áááááá áááťáááááááá˘ááťáááááśá (N á áťáááááá) |
v1beta (ááááááśááśáá˝á Gemini)
| Endpoint | Method | Description |
|---|---|---|
/v1beta/models |
GET | ááśáááááá¸áááźáááááśááááááá Gemini |
/v1beta/models/{...path} |
POST | endpoint generateContent áááá Gemini |
endpoint ááśáááááááááťáááśááááááá API áááá Gemini áááááśáá client ááááááášáááśáášáááśáááśáááááááśááśáá˝á Gemini SDK áážáá
API ááááááááťá / áááááááá
| Endpoint | ááˇáá¸ááśááááá | ááá áááá¸ááˇáááááś |
|---|---|---|
/api/init |
GET | ááˇááˇáááááśáá áśáááááážáááááááˇáḠ(áááážáá ááááááážáááśááážáááááźá) |
/api/tags |
GET | ááááśááááźááááááááááźáááááśááśáá˝á Ollama (áááááśááááááááˇáá¸ááááá Ollama) |
/api/restart |
POST | á áśáááááážááááśááá¸ááááĄážáááˇáááááááźá |
/api/shutdown |
POST | ááˇááááśááá¸áááááááááźá |
/api/system/env/repair |
POST | áá˝áááťáá˘ááááááˇááááśáááááá˘ááááááááááááś OAuth |
á áááśáá Endpoint ááśáááááááááźáááśááááážáá ááśáááááťáááááááááááá áŹáááááśááááśáááááźáááááśááśáá˝áááááááˇáá¸ááááá 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/âŚ)á Gateway ááá
ááśáá
áááááźáááááááááááťáá ááťáááááááááááááááááĄážáááˇá ááááž id áááááśáááśááááááśáááááááá
(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
}
á§ááśá ááá model ids: openai/whisper-1 (ááśáááśá OpenAI key),
openrouter/deepgram/nova-3 (ááśáááśá OpenRouter key),
deepgram/nova-3 (ááśáááśá Deepgram key áážá)á ááááž
deepgram/nova-3 ááááśáá ááˇá ááááž OpenRouter ááá
áááááááááááśáááá: mp3, wav, m4a, flac, ogg, webmá
ááśáááááźáááááśááśáá˝á Ollama
áááááśáá client ááááááážáááááá API áááá Ollamaá
# Endpoint áááááśááááśááááá (áááááá Ollama)
POST /v1/api/chat
# ááááá¸áááźááá (áááááá Ollama)
GET /api/tags
áááážááááźáááśáááááááááááááááááááááááˇáááśááááááá Ollama ááˇáááááááááśáááááťáá
Alias áááááśá Token áááááśáá VS Code / ááˇáááááźáááśá Header
ááááž alias ááśááááá áá
ááá integration ááˇáá˘áśá
áááá
áźá Authorization header á ážáááááźáááśááááááá API key áá
ááááťá base URLá
# Alias ááśááśáĄáťáááśááá
ááśááááá OpenAI
GET /api/v1/vscode/{token}/
GET /api/v1/vscode/{token}/models
# Alias ááśáááááááśááá
ááśááááá OpenAI
POST /api/v1/vscode/{token}/chat/completions
POST /api/v1/vscode/{token}/responses
# Alias ááśááá
ááśááááá 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":"hello"}]}'
á áááśáá
- Alias áááááśá token ááááž handler ááźá
ááááśáášá
/v1/*ááˇá/api/tags; áá ááśááááááááááááśááááážááááá ááááźá ááááśá - áá˝áááááž
Authorization: Bearer ...áá áááááśááá client ááśáááá header ááááśáááááá˝áá - Token áááááá˘ááááž URL á˘áśá áááá áśááá ááááťá log áááá reverse proxy, áááááááᡠbrowser ááˇá telemetry áá ááśááááá OmniRouteá á áśááááťáááśááśááááážááááááśááááśáááááźáááááś ááˇááááááśáááááááááááááśááá˘ááááááááśáááááśááážáááá
Telemetry
# ááá˝áááááá
áááá¸áááááá telemetry áá latency (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 key ááśááá˘áá
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"
}
ááááááááááśááá˘ááḠschema (
setBudgetSchema):apiKeyIdááşá áśáááśá á; áááśáá áá ááśáááá˝áááááťáá áááádailyLimitUsd,weeklyLimitUsdáŹmonthlyLimitUsdááááźáááááááśáááźáááá Field ááśááááážááwarningThreshold(0â1),resetInterval(daily|weekly|monthly),resetTime(HH:MM)á áá ááśááááááááá áśáá{keyId, limit, period}ááááĄáá400 Bad Requestá
áááááááá Token
áááá
áááááˇááś token ááááťááá˝á API key (ááťááá¸áááˇááśááá˘ááááž USD ááśáááž)á ááááááááááśáááááááááźáááśáá˘ááťááááááááśáááá
áážááááźááááážá áá
áááááśááááážááááśááááááťáá
áááááááááá
áá
áťáááááááááá key áá˝áááśááááááááááááááááááś áááážáášáááááźáááśááááˇááááááááśáááźá 429 Too Many Requestsá ááááááááá˘áśá
áááááááˇááśáááśááá
ááž model ááśááááśáááá˝á Ꮰprovider áá˝á áŹá˘ááťááááááś global áá
ááźááśáá key áááá áá
áááááááááááááśá
ááážáááááźáááááśáášááááážáá˝á ááááááááááááášáááášáááááťááášáááááźáááśáá˘ááťááááá
# ááśááááááááá token áááá key áá˝á (áá˝ááááá
áźáááśááááážááááśááááááśááááááťáá
áááááááááá
áá
áťáááááá)
GET /api/usage/token-limits?apiKeyId=key-123
# ááááážá áŹáááážáá
áá
áťááááááááśááááááááá token
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 ááśá id
DELETE /api/usage/token-limits?id=tl-abc
ááááááááááśááá˘ááḠSchema (
setTokenLimitSchema)áapiKeyIdááˇáscopeType(model|provider|global) ááşá áśáááśá ááscopeValueááşá áśáááśá á ááťáááááśááscopeTypeááśglobal(á§. model id áááááśááááˇááśáááśámodelᏠprovider id áááááśááááˇááśáááśáprovider)átokenLimitááááźáááááśá ááá˝ááááááˇáááááśá (áááááááḠstring)á ááááážááid(ááˇáááááźááááá áźááážáááá¸ááááážááááḠá ážááááá áźááážáááá¸áááážáá áá áťááááááááśá),resetInterval(daily|weekly|monthly, ááááśááážámonthly),resetTime(HH:MM),enabled(ááááśááážátrue)á ááśááááážááááá¸GETááááááááááááśááá áááááááááá¸áá˝áááááááśátokensUsed,remaining,windowStart,periodStartAtááˇánextResetAtá áááááś endpoint ááááááááááááááá (ááśááááááááááśááááˇááááˇááááźáááśáá˘ááťááááááśáááááśáááá authz pipeline)á
áááážáááśáááááž
- Client áááážáááážáá
ááśáá
/v1/* - Route handler á á
handleChat,handleEmbedding,handleAudioTranscriptionáŹhandleImageGeneration - Model ááááźáááśáááááá (provider/model ááááśáá Ꮰalias/combo)
- Credentials ááááźáááśááááážááážááḠDB ááźáááááśááááááśáááśáá áááááááśáááśáá˘áśá áááážááśááááá account
- áááááśáá chatá
handleChatCoreááˇááˇááá semantic/signature cache ááˇááááááááśáááááá combo compression - Proactive compression áááážáááśáááťáááśááááááááááá provider áá
áááááśááážáááááž (
lite, Caveman, RTK Ꮰstacked) - Provider executor áááážáááážáá upstream
- Response ááááźáááśáááááááááááĄáááá ááśáááááááááá client (chat) áŹááááĄááááźá áážá (embeddings/images/audio)
- Usage, compression analytics ááˇá request logs ááááźáááśááááááááś
- Fallback ááááźáááśáá˘ááťáááááá áááááśáááá áťá ááááááśáá áááśáá combo
áŻáááśááááá˘ááá¸ááááśááááááááááááááá ARCHITECTURE.md
ááśáááááááááá Combo
Routing combos áááááˇáááááá (áááááśááááááááá˝á
á ážááá
ááááá /api/combos*) ááá˘áśá
ááááźáááśáááááźááááááááťááááśááśááá 1:1 áá¸ááááśá model id ááááá áááá˘ááťááááśááąááááááááááˇá model id ááá OpenAI áá
ááśáá combo áá˝áááááááźáá
| ááˇáá¸ááśááááá | ááááźá | ááśáááˇáááááś |
|---|---|---|
| GET | /api/model-combo-mappings |
ááśáááśáááááźáááá modelâcombo ááśááá˘áá |
| POST | /api/model-combo-mappings |
ááááážáááśáááááźáááá â bodyá {pattern, comboId, priority?, enabled?, description?} |
| GET | /api/model-combo-mappings/[id] |
ááśáááááśáááááźáááááááá˝á |
| PUT | /api/model-combo-mappings/[id] |
áááážáá áá áťááááááááśá fields ááááśáááááźáááááááááśáááááśáá |
| DELETE | /api/model-combo-mappings/[id] |
ááťáááśáááááźáááá |
Authá management session/API key (requireManagementAuth)á
Webhooks
ááśáááśá webhook á áááááááśáááááášááááˇááśááá OmniRoute (ááśááááá ááááááž ááśááááážááźááśá˘áá ááśáááááźááá ááśáážá)á
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /api/webhooks |
ááśáááááḠwebhooks (áááááśááááááźáááśáááˇáááśááááś <prefix>...) |
| POST | /api/webhooks |
ááááážá webhook â body: {url, events?: ["*"], secret?, description?} |
| GET | /api/webhooks/[id] |
ááśááá webhook áá˝á |
| PUT | /api/webhooks/[id] |
áááážáá áá áťááááááááśá url/events/secret/description |
| DELETE | /api/webhooks/[id] |
ááťá webhook áá˝á |
| POST | /api/webhooks/[id]/test |
ááááž payload ááśááááááá ááśáá URL áááá webhook á ážáááááĄááááááśáááśááááááźá |
ááśááááááááááśááá˘ááááááááśá: ááááááááááááá/API key (requireManagementAuth)á
áááááááśáá áťáááááḠ(ááśáááááááááááááááááááááááˇ)
ááááźáááśááááážááááááááááááááááááááááááááááááááááááᡠáážáááá¸á áá ááˇáááááźá API keys ááśáá˝á provider/account ááśáááá áááááśáááźááśáááá áśááááá/áááá áśáááááá
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /api/v1/registered-keys |
ááśáááááá¸áááááááśáá áťáááááḠ(áááá áśááá prefix áááááśáááˇáááśáá) |
| POST | /api/v1/registered-keys |
á
áááááááááśáá
áťáááááá¸áááḠâ body: {name, provider?, accountId?, idempotencyKey?, expiresAt?, dailyBudget?, hourlyBudget?}á ááááĄáááááážááá áááááááťáááááá ááááĄáá 429 áá
áááááźááśáááˇáááá |
| GET | /api/v1/registered-keys/[id] |
ááśááá metadata áááááááááááśáá áťáááááḠ(ááááśáááˇáááááááááážá) |
| DELETE | /api/v1/registered-keys/[id] |
ááá áźááááááááśáá áťáááááḠ|
| POST | /api/v1/registered-keys/[id]/revoke |
endpoint áááááśááááá áźááááááśááááśáá (ááśááááááˇáááááśáááźá DELETE) |
ááśááááááááááśááá˘ááááááááśá: Bearer API key (isAuthenticated)á ááźááážáááááá /v1/quotas/check ááˇá /v1/issues/reportá
ááˇáá¸ááśáááááśááááśá
ááˇá áá ááśáááááśááááśá Cloud (Claude Code, Codex Cloud, OpenHands ááśáážá) áááááááźáááśááááááˇáááááˇáá¸á ááááśááááá˝áá˘ááááááážááááśáá OmniRouteá
| ááˇáá¸ááśááááá | ááááźá | ááśáááˇáááááś |
|---|---|---|
| GET | /api/v1/agents/tasks |
ááśáááááá¸ááˇá
áá
ááśá â ááááážá ?provider=, ?status=, ?limit= (1â500, ááááśááážá 50) |
| POST | /api/v1/agents/tasks |
ááááážáááˇá
áá
ááśá â body ááááźáááśááááááááááśááááá CreateCloudAgentTaskSchema (providerId, prompt, source, options?)á ááááĄáá 201 ááśáá˝á envelope ááááááˇá
áá
ááśá |
| DELETE | /api/v1/agents/tasks?id=... |
ááťáááˇá áá ááśááá˝á |
| GET | /api/v1/agents/tasks/[id] |
á˘áśáááˇá
áá
ááśá â áááážáá
áá
áťááááááááśáááááśáááśááááááááśááááááá¸ááááśááááśá Cloud ááśáááž áá
áááááśáááááá 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 ááááźáááśáááááááˇááááááźááąááááśáááśááááááááááśááá˘ááááááááśááá â ááźááážá commit588a0333áááááśááááśáááááśááááááźááááááˇáááááááśáááá
# ááááážáááˇá
áá
ááśá Cloud áááá 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 |
ááááážáááááźáááḠâ body ááááźáááśááááááááááśááááá createProxyRegistrySchema |
| PATCH | /api/v1/management/proxies |
áááážáá
áá
áťááááááááśáááááźáááḠâ body ááááźáááśááááááááááśááááá 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 |
ááááá â body ááááźáááśááááááááááśááááá proxyAssignmentSchema ({scope, scopeId?, proxyId?})á áááá˘áśáááááśáááááááśáááááá dispatcher |
| PUT | /api/v1/management/proxies/bulk-assign |
áááááááśá
ááážáááááťáááááááá˝á â body ááááźáááśááááááááááśááááá bulkProxyAssignmentSchema ({scope, scopeIds[], proxyId?}) |
| GET | /api/v1/management/proxies/health?hours=24 |
áááťáááááśáááśáááááźáááḠ(á ááá˝ááááááá/áááśááá ááˇáááśáááşááááśá) ááááťáá áááááááááá˝á |
ááśááááááááááśááá˘ááááááááśáá session/API key áááááśááááśáááááááááááá
ááááá route (requireManagementAuth)á
POST /api/v1/management/proxies/[id]/assignmentsááˇáPOST /api/v1/management/proxies/[id]/healthááááťáááśáááˇáááááśááˇá áá ááśá ááááźáááśáááááážááá route ááśáááááž/assignmentsááˇá/healthááááááá áśáááśáááž â ááˇáááśá subroute ááśá id áá ááááťá codebase ááá
ááśáááá (áááááá)
OmniRoute áááááááááááśááŻáááśáááá ááá˝ááá¸áááááśááááśááááśáááááááááá˘áśááááá á áááťá áááá áááááááśááááśááááááááááááśááááááá˘ááťááááśááąáááááááˇáááááˇááá˘áśá ááˇáááááááá˝áááśáĄážáááˇáá
| ááˇááśáááśá | ááááááááááťáááááśáááśá | á˘áśá | ááááááĄážáááˇá / áááá˘áśá |
|---|---|---|---|
| á§áááááááááśá áááááá˘ááááááááááááś | domain_circuit_breakers + ááááťáá˘áááá
áá
áśá |
/api/monitoring/health |
POST /api/resilience/reset |
| ááááááááá˘áśáááśááááááśáá | rateLimitedUntil áážááśááááááśááááááá˘ááááááááááááś |
/api/rate-limits, /api/providers/[id] |
(áážááááážáááśááĄážáááˇáááááááááááááááááˇáá áááááááž; áááá˘áśáááśáááá provider 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] |
áááážáá áá áťááááááááśáááááśá (ááááá ááśáááˇáááááś áááá schema ááááááˇáá¸áááááááśá ááˇáááááśá) |
| DELETE | /api/skills/[id] |
ááťáááśááááĄážáááááśááá˝á |
| POST | /api/skills/install |
áááĄážáááááśááḠmanifest áážá â body: {name, version, description, schema:{input, output}, handlerCode, apiKeyId?} |
| GET | /api/skills/executions |
ááśáááśááááááˇáááááˇááááśááááá¸á (áááááááááśáááááááááśáá˝áááśááťáááá áźá/áááááá/áááááá) |
| GET | /api/skills/marketplace?q=... |
ááááááá/ááááá¸áááááˇáááá¸áá¸ááááśá SkillsMP (áááááźááąááááááá skillsmpApiKey) |
| POST | /api/skills/marketplace/install |
áááĄážáááááśáááśá id áḠSkillsMP |
| GET | /api/skills/skillssh?q=&limit= |
áááááááááááťáááááá¸ááááá skills.sh |
| POST | /api/skills/skillssh/install |
áááĄážáááááśáááśá id áḠskills.sh |
ááśááááááááááśááá˘ááááááááśáá ááááááááááááá/API keyá ááááźáááááááááá¸ááááśáááá˝áááááśááááśááááááááááśááá˘ááááááááśááááááśááááśáááááááááá ᏠBearer API key (isAuthenticated)á
á˘áááá áá áśá
ááááśááááááťáá˘áááá áá áśááááááśááááśáááááááś/ááśáááˇáááááááááśááťáááśá˘á áˇáááááááá ááˇááááááááˇááśáááśáááśá API key / session áá¸áá˝ááá
| ááˇáá¸ááśááááá | ááááźá | ááśáááˇáááááś |
|---|---|---|
| GET | /api/memory |
ááśáááááá¸á˘áááá
áá
áśá â ?apiKeyId=, ?type=, ?sessionId=, ?q=, ááśáá˝áááśááááá
áááááááááá offset/limit Ꮰpage/limit |
| POST | /api/memory |
ááááážáá˘áááá
áá
áśá â body ááááźáááśááááááááááśááááá Zodá {content, key, type?, sessionId?, apiKeyId?, metadata?, expiresAt?} |
| GET | /api/memory/[id] |
ááśáááá˘áááá áá áśááá˝á |
| DELETE | /api/memory/[id] |
ááťáá˘áááá áá áśááá˝á |
| GET | /api/memory/health |
ááááśáááśáááťáááśáááááááááááááááá˘áááá áá áśá (ááśááááááśáá DB, backend áááá embeddings, ááááśáááśá vector index) |
ááśááááááááááśááá˘ááááááááśáá management session/API key (requireManagementAuth)á enum typeá FACTUAL, EPISODIC, SEMANTIC, PROCEDURAL (ááźááážá MemoryType ááááťá src/lib/memory/types.ts)á
áááśááá¸ááá MCP
OmniRoute ááááśááááááśáá˝ááááśááá¸ááá Model Context Protocol áááááśááááááá áááááśá transport á ááá˝á 3 (stdio, SSE, streamable-http) ááˇá tools áááááśáááˇááśáááśááááááá endpoints áááá dashboard ááśááááááá˘áśáááˇááááááááááśáááśá/ááááááá ááˇáááááž proxy áááááśáá HTTP transportsá
| ááˇáá¸ááśááááá | ááááźá | ááśáááˇáááááś | |
|---|---|---|---|
| GET | /api/mcp/status |
heartbeat, transport, ááááśáááśá online, ááśáá á á áťáááááá, tools áááááˇááááááťá, á˘ááááśááááááááááťááááááá 24 áááá | |
| GET | /api/mcp/tools |
ááááḠMCP tools áááááśá name, description, scopes, phase, auditLevel, sourceEndpoints |
|
| GET | /api/mcp/sse |
áážá SSE stream áááááśáá SSE transport (ááááĄáá 503 áááááˇáááž MCP ááááźáááśáááˇá Ꮰtransport ááˇáááááźáááááś) |
|
| POST | /api/mcp/sse |
ááááž JSON-RPC frame áá ááž SSE transport | |
| GET | /api/mcp/stream |
áážáááááá SSE áá Streamable HTTP transport (ááśáááááááážáááááááśááá¸ááá) | |
| POST | /api/mcp/stream |
ááááž JSON-RPC frame áá ááž Streamable HTTP transport | |
| DELETE | /api/mcp/stream |
áááá áá Streamable HTTP session áá˝á | |
| GET | /api/mcp/audit |
ááśááá˝ááááááá áááťááááááá â ?limit=, ?offset=, ?tool=, `?success=true |
false, ?apiKeyId=` |
| GET | /api/mcp/audit/stats |
ááááˇááˇááááááááááťá (á ááá˝ááááťá, á˘ááááśáááááá, ááááááááááá, tools áááááˇááááááťá) |
ááśááááááááááśááá˘ááááááááśáá transports sse/stream ááááááśáááááááśááááááááááśááá˘ááááááááśáááśááááśáááááá MCP (Bearer API key áááááśá scope mcp); routes status/tools/audit* á˘áśá
á˘áśáááśááḠdashboard (ááˇááááááźááąááááśáááśááááááááááśááá˘ááááááááśááááááá áááá
áá¸á˘áśá
á
áźááá
ááá dashboard host)á
HTTP transports ááśáááá¸áááááźáááśááááááááááááá
settings.mcpEnabledááˇásettings.mcpTransportâ transport ááˇáááááźáááááśáášáááááĄáá400áááááááśáááśáááá MCP ááááźáááśáááˇááášáááááĄáá503á
áááśááá¸ááááááž A2A
OmniRoute ááááá endpoint A2A (Agent-to-Agent) JSON-RPC 2.0 áá˝áááśáá˝á REST wrapper áááááśááááśááááá˝áááˇááˇááá ááˇáááśááááážááááśáá dashboardá
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 |
áááážáááśá skill áááááááśááááá; ááááĄáá {task, artifacts, metadata} |
message/stream |
áááážáááśá SSE ááá streaming áááááśááááááťá skill ááźá ááááś |
tasks/get |
ááśááá task ááśá taskId |
tasks/cancel |
áááááá task ááśá taskId |
skill áááááśáááááśááá smart-routing, quota-management, provider-discovery, cost-analysis, health-reportá
ááśá Agent
GET /.well-known/agent.json
ááááĄááááśá agent A2A ááśááśááá (ááááá ááśáááˇáááááś áááááááśá ááááḠskill ááˇááááááááśááá auth) â ááááźáááśá cache ááśááśááśááááááááá 1 ááááá ááˇááááááźááąááááśá auth ááá
á§ááááááááá˝á REST
| ááˇáá¸ááśááááá | Path | ááśáááˇáááááś |
|---|---|---|
| GET | /api/a2a/status |
ááááśáááśááážá A2A + ááááˇáᡠtask + ááá áááá¸ááááááááśá agent áááááśá cache |
| GET | /api/a2a/tasks |
ááśáááááḠtask â ?state=submitted|working|completed|failed|cancelled, ?skill=, ?limit= (â¤200), ?offset= |
| POST | /api/a2a/tasks |
(ááˇáááśááááśáá˘ááťááááááś REST helper áá â ááááážáááśá JSON-RPC message/send) |
| GET | /api/a2a/tasks/[id] |
ááśááá task áá˝á |
| POST | /api/a2a/tasks/[id]/cancel |
áááááá task áá˝á |
Authá REST helper áááážáááśááááááˇáááááźáááśá management auth (dashboard á˘áśá
á˘áśáááśá); route JSON-RPC /a2a ááááž Bearer OMNIROUTE_API_KEY áááááˇááážááśáááááááá
ááśááááááááá
Cloud, Evals ááˇá Assess
| ááˇáá¸ááśááááá | Path | ááśáááˇáááááś | ||
|---|---|---|---|---|
| POST | /api/cloud/auth |
áááááááááśáá Bearer key á ážáááááĄáá connection áááá provider áááááśáááˇáááśáá + alias áááá model áááááśáá client ááááž cloud sync | ||
| POST | /api/cloud/credentials/update |
áááážáá áá áťááááááááśá credential áááááśáá˘ááˇááááá¸ááááááśáá provider áááááśá sync ááśáá˝á cloud | ||
| POST | /api/cloud/model/resolve |
ááááá model id áĄáźáá¸áááá ááś provider/model ááśááááśááááááááážááśááśá routing ááźáááááśá | ||
| GET | /api/cloud/models/alias |
ááśáááááḠalias áááá model ááźá áááááśááááá áśááááááśáá cloud sync | ||
| GET | /api/assess |
á˘áśáááśáá áśáááááááá assessment á áťááááááááááťá (ááśá provider/model áá¸áá˝áá) | ||
| POST | /api/assess |
áááážáááśá assessment áá˝á â bodyá `{scope: {type:"all"} | {type:"provider", providerId} | {type:"model", modelId}, trigger?}` |
| GET | /api/evals |
ááśáááááḠeval suite áááááśáááááśáá + ááśááááážáááśááááá¸áááááťá | ||
| POST | /api/evals |
á áśáááááážáááśááááážáááśá eval | ||
| POST | /api/evals/suites |
ááááážá eval suite ááááśáááááá˝á â body ááááźáááśááááááááááśááááá evalSuiteSaveSchema |
||
| GET | /api/evals/suites/[id] |
ááśááá eval suite ááááśáááááá˝ááá˝á |
Authá /api/cloud/auth áááááááááśáá Bearer key áááááááśáá; route /api/cloud/*, /api/evals/* ááˇá /api/assess áááááááá áááááźááąááááśá management session/API keyá POST /api/assess ááááž validateBody ááśáá˝á schema scope áááááá discriminated-unioná
ááśáááááááááá ACP (Agent Client Protocol)
ááśáááážáááśáááá Endpoint ááśááááááááááááááááśááááážáááááśááááśá ACP ááˇáááśáá áťááááááááááśááááśáááááśáááááá˝áá
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /api/acp/agents |
ááśáááááá¸ááááśááááśá CLI áááááááśááááśááá˘áá (ááśáááááśáá + ááááśáááááá˝á) ááááááśááááááśáááśááááĄážá áááá ááˇá binary |
| POST | /api/acp/agents |
á
áťááááááááááśááááśá ACP ááááśáááááá˝á áŹáááážáąáá cache ááááááĄážáááˇá â body: {id, name, binary, versionCommand, providerAlias, spawnArgs, protocol} Ꮰ{action: "refresh"} |
| DELETE | /api/acp/agents |
ááťáááááśááááśá ACP ááááśáááááá˝á â query param: ?id=<agentId> |
á§ááśá ááá response (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
}
ááśááááááááááśááá˘ááááááááśá: áááááźááąááááśá management session (cookie auth_token áááá dashboard) ᏠAPI key áááááśá scope áááááśááááśááááááááááá
ááźááážá ACP Framework áááááśááááááááśááááá˘áˇáááááááá
ááśáááˇááśá ááˇáááśáá˘áśá ááááááááśá
Endpoint ááˇááśáááśááááááááśááśááááááááááááśáááááá˝áááˇááˇááá routing, compression ááˇáááśáá
ááááťááá providerá Endpoint ááśáááááááááááááááááˇáááááááááááááá /dashboard/analytics/*á
ááśáááˇááśá auto-routing
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /api/analytics/auto-routing |
ááááˇáᡠauto-routing áááťáá á ááá˝á call áááťá ááśááááá ááááśáááťáááááśááááá ááśááááá ááááśá tier ááˇá provider ááááźá |
| GET | /api/analytics/auto-routing?days=7 |
ááááˇááˇááááťáá ááááááááááááá (ááááśááážá 24h) |
á§ááśá ááá response:
{
"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 }
]
}
ááśáááˇááśá compression
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /api/analytics/compression |
ááááˇáᡠcompression áááťáá token áááááśáááááá ááśáááááááśáááááá ááśááááá ááááśá mode ááˇáááśááááážááááśáá engine |
á§ááśá ááá response:
{
"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
}
}
ááśáááśáááśáááśáá ááááťááá provider
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /api/analytics/diversity |
ááśáááśáááśáááśáá ááááťááááááá˘ááááž Shannon entropyá ááśáááśáá áááťá áááśááááááá˝ááááááśááááśáá ááá áśááááá provider |
á§ááśá ááá response:
{
"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"]
}
ááśááááááááááśááá˘ááááááááśá: áááááźááąááááśá management session ᏠAPI key áááááśá scope áááááśááááśááááááááááá
áááááˇáááááˇááśáááááááśá
Endpoint áááááśááááá˘áááááááááááá áážáááá¸ááááááááááááááˇáááááˇááśáá
| ááˇáá¸ááśááááá | Path | ááśáááˇáááááś |
|---|---|---|
| GET | /api/admin/concurrency |
á˘áśááááááˇá concurrency áá áá áťáááááá (ááśááá + ááśá provider áá¸áá˝áá) |
| POST | /api/admin/concurrency |
áááážáá
áá
áťááááááááśááááááˇá concurrency â body: {global?: number, perProvider?: Record<string, number>} |
ááśááááááááááśááá˘ááááááááśá: áááááźááąááááśá management session áááááśá admin scopeá
ááśááááááááááá§ááááá CLI
áááááááááá§ááááá CLI ááááá˝ááááá áźáááśáá˝á OmniRoute (antigravity, chipotle, commandCode, devin-cli ááśáážá)á ááźááážá áŻáááśááááá˘ááḠProvider áááááśááááááá¸ááááááá
| ááˇáá¸ááśááááá | Path | ááśáááˇáááááś |
|---|---|---|
| GET | /api/cli-tools/all-statuses |
ááááśáááśáá§ááááá CLI ááśááá˘áá (ááśááááĄážá áááá ááˇááááááśááážáá áťáááááá) |
| GET | /api/cli-tools/status |
ááááááśááááá˘áˇáá˘ááá¸ááááśáááśáááááá§ááááá CLI áá˝á (?tool= query) |
| POST | /api/cli-tools/apply |
ááááá config áááááśáááááážáááááá§ááááá (dryRun áááá áśáááśááťá; 422 + containerEphemeralTarget áá
ááááááážáááśáááááťá container; migration ááááááááśááá˘ááḠCodex YAML á
áśáá) |
| GET | /api/cli-tools/backups |
ááśáááááḠbackup áá configuration ááááá§ááááá CLI |
| POST | /api/cli-tools/backups |
ááááážá backup áá configuration ááááá§ááááá CLI ááśááá˘áá |
| POST | /api/cli-tools/backups |
ááááśááĄážáááˇáá endpoint ááźá
ááááśáááááśá {tool, backupId} ááááťá body áášáááááśá backup ááá |
| GET | /api/cli-tools/antigravity-mitm |
ááááśáááśá proxy Antigravity MITM (á§ááááá CLI "antigravity-mitm") |
| POST | /api/cli-tools/antigravity-mitm/alias |
ááááááá ááśáááááááá alias áááá antigravity-mitm |
ááśááááááááááśááá˘ááááááááśá: áááááźááąááááśá management sessioná
ááááśá Agent
áááááááááááááśááááá AI agent (áááááááášá custom GPTs áááá OpenAI áááťáááááááááśáá agent)á
| ááˇáá¸ááśááááá | Path | ááśáááˇáááááś |
|---|---|---|
| GET | /api/agent-skills |
ááśáááááá¸ááááśá agent ááśááá˘áá (ááśáááááśáá + ááááśáááááá˝á) |
| GET | /api/agent-skills/[id] |
ááśáááááááśá agent ááśááááśáááá˝á |
| POST | /api/agent-skills |
ááááážáááááśá agent ááááśáááááá˝á â body: {name, description, prompt, model?, temperature?} |
| PUT | /api/agent-skills/[id] |
áááážáá áá áťááááááááśáááááśá agent ááááśáááááá˝á |
| DELETE | /api/agent-skills/[id] |
ááťáááááśá agent ááááśáááááá˝á |
| GET | /api/agent-skills/[id]/raw |
ááśááá prompt áážá + metadata (ááˇáááśáááśááááááˇáááááˇ) |
| POST | /api/agent-skills/generate |
ááááž AI áážáááá¸ááááážáááááśááááá¸áá¸ááśáááˇáááááśááśááśááśááááááśáᡠ|
ááśááááááááááśááá˘ááááááááśá: áááááźááąááááśá management session ᏠAPI key áááááśá management scopeá
ááśááááááááááááááśáááááááśáá
áááááááááááááśáááááááśáááááá˘áááááá ááˇáááááśáááááááśáááááááśááááśáááááááá
| ááˇáá¸ááśááááá | ááááźá | ááśáááˇáááááś |
|---|---|---|
| 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 key áááááśáááˇááśáááśááááááááááá
Webhooks
áááááááááááśáááśá 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 |
ááśááááááááááśááá˘ááááááááśáá ááśáááśááááááááááááááá
ááźááážá áááááááá Webhooks áááááśáááááááááááášááááˇááśáááááśááá˘ááá
áááááááá Skills
ááááááááá Skills (áááááááááááááááááááááá agentic)á
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /api/skills |
ááśáááááḠskills áááááśááááĄážáááśááá˘áá (ááśáááááśáá + ááááśáááááá˝á) |
| POST | /api/skills/install |
áááĄážá skill áá¸ááááźáááźáááááśá ᏠURL |
| DELETE | /api/skills/[id] |
ááťáááśááááĄážá skill |
| PUT | /api/skills/[id] |
áážá áŹááˇá skill â body: {enabled?: boolean, mode?: "on" | "off" | "auto"} |
| POST | /api/skills/executions |
áááááˇááááᡠskill â body: {skillName, apiKeyId, input?, sessionId?} |
| GET | /api/skills/executions |
ááśáááááááááˇááśááááááˇáááááˇáááááśáá skills ááśááá˘áá (ááááááśá ?apiKeyId=) |
ááśááááááááááśááá˘ááááááááśá: áááááźááąááááśáááááááááááááá ᏠAPI key áááááśáááˇááśáááśááááááááááá
ááźááážá áááááááá Skills áááááśááááááááśááááá˘áˇáááááááá
Plugins
ááááááááá plugins áááá OmniRoute (ááááááááááááá¸ááśáá¸áá¸áá¸)á
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /api/plugins |
ááśáááááḠplugins áááááśááááĄážá |
| POST | /api/plugins/marketplace/install |
áááĄážá plugin áḠmarketplace |
| DELETE | /api/plugins/[name] |
ááťáááśááááĄážá plugin |
| POST | /api/plugins/[name]/activate |
áááážáąáá plugin ááááá |
| POST | /api/plugins/[name]/deactivate |
áááážáąáá plugin á˘ááááá |
| GET | /api/plugins/[name]/config |
ááá˝áááááśáááááááá ááśáááááááá plugin |
| PUT | /api/plugins/[name]/config |
áááážáá áá áťááááááááśáááśáááááááá ááśáááááááá plugin |
ááśááááááááááśááá˘ááááááááśá: áááááźááąááááśááááááááááááááá
ááźááážá áááááááá Plugins áááááśááááááááśááááá˘áˇáááááááá
Shadow Routing
ááśáááááááááá˘ááááááááááááśááśá Shadow / A-B ááˇááááááś REST surface áŻáááśááááá â ááśááááźáááśáááááááá
ááśááááááááááśáááá combo routing (ááźááážá Auto-Combo)á áááááśááááááááááááśá combo áá¸áá˝ááááááźáááśááááááááá GET /api/combos/metricsá
Guardrails
ááˇááˇááááážá guardrails ááááááážáááśá (ááśááááážá PII, ááśááááážáááśááááá
áźá prompt ááˇá vision bridging)á Guardrails áááážáááśááážááááááááážááśááá˘ááá ááśááááááá˝áá
áááááááśááááśáá á
áá¸áá˝áááááážáĄážáááśá request header x-omniroute-disabled-guardrails â ááˇáááśáá
áááťá
áááááśáááááááśáááááááśááťáááśááážá/ááˇáááá
| ááˇáá¸ááśááááá | ááááźá | ááá áááá¸ááˇáááááś |
|---|---|---|
| GET | /api/guardrails |
ááśáááááḠguardrails áááááśáá áťáááááḠááˇáááááśáááśááááááá˝áááś (ááááá / ááśááážá / á˘áśááˇááśá) |
| POST | /api/guardrails/test |
áááážáááśáááśááááááááááˇáá˘ááťááááááśáááááááááž pipeline ááťááááá á
áááááááž input ááááź â body: {input, disabledGuardrails?} |
ááśááááááááááśááá˘ááááááááśá: áááááźááąááááśááááááááááááááá
ááźááážá ááťáááááˇááśá > Guardrails áááááśááááááááśááááá˘áˇáááááááá
ááśááááááááááśááá˘ááááááááśá
ááźááážá ááśááááááááááśááá˘ááááááááśááááááśááááśáááááááááá áááááśááááááááśáá˘ááá¸ááááááśááááááśááááśáááá˝ááááááá (áááá dashboard, token áááá CLI ááźáááááśá, oma_live_⌠Access Token ááˇá API key áááááśáááˇááśáááśáááááááááá) ááˇáááśáááťáááááśáááááá˝áááśáḠinference keysá
- ááááźá dashboard (
/dashboard/*) ááááž cookieauth_token - ááśáá
áźááááážááááž hash ááśááááááááśáááááááśááááááśááťá; áážááˇáá˘áśá
áááážááśá ááśáášáááááž
INITIAL_PASSWORD - á˘áśá
ááˇááážá
requireLoginááśáááá/api/settings/require-login - ááááźá
/v1/*á˘áśá áááááźááąááááśá Bearer API key áá áááREQUIRE_API_KEY=true - "management token" / "management-scoped API key" áá ááááťááŻáááśááááááá áááá áážááááááááśáá˝áááááťáá áááááááááááááááśááá ááááťááááááťáááááááááá â ááˇááááááśááááááááááááśááááááśáááááááááááááˇáááśááááááááááá
ááśáááááśááááááźáááááááááśáááááááśáááááźáááááś (v3.8.0) â
/api/v1/agents/tasks/*ááˇáá áááťá á áťááááááśááááśáááááááááá cooldown áĽáĄáźáááááááááźááąááááśá ááśááááááááááśááá˘ááááááááśááááááśááááśáááááááááá (cookieauth_tokenáááá dashboard ᏠAPI key áááááśáááˇááśáááśáááááááááá)á ááááááˇáá¸áááááááááá¸ááťáááśáá á ááááźáááśááááááááááááśáááśááááááááááśááá˘ááááááááśá áášáááá˝áááśá401 Unauthorizedá ááźááážá commit588a0333(fix(auth): require management auth for agent and cooldown APIs)á