透明路由和调用明细
透明的 GetVibe 路由器:通过 :alias 显式指定路由,或根据密钥策略自动路由。公共别名、故障转移,以及历史记录中的调试标头 x-getvibe-route 和 route/address_as 字段。
GetVibe 是一个透明路由器:你可以通过 :alias 后缀显式选择公共变体,或者使用不带后缀的模型名称,然后由网关根据你的账户/密钥策略选择路由;发生故障时,则切换到其他可用变体。响应和历史记录中只会使用公共路由标识符。
两种模式:固定或自动
| 参数 | 类型 | 描述 |
|---|---|---|
Explicit pin | model:alias or model:N | 请求始终会经过选定的变体。跨变体故障转移已关闭:遇到 429/5xx 时原样返回错误(允许在同一变体上重试)。 |
Auto (bare model) | 仅模型名称 | 网关会根据账户或 key 设置选择变体。在 429/5xx 和空的 200 响应时,它会尝试同一模型的其他变体,同时考虑成本和输入限制。 |
"model": "claude-opus-4.8" // auto — key strategy
"model": "claude-opus-4.8:yellow" // pin — :yellow only, no switching to other channels
"model": "claude-opus-4.8:2" // pin — catalog variant #2 (legacy :N syntax)价格范围:max_price 和 min_price
每个模型都由多个价格不同的渠道提供服务,这些渠道构成一个阶梯。这两个请求体参数用于指定该阶梯中哪些档位可以为你提供服务。两者的单位都是每 1M 个 token 的 USD,与Models页面显示的单位和数字完全相同。它们会与我们的价格进行比较,即你需要支付的价格,而不是与你无法看到的批发价格比较。
| 参数 | 类型 | 描述 |
|---|---|---|
max_price | 数字或对象 | 上限。一个数字会同时限制 BOTH 两个部分;对象则分别限制它们:{"input": 0.5, "output": 2}。省略的部分不设上限。包含边界:等于已发布价格的上限允许使用该通道。 |
min_price | 数字或对象 | 价格下限,相同形状。拒绝价格低于它的通道 — 适用于不希望请求由目录中折扣力度最大的通道提供服务的调用方。它只能让请求成本更高,不能更低。 |
{
"model": "deepseek-v4-flash-0731",
"messages": [{"role": "user", "content": "hi"}],
"max_price": 0.02,
"min_price": {"input": 0.001}
}输入和输出两项都必须符合,不能取两者的平均值。输入便宜、输出昂贵的渠道不满足单一数值上限。
在控制台中一次性设置的固定上限
无需在每次调用中重复设置上限。dashboard 会按 API key 和模型分别存储一个上限,并另外存储一个适用于所有未显式设置模型的默认上限;API 会在每次请求中读取该设置。携带 max_price 的请求会在此次调用中改用该值;未携带该参数的请求会使用你存储的上限。优先级从最具体到最宽泛:
| 参数 | 类型 | 描述 |
|---|---|---|
max_price in the request | 每次调用 | 仅替换本次请求存储的上限值,即整体替换,而不是逐项合并。 |
key + model | stored | 此 API 密钥对该模型的额度上限。 |
account + model | stored | 您的账户对该模型设置的上限,未设置上限的 key 会使用此值。 |
key / account default | stored | 适用于所有没有专属上限的模型的兜底上限。 |
在哪里查看您所设价格上限对应的价格
GET /api/catalog 会为每个模型发布一个 channels 数组:每个条目对应请求可能落到的一个渠道,按价格从低到高排列;每个条目都包含可用于固定该渠道的地址、其 inputUsd / outputUsd 每 1M tokens 的价格,以及它是否为默认渠道。这些就是 max_price 和 min_price 进行比较时使用的确切数字,也是实际计费的确切数字,只有一份列表,而不是三份。
curl -s https://getvibeapi.com/api/catalog | jq '.[] | select(.apiModel=="z-ai/glm-5.3") | .channels'您的计费内容
您需要为实际处理请求的通道付费,另加我们的固定加价,而不是为您设置的价格上限付费,且费用绝不会超过该上限。如果您设置了价格上限,而请求最终在更低的档位完成,您只需支付更低档位的价格。模型页面上的价格阶梯显示的是一个范围,“起始价格”是现有档位中最便宜的价格,这是您实际可能被收取的价格,并不承诺本次请求一定会落在该档位。需要保证费用上限时,请设置 max_price。
没有任何内容适合时
请求被 拒绝:HTTP 422,并附带 "type": "price_bound_no_lane",列出该模型最便宜和最昂贵的通道价格 以及完整的 channels 列表,这样你可以根据这些数字选择上限,而不必猜测。lowest_passing_usd_per_million 是当前允许某个通道的最小上限,也就是某个通道自身的一对价格,因此发送该值即可通过(两个 cheapest 端可能来自不同通道)。当交换服务本身拒绝了你设置的上限时,也会出现同一个字段:此时它是仍有供应的下一个价格档位,并且绝不会低于你发送的上限。当你的上限 并非限制时,也就是我们对该通道的购买上限生效,而低于该上限的报价正忙或已耗尽,返回的则是 HTTP 503 "type": "no_seller_available",附带 Retry-After 且没有建议价格:提高 max_price 没有帮助,稍后重试可能有效。最便宜的档位通常只有一个正忙的报价,因此若要可靠地完成请求,请将上限设置为不低于该模型的 priceTypical,因为大多数供应都集中在那里。我们绝不会悄悄使用更昂贵的通道,也绝不会替换为其他模型。格式错误的值,例如字符串、零、负数或未知字段,会被 400 invalid_request_error,绝不会被静默忽略。
{
"error": {
"message": "No channel of model "deepseek-v4-flash-0731" is priced within your max_price $0.0001 in / $0.0001 out...",
"type": "price_bound_no_lane",
"code": 422,
"param": "max_price",
"cheapest_usd_per_million": {"input": 0.0065, "output": 0.013},
"dearest_usd_per_million": {"input": 0.0528, "output": 0.1584},
"lowest_passing_usd_per_million": {"input": 0.0205, "output": 0.0613},
"channels": [
{"address": "deepseek/deepseek-v4-flash-0731:codebuddy-cn", "label": "codebuddy-cn", "inputUsd": 0.0205, "outputUsd": 0.0613, "isDefault": true},
{"address": "deepseek/deepseek-v4-flash-0731:qwencloud", "label": "qwencloud", "inputUsd": 0.0378, "outputUsd": 0.1132, "isDefault": false}
]
}
}可固定的池名称
通过供应商订阅池提供服务的通道可按名称寻址。将名称写在冒号后面,与其他别名完全相同:
"model": "gpt-6.1-sol:codex" // pin a subscription pool
"model": "claude-opus-5.5:claude-code" // pin the Claude Code pool| 参数 | 类型 | 描述 |
|---|---|---|
:codex | pool | 按名称访问此池。也接受::openai-codex。 |
:qwencloud | pool | 按名称访问此池。也接受::alibaba-qwencloud。 |
:zai | pool | 按名称访问此池。也接受::z-ai-glm-coding-plan。 |
:claude-code | pool | 按名称访问此池。 |
:antigravity | pool | 按名称访问此池。 |
:grok | pool | 按名称访问此池。 |
:codebuddy | pool | 按名称访问此池。 |
:codebuddy-cn | pool | 按名称访问此池。 |
:clinepass | pool | 按名称访问此池。 |
:command-code | pool | 按名称访问此池。也接受::commandcode。 |
:opencode | pool | 按名称访问此池。也接受::opencode-go。 |
:mimo | pool | 按名称访问此池。 |
:kiro-pool | pool | 按名称访问此池。 |
:meta-ai | pool | 按名称访问此池。 |
:minimax-cn | pool | 按名称访问此池。 |
:qwencloud-alibaba-cn | pool | 按名称访问此池。 |
:marketplace | pool | 按名称访问此池。也接受::bare-marketplace-alias。 |
:nous | pool | 按名称访问此池。 |
x-pv-deprecated-alias / x-pv-use-instead),但此处不会显示该形式,新集成应使用此名称。每个池都是一个拥有独立价格阶梯的渠道;以数字结尾的旧频段拼写(:claude-code-2)仍会解析到该池。公共别名(:alias)
冒号后的后缀是一个 公开的 路由标识符,而不是上游名称。特定模型的完整列表位于目录中(Models 的“«In API»”列)。主要别名:
| 参数 | 类型 | 描述 |
|---|---|---|
:yellow | alias | 面向许多模型提供的公共变体;价格见目录。 |
:codex / :claude-code / … | alias | 订阅池,名称列于上方“可固定的池名称”中。 |
:pixel / :flow | alias | 媒体路由(图像/视频),而非聊天。 |
密钥设置
对于 auto 请求(仅指定模型名称),以下设置可在每个 API 密钥上配置(控制台 → API keys):
| 参数 | 类型 | 描述 |
|---|---|---|
routingStrategy | string | priority(默认)— providerPriority 的顺序,否则使用目录中的第一个变体;price — 对我们来说最便宜的变体;latency — 根据近期测量结果速度最快的变体;default — 严格使用第一个符合条件的变体。 |
providerPriority | list | 内部提供商标签的优先级(控制台中显示的人类可读名称)。与 strategy=priority 搭配使用。 |
disabledProviders | list | 排除提供商参与自动路由。如果变体存在,仍可显式调用 :alias。 |
cacheOnly | boolean | 仅限支持 prompt-cache 的变体,适合重复的前缀。 |
allowedModels 以及下表中的限制。路由策略
| 参数 | 类型 | 描述 |
|---|---|---|
priority (default) | strategy | 通常使用的默认路由。 |
price | strategy | 在该模型可用的变体中选择价格最低的变体。 |
latency | strategy | 根据近期测量结果选择最快的变体。 |
cacheOnly | boolean | 仅限启用缓存的变体,适合重复的提示词前缀。 |
:yellow),则始终遵循该设置,路由不会覆盖它。可在控制台 → API keys 中按密钥配置。显式选择提供商
在冒号后添加供应商别名,无论路由策略如何,该别名都会生效。别名和示例的完整列表位于 Models → Providers 部分。
"model": "claude-opus-4.8" // auto — key strategy
"model": "claude-opus-4.8:yellow" // explicitly pin the :yellow channel
"model": "claude-opus-4.8:kiro-pool" // explicitly pin the :kiro-pool channel关键限制
对于每个 API 密钥,你都可以在控制面板中设置:
| 参数 | 类型 | 描述 |
|---|---|---|
allowedModels | 模型列表 | 此 key 可以调用的模型白名单。为空表示全部允许。请求不在列表中的模型会返回 403。 |
routingStrategy / cacheOnly | override | 此密钥的策略和缓存筛选器。 |
limitRub | 支出限额 | 密钥的支出限额。 |
allowedIps | IP 白名单 | IP 限制(请参阅“Authentication”部分)。 |
故障转移(仅自动模式)
使用裸模型时,如果当前模型变体返回 429、5xx,或返回没有内容的空 200,网关可能会切换到同一模型的另一个公开变体。限制条件:
- 包含图像/PDF 的请求不会切换到其他提供商(视觉兼容性)。
- 故障转移不会切换到价格明显更高的变体(strategy=price 除外)。
- 每个客户端请求的尝试次数有一个上限。
- 使用 pin(
:alias)时,跨供应商故障转移为关闭,您会收到所选路由的错误。
Errors and limits中介绍了在 429 时使用指数退避进行重试。
请求路由明细 — 显示哪个路由处理了请求
对于受信任的 reveal/debug 客户端,请求完成后(包括 auto 模式)可以通过 headers 查看实际运行的是哪个 public variant。普通客户端不会获得此数据。
受信任的 reveal/debug 客户端的响应标头(chat / messages / responses)
| 参数 | 类型 | 描述 |
|---|---|---|
x-getvibe-route | string | 公共路由别名:yellow、codex、claude-code、… |
x-getvibe-model | string | 用于重新固定的 model 值:base 或 base:alias(例如 gpt-6.1-sol:yellow)。显式固定后,该值会与你的选择一致。 |
x-pv-generation-id | string | 历史记录 ID(非流式)。请参阅余额和历史记录。 |
curl -sD - https://getvibeapi.com/v1/chat/completions \
-H "Authorization: Bearer $GETVIBE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"gpt-6.1-sol","messages":[{"role":"user","content":"ping"}],"max_tokens":8}' \
-o /dev/null | grep -i getvibe
# x-getvibe-route: yellow
# x-getvibe-model: gpt-6.1-sol:yellow使用情况历史记录
在 GET /v1/generations、GET /v1/usage 和控制面板中,每条记录都包含以下字段:
| 参数 | 类型 | 描述 |
|---|---|---|
model | string | 基础模型名称(不含内部后缀)。 |
route | string | null | 获胜路由的公开 :alias。 |
address_as | string | 重新固定时 model 字段的确切值(类似目录中的 addressAs)。 |
cost_detail | object | 费用计算方式:显示 token 行及其每 1M 的费率(lines)、附加费(adjustments)和总额。Marketplace 渠道会按完成请求的卖家所在的价格等级(阶梯档位)计费,因此当该价格与列表费率不同时,rateBasis 为 "tier",各行会按该等级的费率显示并加总为费用,而 tier 表示该费率。realisedRate {input, output} 是请求实际计费时每 1M 的价格,可在模型的价格阶梯(/api/model-ladder)中查找,以确定由哪个档位完成请求;当请求按每次请求的最低费用计费时,minimumCharge 为 true,且 realisedRate 为 null。发送 max_price 可限制使用的档位。 |
model 和 cost_usd 中的内部后缀会保持隐藏(具有显示例外权限的客户端除外)。通道明细仅位于响应头和历史记录中,不会破坏 SDK。限制
GetVibe 不会在请求体中提供列出上游提供商的“raw”瀑布流列表。控制方式是使用公共 :alias、密钥策略,以及模型目录中的自动故障转移。没有单独的“忽略提供商”API,也没有路由 ZDR 标志。