OmniRoute API 参考完全指南:统一端点、兼容路由与管理接口的实战解析
【免费下载链接】OmniRouteNever stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors项目地址: https://gitcode.com/GitHub_Trending/om/OmniRoute
本文基于 OmniRoute 仓库中的 API 参考文档(docs/i18n/pl/docs/reference/API_REFERENCE.md),系统梳理 OmniRoute 对外暴露的全部 API 面:/v1/*推理端点(Chat Completions、Embeddings、图像生成、音频转写)、多协议兼容路由(OpenAI / Anthropic / Gemini / Ollama)、语义缓存与管理类 API(Provider、用量、预算、韧性、隧道等),并结合仓库源码说明请求处理流水线、幂等与缓存旁路等关键机制的实际落点,帮助你在集成、排障和二次开发时快速找到对应的接口与实现证据。
一、概览:一个端点,多种协议
OmniRoute 的定位是一个自托管 AI 网关:客户端只需对接一个 base URL 与一个 Bearer API Key,即可访问其聚合的全部聊天、嵌入与图像模型。文档给出的默认本地地址为http://localhost:20128。
其 API 面分为三大块:
- 推理端点(
/v1/*):OpenAI 兼容的 chat / embeddings / images / audio 端点,外加 Anthropic、Gemini、Ollama 等格式兼容路由; - 管理端点(
/api/*):Dashboard 背后的 REST 接口,涵盖 Provider、密钥、组合(Combo)、用量、预算、韧性、备份、隧道、CLI 工具与 ACP Agent 等; - 系统端点:如
/api/init、/api/restart、/api/system-info等内部与运维接口。
从源码结构看,/v1/*的路由以 Next.js App Router 的形式组织在 src/app/api/v1 下,可以看到chat/、embeddings/、images/、audio/、messages/、responses/、providers/、relay/、batches/、search/等大量子路由目录;而真正的协议转换与执行逻辑集中在open-sse包(handlers、executors、translator)中,这与文档"Request Processing"一节描述的handleChat→handleChatCore→ provider executor 链路相吻合。
一个值得注意的实现细节:为了兼容 OpenAI 风格 SDK 的错误处理,OmniRoute 为所有未知的/v1/*路径提供了一个 JSON 404 兜底路由(src/app/api/v1/[...omnirouteCatchAll]/route.ts)。其注释说明,没有它时未知路径会落到 Dashboard 的 HTML 404 页面,导致以 OpenAI 客户端身份访问的 SDK 在解析 HTML 时崩溃;现在统一返回error.type === "not_found"、code: "unknown_route"的标准 JSON 错误体。静态路由(如/v1/models)在 App Router 匹配中优先于该 catch-all,因此真实端点不受影响。
二、Chat Completions:核心推理端点
2.1 基本请求
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 }model字段支持provider/model直连写法(如cc/claude-opus-4-6),也支持别名与 Combo(见文档"Request Processing"一节第 3 步)。stream: true时返回 SSE 流式响应。
2.2 自定义请求/响应头
| Header | Direction | Description |
|---|---|---|
X-OmniRoute-No-Cache | Request | Set totrueto bypass cache |
X-OmniRoute-Progress | Request | Set totruefor progress events |
X-Session-Id | Request | Sticky session key for external session affinity |
x_session_id | Request | Underscore variant also accepted (direct HTTP) |
Idempotency-Key | Request | Dedup key (5s window) |
X-Request-Id | Request | Alternative dedup key |
X-OmniRoute-Cache | Response | HITorMISS(non-streaming) |
X-OmniRoute-Idempotent | Response | trueif deduplicated |
X-OmniRoute-Progress | Response | enabledif progress tracking on |
X-OmniRoute-Session-Id | Response | Effective session ID used by OmniRoute |
Nginx 注意:如果你依赖下划线头(例如
x_session_id),需要启用underscores_in_headers on;。
这些头并非停留在文档层面,仓库中有明确的实现佐证:
- 缓存旁路:src/lib/semanticCache.ts 头部注释明确写出
Bypass: X-OmniRoute-No-Cache: true,即语义缓存层在读取该头为true时直接跳过缓存查找,适合调试或对缓存正确性敏感的请求。 - 幂等去重:
open-sse/handlers/chatCore.ts中处理Idempotency-Key/x-request-id去重键(参见 open-sse/handlers/chatCore.ts#L701 附近的实现),文档中"5 秒窗口"与该去重窗口一致;去重命中时响应头会带X-OmniRoute-Idempotent: true。 - Relay 透传:中继端点 src/app/api/v1/relay/chat/completions/route.ts 会把客户端的
x-request-id原样放入上游头并注入x-relay-token-id、x-relay-client-ip,保证请求在 Relay 层与内部handleChat流水线之间可追踪。
2.3 内部入口:handleChat
主端点/v1/chat/completions的处理入口是handleChat(src/sse/handlers/chat.ts)。Relay 路由在鉴权、限流、注入防护与模型白名单校验通过后,正是通过克隆请求并调用handleChat(originalRequest)转发进内部流水线,随后附加X-Relay-Token、X-Routing-Backend: ts等头并异步记录用量(recordRelayUsage)。从该源码结构看,同一套 chat 核心被"直连/v1端点"与"Relay 中继端点"两条入口复用,鉴权策略(API Key vs Relay Token)则在各自入口层完成。
三、Embeddings:嵌入向量端点
POST /v1/embeddings Authorization: Bearer your-api-key Content-Type: application/json { "model": "nebius/Qwen/Qwen3-Embedding-8B", "input": "The food was delicious" }支持的 Provider:Nebius、OpenAI、Mistral、Together AI、Fireworks、NVIDIA、OpenRouter、GitHub Models。
列出全部嵌入模型:
# List all embedding models GET /v1/embeddings对应源码目录为 src/app/api/v1/embeddings,与文档描述的"POST 生成向量、GET 列出模型"双用途路由一致。
四、Image Generation:图像生成端点
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" }支持的 Provider:OpenAI(GPT Image 2)、xAI(Grok Image)、Together AI(FLUX)、Fireworks AI、Nebius(FLUX)、Hyperbolic、NanoBanana、OpenRouter、SD WebUI(本地)、ComfyUI(本地)。
# List all image models GET /v1/images/generations图像模型清单与注册逻辑可在open-sse/config/imageRegistry.ts与 src/app/api/v1/images 路由目录中查证。
五、List Models 与兼容性端点
5.1 模型列表
GET /v1/models Authorization: Bearer your-api-key → Returns all chat, embedding, and image models + combos in OpenAI format一次返回聊天、嵌入、图像模型以及 Combo,且统一为 OpenAI 格式,方便现有 SDK 直接消费。
5.2 兼容性端点总表
| Method | Path | Format |
|---|---|---|
| POST | /v1/chat/completions | OpenAI |
| POST | /v1/messages | Anthropic |
| POST | /v1/responses | OpenAI Responses |
| POST | /v1/embeddings | OpenAI |
| POST | /v1/images/generations | OpenAI |
| 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 |
这些端点镜像了对应厂商的 API 格式,使期望"原生 SDK 体验"的客户端(Anthropic SDK、Gemini SDK、Ollama 客户端)无需改动请求格式即可接入。仓库中可看到对应的路由目录:src/app/api/v1/messages、src/app/api/v1/responses、src/app/api/v1/api(Ollama 兼容)等。
5.3 指定 Provider 的专用路由
POST /v1/providers/{provider}/chat/completions POST /v1/providers/{provider}/embeddings POST /v1/providers/{provider}/images/generations若请求体中的 model 前缀缺失,网关会自动补上 provider 前缀;若 model 与路径中的 provider 不匹配,则返回400。这为"强制走某个供应商"的场景提供了显式控制面,实现位于 src/app/api/v1/providers。
5.4 Ollama 兼容
对使用 Ollama API 格式客户端的适配:
# Chat endpoint (Ollama format) POST /v1/api/chat # Model listing (Ollama format) GET /api/tags请求会在 Ollama 格式与内部格式之间自动翻译。/api/tags返回 Ollama 兼容的模型 tag 列表(见下文"Internal / System APIs")。
5.5 Gemini v1beta
| Endpoint | Method | Description |
|---|---|---|
/v1beta/models | GET | List models in Gemini format |
/v1beta/models/{...path} | POST | GeminigenerateContentendpoint |
六、音频转写(Audio Transcription)
POST /v1/audio/transcriptions Authorization: Bearer your-api-key Content-Type: multipart/form-data使用 Deepgram 或 AssemblyAI 转写音频文件。完整 curl 示例:
curl -X POST http://localhost:20128/v1/audio/transcriptions \ -H "Authorization: Bearer your-api-key" \ -F "file=@recording.mp3" \ -F "model=deepgram/nova-3"响应示例:
{ "text": "Hello, this is the transcribed audio content.", "task": "transcribe", "language": "en", "duration": 12.5 }- 支持的模型:
deepgram/nova-3、assemblyai/best - 支持的格式:
mp3、wav、m4a、flac、ogg、webm
该端点与文档"Request Processing"流程中提到的handleAudioTranscription入口对应,音频请求不经过 chat 核心的格式翻译,响应原样返回。
七、语义缓存(Semantic Cache)
# Get cache stats GET /api/cache/stats # Clear all caches DELETE /api/cache/stats响应示例:
{ "semanticCache": { "memorySize": 42, "memoryMaxSize": 500, "dbSize": 128, "hitRate": 0.65 }, "idempotency": { "activeKeys": 3, "windowMs": 5000 } }字段含义:memorySize/memoryMaxSize为内存缓存条目数与上限,dbSize为持久化(DB)层条目数,hitRate为命中率;idempotency段返回当前活跃去重键数量与 5000ms 的去重窗口。缓存核心实现位于 src/lib/semanticCache.ts,请求级旁路头X-OmniRoute-No-Cache: true即在此层生效;非流式响应的X-OmniRoute-Cache: HIT/MISS头则是该层判定结果的回传。
八、Dashboard 与管理 API
以下接口均服务于 Dashboard 与运维脚本,是 OmniRoute 的控制面全集。
8.1 认证(Authentication)
| Endpoint | Method | Description |
|---|---|---|
/api/auth/login | POST | Login |
/api/auth/logout | POST | Logout |
/api/settings/require-login | GET/PUT | Toggle login required |
8.2 Provider 管理
| Endpoint | Method | Description |
|---|---|---|
/api/providers | GET/POST | List / create providers |
/api/providers/[id] | GET/PUT/DELETE | Manage a provider |
/api/providers/[id]/test | POST | Test provider connection |
/api/providers/[id]/models | GET | List provider models |
/api/providers/validate | POST | Validate provider config |
/api/provider-nodes* | Various | Provider node management |
/api/provider-models | GET/POST/PATCH/DELETE | Custom models (add, update, hide/show, delete) |
8.3 OAuth 流程
| Endpoint | Method | Description |
|---|---|---|
/api/oauth/[provider]/[action] | Various | Provider-specific OAuth |
8.4 路由与配置
| Endpoint | Method | Description |
|---|---|---|
/api/models/alias | GET/POST | Model aliases |
/api/models/catalog | GET | All models by provider + type |
/api/combos* | Various | Combo management |
/api/keys* | Various | API key management |
/api/pricing | GET | Model pricing |
8.5 用量与分析
| Endpoint | Method | Description |
|---|---|---|
/api/usage/history | GET | Usage history |
/api/usage/logs | GET | Usage logs |
/api/usage/request-logs | GET | Request-level logs |
/api/usage/[connectionId] | GET | Per-connection usage |
8.6 设置(Settings)
| Endpoint | Method | Description |
|---|---|---|
/api/settings | GET/PUT/PATCH | General settings |
/api/settings/proxy | GET/PUT | Network proxy config |
/api/settings/proxy/test | POST | Test proxy connection |
/api/settings/ip-filter | GET/PUT | IP allowlist/blocklist |
/api/settings/thinking-budget | GET/PUT | Reasoning token budget |
/api/settings/system-prompt | GET/PUT | Global system prompt |
8.7 监控(Monitoring)
| Endpoint | Method | Description |
|---|---|---|
/api/sessions | GET | Active session tracking |
/api/rate-limits | GET | Per-account rate limits |
/api/monitoring/health | GET | Health check + provider summary(catalogCount、configuredCount、activeCount、monitoredCount) |
/api/cache/stats | GET/DELETE | Cache stats / clear |
8.8 备份与导出/导入
| Endpoint | Method | Description |
|---|---|---|
/api/db-backups | GET | List available backups |
/api/db-backups | PUT | Create a manual backup |
/api/db-backups | POST | Restore from a specific backup |
/api/db-backups/export | GET | Download database as .sqlite file |
/api/db-backups/import | POST | Upload .sqlite file to replace database |
/api/db-backups/exportAll | GET | Download full backup as .tar.gz archive |
8.9 云同步(Cloud Sync)
| Endpoint | Method | Description |
|---|---|---|
/api/sync/cloud | Various | Cloud sync operations |
/api/sync/initialize | POST | Initialize sync |
/api/cloud/* | Various | Cloud management |
8.10 隧道(Tunnels)
| Endpoint | Method | Description |
|---|---|---|
/api/tunnels/cloudflared | GET | Read Cloudflare Quick Tunnel install/runtime status for the dashboard |
/api/tunnels/cloudflared | POST | Enable or disable the Cloudflare Quick Tunnel(action=enable/disable) |
8.11 CLI 工具状态
| Endpoint | Method | Description |
|---|---|---|
/api/cli-tools/claude-settings | GET | Claude CLI status |
/api/cli-tools/codex-settings | GET | Codex CLI status |
/api/cli-tools/droid-settings | GET | Droid CLI status |
/api/cli-tools/openclaw-settings | GET | OpenClaw CLI status |
/api/cli-tools/runtime/[toolId] | GET | Generic CLI runtime |
CLI 响应统一包含:installed、runnable、command、commandPath、runtimeMode、reason,便于前端区分"未安装"与"不可运行"两类状态。
8.12 ACP Agents
| Endpoint | Method | Description |
|---|---|---|
/api/acp/agents | GET | List all detected agents (built-in + custom) with status |
/api/acp/agents | POST | Add custom agent or refresh detection cache |
/api/acp/agents | DELETE | Remove a custom agent byidquery param |
GET 响应包含agents[](每项含id、name、binary、version、installed、protocol、isCustom)与summary(total、installed、notFound、builtIn、custom)。
8.13 韧性与限流(Resilience & Rate Limits)
| Endpoint | Method | Description |
|---|---|---|
/api/resilience | GET/PATCH | Get/update request queue, connection cooldown, provider breaker, and wait settings |
/api/resilience/reset | POST | Reset provider circuit breakers |
/api/rate-limits | GET | Per-account rate limit status |
/api/rate-limit | GET | Global rate limit configuration |
8.14 评测与策略
Evals
| Endpoint | Method | Description |
|---|---|---|
/api/evals | GET/POST | List eval suites / run evaluation |
Policies
| Endpoint | Method | Description |
|---|---|---|
/api/policies | GET/POST/DELETE | Manage routing policies |
Compliance
| Endpoint | Method | Description |
|---|---|---|
/api/compliance/audit-log | GET | Compliance audit log (last N) |
8.15 内部 / 系统 API
| Endpoint | Method | Description |
|---|---|---|
/api/init | GET | Application initialization check (used on first run) |
/api/tags | GET | Ollama-compatible model tags (for Ollama clients) |
/api/restart | POST | Trigger graceful server restart |
/api/shutdown | POST | Trigger graceful server shutdown |
/api/system/env/repair | POST | Repair OAuth provider environment variables |
/api/system-info | GET | Generate system diagnostics report |
注意:这些端点由系统内部使用或用于 Ollama 客户端兼容,一般不由终端用户直接调用。
8.16 OAuth 环境变量修复(v3.6.1+)
POST /api/system/env/repair Content-Type: application/json { "provider": "claude-code" }用于修复某个 Provider 缺失或损坏的 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" }修复前会自动生成环境备份文件(backupPath),降低误操作风险。
九、遥测(Telemetry)
# Get latency telemetry summary (p50/p95/p99 per provider) GET /api/telemetry/summary响应示例:
{ "providers": { "claudeCode": { "p50": 245, "p95": 890, "p99": 1200, "count": 150 }, "github": { "p50": 180, "p95": 620, "p99": 950, "count": 320 } } }按 Provider 维度给出延迟分位数与样本数,可据此评估各上游的实时健康状况并辅助路由调优。
十、预算(Budget)
# Get budget status for all API keys GET /api/usage/budget # Set or update a budget POST /api/usage/budget Content-Type: application/json { "keyId": "key-123", "limit": 50.00, "period": "monthly" }按 API Key 粒度设置用量预算(限额 + 周期),与/api/keys*的密钥管理形成配套的多租户成本控制手段。
十一、请求处理流水线(Request Processing)
文档将一次请求的完整生命周期概括为 9 步:
- Client sends request to
/v1/* - Route handler calls
handleChat,handleEmbedding,handleAudioTranscription, orhandleImageGeneration - Model is resolved (direct provider/model or alias/combo)
- Credentials selected from local DB with account availability filtering
- For chat:
handleChatCore— format detection, translation, cache check, idempotency check - Provider executor sends upstream request
- Response translated back to client format (chat) or returned as-is (embeddings/images/audio)
- Usage/logging recorded
- Fallback applies on errors according to combo rules
从源码结构看,这条链路与仓库实现一一对应:
- 步骤 2 的入口函数位于
src/sse/handlers/(如 src/sse/handlers/chat.ts),Relay 入口 src/app/api/v1/relay/chat/completions/route.ts 中const response = await handleChat(originalRequest)即为该调用的实例; - 步骤 5 的
handleChatCore位于 open-sse/handlers/chatCore.ts,承担格式检测、翻译、缓存检查(联动 src/lib/semanticCache.ts)与幂等检查; - 步骤 9 的 Combo 故障回退规则由
/api/combos*管理的配置驱动,测试路由 src/app/api/combos/test/route.ts 同样复用了handleChat入口,便于在管理界面直接验证 Combo 行为。
更完整的架构背景可参阅 docs/architecture/ARCHITECTURE.md。
十二、认证(Authentication)
- Dashboard 路由(
/dashboard/*)使用auth_tokenCookie; - 登录校验保存的密码哈希,回退到
INITIAL_PASSWORD环境变量; - 是否强制登录可通过
/api/settings/require-login开关切换(requireLogin); /v1/*路由在REQUIRE_API_KEY=true时可选地要求 Bearer API Key。
即:管理面走会话 Cookie,推理面走 Bearer Key,两套凭证互不混用。
十三、集成与排障要点小结
- 未知路径排查:若 SDK 收到
error.type: "not_found"的 JSON 而非 HTML 404,说明请求到达了 OmniRoute 但路径不被支持,应核对 base URL 与端点(对应 src/app/api/v1/[...omnirouteCatchAll]/route.ts 的兜底行为)。 - 缓存干扰:调试阶段用
X-OmniRoute-No-Cache: true排除语义缓存影响,再用GET /api/cache/stats查看命中率验证是否生效;需要彻底清空时调用DELETE /api/cache/stats。 - 重复请求:为写类客户端(如批量脚本)附加
Idempotency-Key或X-Request-Id,5 秒窗口内重复请求会去重并以X-OmniRoute-Idempotent: true标记。 - 上游延迟定位:结合
GET /api/telemetry/summary的分位数与/api/monitoring/health的 provider 汇总,判断问题是集中在某个上游还是本地网关。 - 多协议客户端:OpenAI SDK 走
/v1/chat/completions,Anthropic SDK 走/v1/messages,Gemini SDK 走/v1beta/*,Ollama 客户端走/v1/api/chat+GET /api/tags,均无需改造请求体。
以上即 OmniRoute 当前仓库 API 面的完整参考。端点行为以本文引用的源码文件为准,管理面细节可在src/app/api/对应路由目录中进一步查证。
【免费下载链接】OmniRouteNever stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors项目地址: https://gitcode.com/GitHub_Trending/om/OmniRoute
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考