OmniRoute 网关 API 参考指南:从 v1 推理端点、兼容层到 Dashboard 管理接口的完整调用手册
【免费下载链接】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 是一个开源 MIT 许可的统一 AI 网关:通过一个端点即可接入 352 家以上提供商(其中 150+ 免费)、1200+ 模型,支持 Claude Code、Codex、Cursor、OpenCode、Cline、Copilot 等客户端。本文是 OmniRoute 官方 API 参考(docs/i18n/fr/docs/reference/API_REFERENCE.md)的完整中文技术解读,聚焦于网关对外暴露的两大接口面:面向 AI 客户端的公共/v1推理接口(Chat Completions、Embeddings、Image Generation、音频转写等)与面向运维者的/api管理接口(提供商管理、用量分析、备份、隧洞、弹性治理等)。读完本文,你将掌握 OmniRoute 每个端点的调用方式、认证模型、自定义响应头语义,以及请求在网关内部的完整处理链路与对应源码位置。
目录
- Chat Completions(聊天补全)
- Embeddings(向量嵌入)
- Image Generation(图像生成)
- List Models(模型列表)
- Compatibility Endpoints(兼容端点)
- Semantic Cache(语义缓存)
- Dashboard & Management(管理接口)
- Audio Transcription(音频转写)
- Ollama Compatibility(Ollama 兼容)
- Telemetry(遥测)
- Budget(预算)
- Request Processing(请求处理链路)
- Authentication(认证)
Chat Completions(聊天补全)
聊天补全是 OmniRoute 最核心的推理端点,形态与 OpenAI Chat Completions 完全一致,客户端无需改动即可接入。
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 }模型字段使用provider/model形式的提供商前缀 ID(如cc/claude-opus-4-6、glm/glm-4.6)。在 src/app/api/v1/chat/completions/route.ts 中可以看到该路由的入口处理:
- 先做Content-Type 守卫:非
application/json的请求体直接返回415 unsupported_media_type(RFC 7231 语义,与 OpenAI/Anthropic 边界行为对齐); - 通过
admitChatRequest+admitChatStructure做入口接纳(admission)控制:在 JSON 解析前按真实字节数预占重型容量,避免缺失或虚报的Content-Length绕过限制; - 请求体只
json()解析一次,随后交给handleChat(实现在 src/sse/handlers/chat.ts)做深层校验(messages/model/temperature/top_p/max_tokens/n 等),路由层仅保留一个刻意宽松的 shape schema(.passthrough()),避免在热路径上重复拒绝合法请求。
自定义响应头
请求与响应均可携带X-OmniRoute-*系列头,用于缓存控制、会话亲和与幂等去重:
| Header | 方向 | 说明 |
|---|---|---|
X-OmniRoute-No-Cache | 请求 | 设为true时绕过缓存 |
X-OmniRoute-Progress | 请求 | 设为true时启用进度事件 |
X-Session-Id | 请求 | 外部会话亲和(sticky session)键 |
x_session_id | 请求 | 下划线变体同样被接受(直连 HTTP 场景) |
Idempotency-Key | 请求 | 去重键(5 秒窗口) |
X-Request-Id | 请求 | 备选去重键 |
X-OmniRoute-Cache | 响应 | HIT或MISS(仅非流式) |
X-OmniRoute-Idempotent | 响应 | 若被去重则为true |
X-OmniRoute-Progress | 响应 | 若启用进度跟踪则为enabled |
X-OmniRoute-Session-Id | 响应 | OmniRoute 实际生效的会话 ID |
Nginx 提示:若依赖下划线请求头(例如
x_session_id),需在 Nginx 中开启underscores_in_headers on;。
英文原版(docs/reference/API_REFERENCE.md)进一步补充了响应侧遥测头,法语版同样适用:
- 路由决策:
X-OmniRoute-Decision返回strategy=<名称>; provider=<别名>; latency_ms=<n>(<名称>为组合路由策略名,非组合请求则为single),每次完成响应都会携带; - 成本遥测:非流式成功响应会附带
X-OmniRoute-Response-Cost(USD,固定 10 位小数)、X-OmniRoute-Tokens-In/X-OmniRoute-Tokens-Out、X-OmniRoute-Model、X-OmniRoute-Provider、X-OmniRoute-Latency-Ms、X-OmniRoute-Cache-Hit、X-OmniRoute-Fallback-Attempts(仅当大于 0 时出现),以及X-OmniRoute-Request-Id、X-OmniRoute-Version。这些头同样由/v1/responses、/v1/messages以及媒体端点(/v1/embeddings、/v1/images/generations、/v1/audio/speech、/v1/audio/transcriptions、/v1/rerank、/v1/videos/generations、/v1/music/generations、/v1/moderations)发出; - 缓存命中语义:语义缓存 HIT 时不发起上游调用,因此
X-OmniRoute-Response-Cost为0.0000000000(命中服务的增量成本),原始/应有成本单独通过X-OmniRoute-Cost-Saved上报。计费方应累加X-OmniRoute-Response-Cost,缓存分析方应聚合X-OmniRoute-Cost-Saved。
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、GitHub Models。目录 ID 同样为provider/model形式(如jina-ai/jina-embeddings-v5-omni-small)。
# 列出所有嵌入模型 GET /v1/embeddings从源码看(src/app/api/v1/embeddings/route.ts),该路由导入v1EmbeddingsSchema做 Zod 校验,通过extractApiKey/isValidApiKey完成 Bearer 鉴权,并以enforceApiKeyPolicy执行 API Key 策略,最终交予handleEmbedding(open-sse/handlers/embeddings.ts)执行。英文原版还说明:注册表声明支持多模态的模型可接受最多 32 个提供商中立的媒体条目(text/image/audio/video/document),内联 base64 媒体单条目上限 8 MiB、跨请求合计 16 MiB;Jina v5 Omni 系列的EmbeddingsV5Request原生文档会被原样转发到https://api.jina.ai/v1/embeddings。
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" }可用提供商:OpenAI(GPT Image 2)、xAI(Grok Image)、Together AI(FLUX)、Fireworks AI、Nebius(FLUX)、Hyperbolic、NanoBanana、OpenRouter、SD WebUI(本地)、ComfyUI(本地)。本地推理部署(SD WebUI/ComfyUI)可通过 OmniRoute 纳入统一的路由与自动故障转移体系。
# 列出所有图像模型 GET /v1/images/generationsList Models(模型列表)
GET /v1/models Authorization: Bearer your-api-key → 以 OpenAI 格式返回所有聊天、嵌入、图像模型以及组合(combo)该端点由 src/app/api/v1/models/ 下的路由与目录构建模块(catalog.ts、catalogRequest.ts、catalogResponse.ts、modelById.ts等)支撑,目录中既包含直连提供商模型,也包含 OmniRoute 定义的组合路由(combo)模型。
英文原版进一步说明了两个对客户端影响显著的细节:
- 模型前缀模式(
?prefix=):目录中大部分模型以提供商前缀发布,可通过MODELS_CATALOG_PREFIX_MODE特性开关控制,并支持按请求覆盖——prefix=alias(每模型一个短别名)、prefix=dual(服务器默认,同时输出cc/…与claude/…两种 ID,目录规模约翻倍)、prefix=canonical(仅完整提供商前缀)。 - 无思考变体(no-thinking):支持思考的 Claude 模型会额外发布
claude-3-omniroute-no-thinking/<provider>/<model>形式的变体 ID,选择该 ID 会在/v1/messages路径上抑制推理(thinking:{type:"disabled"}),或在/v1/chat/completions路径上丢弃reasoning/reasoning_effort字段。
Compatibility Endpoints(兼容端点)
OmniRoute 不止暴露 OpenAI 格式,还同时提供 Anthropic、Gemini、Ollama 等生态的兼容入口,客户端可以“原格式进、原格式出”:
| 方法 | 路径 | 格式 |
|---|---|---|
| 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 |
专用提供商路由(Dedicated Provider Routes)
POST /v1/providers/{provider}/chat/completions POST /v1/providers/{provider}/embeddings POST /v1/providers/{provider}/images/generations当模型 ID 缺少提供商前缀时,网关会自动补全;若模型与路径中的提供商不匹配,返回400。
英文原版补充说明,/v1/rerank、/v1/classify、/v1/segment、/v1/moderations、/v1/audio/speech、/v1/images/edits、/v1/videos/generations、/v1/music/generations等也遵循同样的Bearer+ Zod 校验模式(schema 位于 src/shared/validation/schemas.ts)。针对无法携带Authorization头的客户端,还提供 URL 内嵌密钥的兼容写法(?token=、?apiKey=、?api_key=、?key=)以及/api/v1/vscode/{token}/...令牌化别名。
Semantic Cache(语义缓存)
# 获取缓存统计 GET /api/cache/stats # 清空全部缓存 DELETE /api/cache/stats响应示例:
{ "semanticCache": { "memorySize": 42, "memoryMaxSize": 500, "dbSize": 128, "hitRate": 0.65 }, "idempotency": { "activeKeys": 3, "windowMs": 5000 } }语义缓存是 OmniRoute 降本的核心机制之一:命中时直接在本地返回,不发起上游调用,因此X-OmniRoute-Response-Latency接近零。英文原版提醒延迟敏感客户端(基准测试、p50/p99 监控)应改用X-OmniRoute-Cache-Latency头判断:值为synthetic表示响应来自缓存、并非真实上游耗时,头缺失则表示真实上游调用。
缓存绕行有两条路径:
- 按密钥:创建/更新 API Key 时设置
cacheDefaultMode: "bypass",跳过缓存查找、始终访问上游; - 按请求:任何请求携带
X-OmniRoute-No-Cache: true即可绕过缓存(与密钥设置无关)。
Dashboard & Management(管理接口)
管理路由(/api/*,公开登录除外)不由普通推理 API Key 授权,需使用管理认证(Dashboard 会话、本地 CLI Token、oma_live_…Access Token 或带 manage 作用域的 API Key,详见 docs/guides/MANAGEMENT-AUTH.md)。下面按功能域列出全部管理端点。
认证(Authentication)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/auth/login | POST | 登录 |
/api/auth/logout | POST | 登出 |
/api/settings/require-login | GET/PUT | 开关“要求登录” |
提供商管理(Provider Management)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/providers | GET/POST | 列出/创建提供商 |
/api/providers/[id] | GET/PUT/DELETE | 管理单个提供商 |
/api/providers/[id]/test | POST | 测试提供商连接 |
/api/providers/[id]/models | GET | 列出提供商模型 |
/api/providers/validate | POST | 校验提供商配置 |
/api/provider-nodes* | Various | 提供商节点管理 |
/api/provider-models | GET/POST/PATCH/DELETE | 自定义模型(新增、更新、隐藏/显示、删除) |
OAuth 流程
| 端点 | 方法 | 说明 |
|---|---|---|
/api/oauth/[provider]/[action] | Various | 提供商专属 OAuth |
路由与配置(Routing & Config)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/models/alias | GET/POST | 模型别名 |
/api/models/catalog | GET | 按提供商+类型列出全部模型 |
/api/combos* | Various | 组合(combo)管理 |
/api/keys* | Various | API Key 管理 |
/api/pricing | GET | 模型定价 |
用量与分析(Usage & Analytics)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/usage/history | GET | 用量历史 |
/api/usage/logs | GET | 用量日志 |
/api/usage/request-logs | GET | 请求级日志 |
/api/usage/[connectionId] | GET | 单连接用量 |
设置(Settings)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/settings | GET/PUT/PATCH | 通用设置 |
/api/settings/proxy | GET/PUT | 网络代理配置 |
/api/settings/proxy/test | POST | 测试代理连接 |
/api/settings/ip-filter | GET/PUT | IP 白名单/黑名单 |
/api/settings/thinking-budget | GET/PUT | 推理 token 预算 |
/api/settings/system-prompt | GET/PUT | 全局系统提示词 |
监控(Monitoring)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/sessions | GET | 活动会话跟踪 |
/api/rate-limits | GET | 每账号速率限制 |
/api/monitoring/health | GET | 健康检查 + 提供商汇总(catalogCount、configuredCount、activeCount、monitoredCount) |
/api/cache/stats | GET/DELETE | 缓存统计/清空 |
备份与导入导出(Backup & Export/Import)
| 端点 | 方法 | 说明 |
|---|---|---|
/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 Sync)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/sync/cloud | Various | 云同步操作 |
/api/sync/initialize | POST | 初始化同步 |
/api/cloud/* | Various | 云端管理 |
隧洞(Tunnels)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/tunnels/cloudflared | GET | 读取 Cloudflare Quick Tunnel 安装/运行状态(供 Dashboard 展示) |
/api/tunnels/cloudflared | POST | 启用或禁用 Cloudflare Quick Tunnel(action=enable/disable) |
CLI 工具
| 端点 | 方法 | 说明 |
|---|---|---|
/api/cli-tools/claude-settings | GET | Claude CLI 状态 |
/api/cli-tools/codex-settings | GET | Codex CLI 状态 |
/api/cli-tools/droid-settings | GET | Droid CLI 状态 |
/api/cli-tools/openclaw-settings | GET | OpenClaw CLI 状态 |
/api/cli-tools/runtime/[toolId] | GET | 通用 CLI 运行时 |
CLI 响应统一包含:installed、runnable、command、commandPath、runtimeMode、reason。
ACP Agent(Agent Client Protocol)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/acp/agents | GET | 列出所有检测到的 Agent(内置+自定义)及状态 |
/api/acp/agents | POST | 添加自定义 Agent 或刷新检测缓存 |
/api/acp/agents | DELETE | 按id查询参数移除自定义 Agent |
GET 响应包含agents[](id、name、binary、version、installed、protocol、isCustom)与summary(total、installed、notFound、builtIn、custom)。
弹性与速率限制(Resilience & Rate Limits)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/resilience | GET/PATCH | 读取/更新请求队列、连接冷却、提供商熔断与等待设置 |
/api/resilience/reset | POST | 重置提供商熔断器 |
/api/rate-limits | GET | 每账号速率限制状态 |
/api/rate-limit | GET | 全局速率限制配置 |
评测(Evals)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/evals | GET/POST | 列出评测套件/运行评测 |
策略(Policies)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/policies | GET/POST/DELETE | 管理路由策略 |
合规(Compliance)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/compliance/audit-log | GET | 合规审计日志(最近 N 条) |
v1beta(Gemini 兼容)
| 端点 | 方法 | 说明 |
|---|---|---|
/v1beta/models | GET | 以 Gemini 格式列出模型 |
/v1beta/models/{...path} | POST | GeminigenerateContent端点 |
这些端点镜像 Gemini 的 API 格式,供依赖原生 Gemini SDK 兼容性的客户端使用。
内部 / 系统 API(Internal / System APIs)
| 端点 | 方法 | 说明 |
|---|---|---|
/api/init | GET | 应用初始化检查(首次运行时使用) |
/api/tags | GET | Ollama 兼容模型标签(供 Ollama 客户端) |
/api/restart | POST | 触发优雅服务重启 |
/api/shutdown | POST | 触发优雅服务关闭 |
/api/system/env/repair | POST | 修复 OAuth 提供商环境变量 |
/api/system-info | GET | 生成系统诊断报告 |
注意:这些端点供系统内部或 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" }Audio Transcription(音频转写)
POST /v1/audio/transcriptions Authorization: Bearer your-api-key Content-Type: multipart/form-data使用 Deepgram 或 AssemblyAI 转写音频文件。
请求示例:
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 }受支持模型 ID:deepgram/nova-3、assemblyai/best(英文原版补充:openai/whisper-1需 OpenAI Key;openrouter/deepgram/nova-3走 OpenRouter Key,裸deepgram/nova-3则不会经过 OpenRouter)。
受支持格式:mp3、wav、m4a、flac、ogg、webm。
实现层面,该端点由 open-sse/handlers/audioTranscription.ts 中的handleAudioTranscription处理(源码第 742 行),路由位于 src/app/api/v1/audio/transcriptions/route.ts。
Ollama Compatibility(Ollama 兼容)
面向使用 Ollama API 格式的客户端:
# 聊天端点(Ollama 格式) POST /v1/api/chat # 模型列表(Ollama 格式) GET /api/tags请求会在 Ollama 格式与 OmniRoute 内部格式之间自动翻译,因此 Ollama 生态的既有客户端无需改造即可接入 OmniRoute 的模型目录与路由能力。
Telemetry(遥测)
# 获取延迟遥测汇总(每提供商的 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/analytics/auto-routing(自动路由统计:调用总数、策略分布、层级分布、Top 提供商)、/api/analytics/compression(压缩统计:节省 token、节省百分比、模式与引擎分布)、/api/analytics/diversity(基于香农熵的提供商多样性追踪,防止单点故障)。
Budget(预算)
# 获取所有 API Key 的预算状态 GET /api/usage/budget # 设置或更新预算 POST /api/usage/budget Content-Type: application/json { "keyId": "key-123", "limit": 50.00, "period": "monthly" }Schema 说明(英文原版,
setBudgetSchema):apiKeyId必填;dailyLimitUsd、weeklyLimitUsd、monthlyLimitUsd三者至少其一大于 0;可选字段warningThreshold(0–1)、resetInterval(daily/weekly/monthly)、resetTime(HH:MM)。旧的{keyId, limit, period}形状返回400 Bad Request。
Request Processing(请求处理链路)
法语版文档给出了一个清晰的九步处理流程:
- 客户端向
/v1/*发送请求 - 路由处理器调用
handleChat、handleEmbedding、handleAudioTranscription或handleImageGeneration - 解析模型(直连 provider/model,或别名/组合)
- 从本地数据库选择凭据,并过滤账号可用性
- 聊天请求进入
handleChatCore:格式检测、翻译、缓存检查、幂等检查 - 提供商执行器向远端发送请求
- 响应翻译回客户端格式(聊天),或原样返回(嵌入/图像/音频)
- 记录用量与日志
- 出错时按组合(combo)规则执行故障转移
这些函数在源码中均可逐一对应:
- 路由层:
POST /v1/chat/completions→ src/app/api/v1/chat/completions/route.ts,最终调用 src/sse/handlers/chat.ts 的handleChat; - 核心逻辑:
handleChatCore定义于 open-sse/handlers/chatCore.ts(完成格式检测、翻译初始化、语义/签名缓存检查与组合压缩设置解析); - 嵌入:
handleEmbedding定义于 open-sse/handlers/embeddings.ts; - 图像:
handleImageGeneration定义于 open-sse/handlers/imageGeneration.ts; - 音频转写:
handleAudioTranscription定义于 open-sse/handlers/audioTranscription.ts。
英文原版在步骤 5–6 之间补充了两点:handleChatCore同时检查语义/签名缓存并解析组合压缩设置;启用压缩时(lite、Caveman、RTK 或叠加)会在提供商翻译之前执行主动压缩;第 8 步除用量外还会记录压缩分析与请求日志。
完整架构参考:docs/architecture/ARCHITECTURE.md。
Authentication(认证)
- Dashboard 路由(
/dashboard/*)使用auth_tokenCookie; - 登录校验已保存的密码哈希,回退到
INITIAL_PASSWORD; requireLogin可通过/api/settings/require-login切换;/v1/*路由在REQUIRE_API_KEY=true时可选要求 Bearer API Key。
这里区分两个认证面:/v1/*推理面使用普通 API Key(Bearer);/api/*管理面使用管理认证——Dashboard 会话、本地 CLI Token、oma_live_…Access Token 或带 manage 作用域的 API Key(四类凭据家族的完整说明见 docs/guides/MANAGEMENT-AUTH.md)。
结语
OmniRoute 的 API 面可以概括为“一套provider/model寻址体系 + 多协议兼容层 + 深度管理面”:客户端侧,无论是 OpenAI、Anthropic、Gemini 还是 Ollama 生态,都能以原生格式接入同一个网关,并借助自定义响应头获得缓存命中、路由决策与成本遥测等可观测信息;运维侧,从提供商/OAuth/Key 管理、用量分析、弹性治理到备份迁移,全部具备 REST 管理端点。机器可读的完整契约见 docs/openapi.yaml,最详尽的路由树以 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),仅供参考