正在获取状态
运行总览
ROUTING CORE ONLINE
所有线路,一眼掌控。
实时聚合 OpenRouter 账号余额、请求质量和虚拟密钥用量。
已知额度 —
尚无请求
出口代理检查中
UPSTREAM HEALTH
上游账号
自动轮询余额;认证失败会摘除,限流与网络故障进入冷却后自动切换。
| 账号 | 运行状态 | 剩余额度 | 今日用量 | 请求质量 | 最近同步 | 操作 |
|---|
ACCESS CONTROL
分发密钥
为不同调用方签发隔离凭证,并设置独立消费上限。
| 名称 | 密钥前缀 | 状态 | 已跟踪支出 | 消费上限 | 请求数 | 最近使用 | 操作 |
|---|
OPENROUTER COMPATIBILITY
调用指南
完整兼容 OpenRouter Chat Completions。只替换 Base URL 和 API Key,模型、Provider 路由与高级参数保持 OpenRouter 原样。
https://openrouter.s6o.org/v1快速开始
先创建一个 orpk_* 分发密钥。不要把管理员 Token 或真实 OpenRouter Key 用于业务调用。
base_url → 池地址;api_key → 管理页签发的 orpk_*。export ORBIT_API_KEY='orpk_替换为你的分发密钥'
curl https://openrouter.s6o.org/v1/chat/completions \
-H "Authorization: Bearer $ORBIT_API_KEY" \
-H "Content-Type: application/json" \
-H "X-OpenRouter-Metadata: enabled" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{"role":"user","content":"用一句话介绍你自己"}],
"temperature": 0.7,
"max_tokens": 300
}'/v1/chat/completions对话补全,支持 SSE/v1/models可用模型和模型 ID/v1/providersProvider 名称和 slug/v1/models/{author}/{slug}/endpoints某模型全部端点curl -N https://openrouter.s6o.org/v1/chat/completions \
-H "Authorization: Bearer $ORBIT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-4o-mini",
"messages": [{"role":"user","content":"逐步解释快速排序"}],
"stream": true,
"stream_options": {"include_usage": true}
}'OpenAI SDK 配置
接口保持 OpenAI-compatible;OpenRouter 扩展字段通过请求体原样传递。
TypeScript / JavaScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://openrouter.s6o.org/v1",
apiKey: process.env.ORBIT_API_KEY,
});
const result = await client.chat.completions.create({
model: "openai/gpt-4o-mini",
messages: [{ role: "user", content: "Hello" }],
});
console.log(result.choices[0].message.content);Python
from openai import OpenAI
import os
client = OpenAI(
base_url="https://openrouter.s6o.org/v1",
api_key=os.environ["ORBIT_API_KEY"],
)
result = client.chat.completions.create(
model="openai/gpt-4o-mini",
messages=[{"role": "user", "content": "Hello"}],
extra_body={
"provider": {"sort": "throughput"}
},
)
print(result.choices[0].message.content)Go(标准库)
payload := strings.NewReader(`{
"model":"openai/gpt-4o-mini",
"messages":[{"role":"user","content":"Hello"}],
"provider":{"sort":"latency"}
}`)
req, _ := http.NewRequest("POST",
"https://openrouter.s6o.org/v1/chat/completions", payload)
req.Header.Set("Authorization", "Bearer "+os.Getenv("ORBIT_API_KEY"))
req.Header.Set("Content-Type", "application/json")
resp, err := http.DefaultClient.Do(req)对齐 OpenRouter:两层路由
两种故障转移会叠加,但作用对象不同。
orpk_*model/models 与 provider 选择模型和推理 Providerprovider 是 OpenRouter 后面的推理服务商。池不会删除或改写 provider、models、工具调用、结构化输出等请求字段。model,并把隐私、Provider 白名单、参数兼容和价格限制放进本次请求的 provider;不要依赖某个账户后台的默认模型、BYOK 或隐私偏好。Provider Routing 完整说明
provider 放在 Chat Completions 请求 JSON 的顶层。
| 字段 | 类型 / 默认 | 用途 |
|---|---|---|
order | string[] | 按顺序优先尝试 Provider;未列出的仍可作为回退。 |
only / ignore | string[] | 白名单 / 黑名单,值必须是 Provider slug。 |
allow_fallbacks | boolean / true | 是否允许 OpenRouter 尝试备用 Provider。 |
sort | price | throughput | latency | 按价格、吞吐或首 token 延迟排序;设置后关闭默认负载均衡。 |
require_parameters | boolean / false | 只选完整支持本次参数的端点,避免静默忽略字段。 |
data_collection | allow | deny / allow | 是否允许可能存储数据的 Provider。 |
zdr | boolean | 只使用 Zero Data Retention 端点。 |
enforce_distillable_text | boolean | 只选择模型作者允许文本蒸馏的端点。 |
quantizations | string[] | 限制量化类型,例如 fp8、bf16。 |
preferred_min_throughput | number | percentile object | 偏好最低 tokens/s,不满足时仅降级排序,不是硬过滤。 |
preferred_max_latency | number | percentile object | 偏好最大延迟秒数,支持 p50/p75/p90/p99。 |
max_price | object | 硬性价格上限:prompt/completion 按 $/M tokens,另支持 request/image。 |
最高可用性
不传 provider。OpenRouter 在健康 Provider 中按价格倾向负载均衡,并保留回退。
"model": "openai/gpt-4o-mini"最高吞吐
也可给 model 加 :nitro 后缀。
"provider": {
"sort": "throughput"
}优先指定 Provider
先 Together,再 DeepInfra,失败后允许其他可用 Provider。
"provider": {
"order": ["together", "deepinfra"],
"allow_fallbacks": true
}只允许白名单
会降低可用性;没有满足条件的端点时返回 503。
"provider": {
"only": ["azure"],
"allow_fallbacks": false
}ZDR + 不收集数据
同时保证请求参数均被端点支持。
"provider": {
"zdr": true,
"data_collection": "deny",
"require_parameters": true
}价格上限
价格单位是每百万 token 的美元;超出上限不会执行。
"provider": {
"sort": "price",
"max_price": {
"prompt": 1,
"completion": 2
}
}{
"models": [
"anthropic/claude-sonnet-4.5",
"openai/gpt-5-mini",
"google/gemini-2.5-flash"
],
"messages": [{"role":"user","content":"分析这段代码"}],
"provider": {
"sort": {"by":"throughput","partition":"none"},
"preferred_min_throughput": {"p90":50},
"require_parameters": true,
"allow_fallbacks": true
}
}partition: "model"(默认)会先穷尽第一个模型的端点;partition: "none" 会把多个模型的端点放在一起全局排序。
模型与 Provider 对齐
不要猜 slug;从 API 或 OpenRouter 模型详情页复制精确值,包括 /turbo 等变体。
curl -s https://openrouter.s6o.org/v1/providers \
-H "Authorization: Bearer $ORBIT_API_KEY" \
| jq '.data[] | {name, slug}'# 找模型 ID
curl -s https://openrouter.s6o.org/v1/models \
-H "Authorization: Bearer $ORBIT_API_KEY" \
| jq -r '.data[] | [.id, .context_length] | @tsv'
# 查看单个模型实际可选的 Provider、定价和参数
curl -s https://openrouter.s6o.org/v1/models/openai/gpt-4o/endpoints \
-H "Authorization: Bearer $ORBIT_API_KEY" | jq .model 使用模型 ID(如 openai/gpt-4o);provider.only/order/ignore 使用 Provider slug(如 azure),两者不是同一个命名空间。响应、Provider 与费用对账
池不重新包装 OpenRouter 响应,可直接按 OpenRouter/OpenAI schema 解析。
id生成记录 ID;用于追踪一次 OpenRouter generation。model最终实际执行的模型;使用 models 回退时以它为准。usage.prompt_tokens输入 token,使用模型原生 tokenizer。usage.completion_tokens输出 token;推理 token 可在 details 中出现。usage.costOpenRouter 返回的本次实际成本;池据此累计虚拟密钥支出。openrouter_metadata请求头设置 X-OpenRouter-Metadata: enabled 后返回路由元数据,用于确认实际 Provider。id、model、usage 和 openrouter_metadata。不要用管理页上游账号名推断实际推理 Provider。HTTP-Referer 和 X-Title,用于 OpenRouter 应用归属;调用方无需自行设置。X-OpenRouter-Metadata: enabled 会继续原样透传。错误、重试与边界
调用方仍应处理最终返回的 OpenRouter 标准错误。
orpk_* 无效或已禁用- 池会在响应开始前对网络错误、408、429、5xx 和密钥级错误自动换账号;SSE 已输出后不会重放,避免重复 token。
/api/v1/key、credits、API Key 管理等账户接口被禁止透传,只能通过本管理页查看池级余额与密钥。- 强制
only、ZDR、量化或价格上限可能把候选端点缩减为零,此时放宽条件或加入备用模型。