OmniRoute API 参考:OpenAI 兼容网关的完整端点指南与请求处理流程
【免费下载链接】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 统一 AI 网关的 API 完整参考指南,覆盖公共/v1推理接口(Chat Completions、Embeddings、图像生成、音频转写、OCR 等)、多协议兼容端点(Anthropic / Gemini / Ollama)、管理面 Dashboard API(Provider 管理、用量分析、缓存、备份、Webhooks)以及认证与请求处理全链路。读完本文,你将掌握 OmniRoute 每个端点的方法、请求/响应格式与鉴权方式,并理解请求从进入网关到返回结果的完整处理流水线,可直接用于接入 Claude Code、Codex、Cursor 等客户端或自建调用。
本文以 docs/i18n/ko/docs/reference/API_REFERENCE.md(韩语版,与英文主文档 docs/reference/API_REFERENCE.md 内容一致)为骨架,并结合仓库源码与路由实现进行扩展。机器可读的完整接口定义见 docs/openapi.yaml,
src/app/api/下的路由树是端点实现的权威来源。
目录
- Chat Completions
- Embeddings
- Image Generation
- List Models
- Compatibility Endpoints
- Semantic Cache
- Dashboard & Management
- Request Processing
- Authentication
Chat Completions
对话补全走 OpenAI 格式,是网关的核心入口:
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 }模型 ID 采用provider/model前缀结构(如cc/claude-opus-4-6),也支持别名(alias)与组合(combo)路由。请求体由 Zod schema 校验,失败时返回 4xx。
自定义请求/响应头
| Header | 方向 | 说明 |
|---|---|---|
X-OmniRoute-No-Cache | 请求 | 设为true时绕过语义缓存 |
X-OmniRoute-Progress | 请求 | 设为true时启用进度事件 |
X-Session-Id | 请求 | 外部会话亲和性的粘性会话键 |
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;。
这些响应头在源码中集中定义于 src/shared/constants/headers.ts 的OMNIROUTE_RESPONSE_HEADERS常量,其中包含cache、cacheHit、cacheLatency、costSaved、decision、latencyMs、model、provider、requestId、responseCost、tokensIn、tokensOut、version等完整字段,可据此在客户端解析成本与路由信息。
成本遥测响应头
非流式成功响应还会携带一组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。这些头由 Chat Completions、/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)共同发出。
缓存命中成本语义:语义缓存命中(
X-OmniRoute-Cache-Hit: true)时不发起上游调用,因此X-OmniRoute-Response-Cost为0.0000000000(命中服务的增量成本);原本应产生的成本单独通过X-OmniRoute-Cost-Saved上报。计费消费方应累加X-OmniRoute-Response-Cost(命中不计费),缓存分析则可聚合X-OmniRoute-Cost-Saved。
压缩计划覆盖头x-omniroute-compression
该请求头可按请求覆盖压缩计划,优先级最高——高于路由组合覆盖、激活配置文件、自动触发与面板默认值。取值:
| 值 | 效果 |
|---|---|
off | 本请求不压缩 |
default | 使用面板派生的 Default 配置(忽略激活的配置文件) |
engine:<id> | 使用单个引擎,如engine:rtk |
<combo> | 具名组合,先按名称(不区分大小写)匹配,再按 id 匹配 |
注意:未知值会被忽略(请求不会被拒绝),解析会回退到常规优先级;多个组合同名时请传组合id以获得确定性匹配;名为off或default的组合不能按名称选择(这两个关键字优先解释),需用其 id 引用;全局压缩总开关是硬性门槛,全局禁用时该头无法启用压缩。实际应用的压缩方案会在响应头中回显:X-OmniRoute-Compression: <mode>; source=<source>,其中<source>为request-header、routing-override、active-profile、auto-trigger、default或off之一。
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。列出全部嵌入模型:
GET /v1/embeddingsImage 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(本地)。列出全部图像模型:
GET /v1/images/generationsList Models
GET /v1/models Authorization: Bearer your-api-key → 以 OpenAI 格式返回全部聊天、嵌入、图像模型 + 组合模型 ID 前缀(?prefix=)
模型 ID 的前缀形式由MODELS_CATALOG_PREFIX_MODE特性开关控制,也可按请求用查询参数覆盖:
GET /v1/models?prefix=alias # 每个模型一个 ID —— 短别名前缀 GET /v1/models?prefix=dual # 两种形式(服务器默认) GET /v1/models?prefix=canonical # 仅完整 provider-id 前缀| 模式 | 输出 | 说明 |
|---|---|---|
dual | cc/claude-sonnet-4-6与claude/claude-sonnet-4-6 | 默认。两个 ID 路由到同一模型,保证硬编码任一形式的客户端配置继续工作;目录规模约翻倍 |
alias | cc/claude-sonnet-4-6 | 每模型一条。无独立别名的提供商仍输出其条目,不丢失 |
canonical | claude/claude-sonnet-4-6 | 每模型一条,使用完整 provider-id 前缀 |
dual模式的镜像条目还带有parent字段指向主 ID。渲染模型选择器的客户端应请求?prefix=alias(例如 OmniCopilot VS Code 扩展即如此)。
无思考(no-thinking)模型变体
对于支持思考的 Claude 模型,/v1/models还会公布一个no-thinking变体,ID 前缀为claude-3-omniroute-no-thinking/:
claude-3-omniroute-no-thinking/<provider>/<model>选择该 ID(例如在始终附加thinking块的 Claude Code 配置中)会解析回真实<provider>/<model>并抑制推理:在/v1/messages路径上为thinking:{type:"disabled"},在/v1/chat/completions路径上丢弃reasoning/reasoning_effort字段。该变体仅对支持思考且接受disabled的 Claude 模型列出;操作员可通过ModelSpec.noThinkingAlias按模型强制开启或关闭该变体。对应实现位于 open-sse/utils/noThinkingAlias.ts。
Compatibility Endpoints
| 方法 | 路径 | 格式 |
|---|---|---|
| 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 |
专用提供商路由
POST /v1/providers/{provider}/chat/completions POST /v1/providers/{provider}/embeddings POST /v1/providers/{provider}/images/generations提供商前缀缺失时会自动补全。模型与提供商不匹配时返回400。
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 } }命中时延影响
语义缓存命中时响应不经上游调用直接返回,因此X-OmniRoute-Response-Latency接近为零(与原始上游时延无关)。对时延敏感的客户端(基准测试、p50/p99 监控)应检查X-OmniRoute-Cache-Latency响应头:
| 值 | 含义 |
|---|---|
synthetic | 响应来自缓存;时延非真实上游时间 |
| (缺失) | 来自真实上游调用 |
按 Key 绕过缓存
API Key 可通过cacheDefaultMode选择退出语义缓存读取:
| 值 | 行为 |
|---|---|
legacy | 正常缓存行为(默认) |
bypass | 完全跳过缓存查找,始终命中上游 |
在创建 Key(POST /api/keys)或更新(PATCH /api/keys/[id])时设置:
{ "cacheDefaultMode": "bypass" }按请求绕过缓存
任何请求无论 Key 设置如何都可绕过缓存:
X-OmniRoute-No-Cache: trueDashboard & Management
管理路由(/api/*,公共 auth/login 除外)不由普通推理 API Key 授权。凭证族、作用域与 curl 示例见 Management Authentication。
Authentication
| 端点 | 方法 | 说明 |
|---|---|---|
/api/auth/login | POST | 登录 |
/api/auth/logout | POST | 登出 |
/api/settings/require-login | GET/PUT | 切换是否要求登录 |
Provider Management
| 端点 | 方法 | 说明 |
|---|---|---|
/api/providers | GET/POST | 列出 / 创建 Provider |
/api/providers/[id] | GET/PUT/DELETE | 管理单个 Provider |
/api/providers/[id]/test | POST | 测试 Provider 连接 |
/api/providers/[id]/models | GET | 列出 Provider 模型 |
/api/providers/validate | POST | 校验 Provider 配置 |
/api/provider-nodes* | 多种 | Provider 节点管理 |
/api/provider-models | GET/POST/PATCH/DELETE | 自定义模型(添加、更新、隐藏/显示、删除) |
OAuth Flows
| 端点 | 方法 | 说明 |
|---|---|---|
/api/oauth/[provider]/[action] | 多种 | Provider 专属 OAuth |
Routing & Config
| 端点 | 方法 | 说明 |
|---|---|---|
/api/models/alias | GET/POST | 模型别名 |
/api/models/catalog | GET | 按 Provider + 类型列出全部模型 |
/api/combos* | 多种 | 组合管理 |
/api/keys* | 多种 | 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 | 健康检查 + Provider 摘要(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 | 多种 | 云同步操作 |
/api/sync/initialize | POST | 初始化同步 |
/api/cloud/* | 多种 | 云管理 |
Tunnels
| 端点 | 方法 | 说明 |
|---|---|---|
/api/tunnels/cloudflared | GET | 读取 Cloudflare Quick Tunnel 安装/运行状态供 Dashboard 展示 |
/api/tunnels/cloudflared | POST | 启用或禁用 Cloudflare Quick Tunnel(action=enable/disable) |
CLI Tools
| 端点 | 方法 | 说明 |
|---|---|---|
/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 Agents
| 端点 | 方法 | 说明 |
|---|---|---|
/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 | 读取/更新请求队列、连接冷却、Provider 熔断与等待设置 |
/api/resilience/reset | POST | 重置 Provider 熔断器 |
/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 兼容性的客户端。
Internal / System APIs
| 端点 | 方法 | 说明 |
|---|---|---|
/api/init | GET | 应用初始化检查(首次运行时使用) |
/api/tags | GET | Ollama 兼容模型标签(供 Ollama 客户端) |
/api/restart | POST | 触发优雅服务重启 |
/api/shutdown | POST | 触发优雅服务关闭 |
/api/system/env/repair | POST | 修复 OAuth Provider 环境变量 |
/api/system-info | GET | 生成系统诊断报告 |
注意:这些端点由系统内部使用或用于 Ollama 客户端兼容,通常不由最终用户调用。
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" }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 }支持提供商:deepgram/nova-3、assemblyai/best。
支持格式:mp3、wav、m4a、flac、ogg、webm。
Ollama Compatibility
面向使用 Ollama API 格式的客户端:
# Chat 端点(Ollama 格式) POST /v1/api/chat # 模型列表(Ollama 格式) GET /api/tags请求会在 Ollama 与内部格式之间自动转换。
Telemetry
# 获取时延遥测摘要(每 Provider 的 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 } } }Budget
# 获取所有 API Key 的预算状态 GET /api/usage/budget # 设置或更新预算 POST /api/usage/budget Content-Type: application/json { "keyId": "key-123", "limit": 50.00, "period": "monthly" }Request Processing
- 客户端发送请求到
/v1/* - 路由处理器调用
handleChat、handleEmbedding、handleAudioTranscription或handleImageGeneration - 解析模型(直接 provider/model,或别名/组合)
- 从本地数据库选择凭证,并经过账户可用性过滤
- Chat 流程进入
handleChatCore—— 格式检测、翻译、缓存检查、幂等检查 - Provider 执行器向上游发送请求
- 响应翻译回客户端格式(chat)或原样返回(embeddings/images/audio)
- 记录用量/日志
- 出错时按组合规则应用回退
Chat 核心链路在 src/sse/handlers/chat.ts 中实现,包含路由模型解析、凭证配额预检、组合路由(handleComboChat)与压缩设置解析等关键环节。完整架构参考:ARCHITECTURE.md。
Authentication
- Dashboard 路由(
/dashboard/*)使用auth_tokencookie - 登录使用已保存的密码哈希;回退到
INITIAL_PASSWORD requireLogin可通过/api/settings/require-login切换- 当
REQUIRE_API_KEY=true时,/v1/*路由可选要求 Bearer API Key
v3.8.0 破坏性变更:
/api/v1/agents/tasks/*与冷却管理端点现在要求管理认证(Dashboardauth_tokencookie 或管理作用域 API Key)。此前未认证调用这些路由的客户端将收到401 Unauthorized。
延伸阅读
- API 参考(英文主文档):包含独占托管会话租约、文件/批处理 API、WebSocket 流式、搜索/网页抓取、A2A/MCP 服务器等扩展端点
- docs/openapi.yaml:机器可读的完整 OpenAPI 定义
- Management Authentication:管理面四类凭证族详解
- ARCHITECTURE.md:整体架构与请求流水线
- THINKING_BUDGET.md:推理预算配置
【免费下载链接】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),仅供参考