跳转到主要内容

概述

/v1/models/pricing 是一个公开匿名的聚合接口,输出平台当前可用的所有模型及其对外公示价。响应严格遵循 OpenRouter Providers 规范,同时也可被任意第三方平台或客户端程序化抓取。
该接口是「对外公示价」入口,不带任何用户身份。返回的价格是默认分组(default)的最终成交价(USD),与匿名抓取场景一致。登录后的真实付费价请使用 /api/pricing(携带用户分组、等级折扣等上下文)。

适用场景

接口定义

请求示例

响应结构

顶层结构始终用 data 数组包裹:

顶层字段

Model 对象字段

Pricing 对象字段

所有价格以 美元(USD)字符串 表示。token 类字段单位为 USD / token,扁平类字段单位见说明列。
  • 缺省的字段在响应中可能直接返回 "0"(基础四字段:prompt / completion / request / image 始终存在),或被省略(可选字段)
  • "0" 既可能代表「免费」也可能代表「该模型不支持此维度」;建议结合 supported_features 与 supported_sampling_parameters 综合判断

supported_features 枚举

三种计费模式的映射

平台支持三种计费模式(详见 产品定价),全部能映射到 OpenRouter 规范字段:

价格计算说明

公示价计算公式:
  • base_price:管理员后台配置的官方报价
  • group_ratio:默认分组(default)的分组倍率
  • currency_factor:若 base 配置为 CNY 则除以汇率换为 USD,配置为 USD 则保持不变
  • 不包含:代理商加价、用户等级折扣、用户专属倍率、时间段倍率、运行时动态因子
登录用户的实际付费可能与公示价不同。如果用户属于其它分组、有等级折扣、或在代理商域名下访问,会有不同价格。匿名抓取只反映平台对外公示的基础价。

分层定价

某些模型在不同上下文长度区间有不同单价(如 Gemini 1.5 / 2.5 Pro 在 ≥128K 时翻倍)。这类模型的「高档价格」会通过 pricing_tiers 数组输出:
  • pricing 是基础层(PromptTiers 中阈值最低的那档)
  • pricing_tiers[i] 是高档;当请求总输入 tokens ≥ min_context 时按此层计费
  • 当前最多返回 1 个高档(与 OpenRouter 规范的最多 2 层一致)

数据来源:结构化 Prompt Tiers

平台后台为每个模型配置「Prompt Tiers」结构化分层。每档由两个字段构成: 运行时计费与对外公示用同一份数据——保证公示价 ≡ 实际计费价,OpenRouter 月度对账不会偏移。

切档维度

阈值匹配按 「总输入 tokens」 进行,包含缓存与多模态:
这与 OpenRouter min_context 及 Gemini / Claude 官方分层文档语义对齐——「按总上下文长度切档」,否则用户全走缓存就能绕过分层定价。

匹配规则

从大到小匹配:取满足 total >= min 的档中阈值最大的那档。全量按命中档单价计费(与官方厂商一致,不是阶梯递进)。 不命中任何档时走基础档(阈值最低那档)。

不支持公示的分层维度

OpenRouter 规范只能表达「按上下文 token 数」的单维度切档。对于以下场景,平台仍使用通用规则引擎(Conditions)计费,但不会通过 pricing_tiers 公示——OpenRouter 只看到基础价:
  • 按图像质量切档(如 request.body.quality == '1080p')
  • 按视频时长切档(如 request.body.duration > 30)
  • 按响应特征切档(如 response.body.usage.reasoning_tokens > 100)
  • 复合条件(&& / || 组合)
如需让 OpenRouter 接入这类模型,建议为该模型在 default 分组下额外配置一份无条件价格作为公示基线。

数据更新与缓存

与其它接口的区别

常见问题

公示价是匿名场景下「默认分组」的最终成交价。如果你属于其它分组(如 pro / premium)、有等级折扣、或在代理商域名下访问,实际付费会有差异。登录后请通过 /api/pricing 查询你自己的真实价格。
"0" 在协议中既可能表示「免费」也可能表示「该模型不支持此维度」。建议结合 supported_features 与 supported_sampling_parameters 判断模型能力,不要仅凭 pricing 字段推断功能支持情况。
OpenRouter 规范不支持 per_second 字段,平台会按管理员配置的「典型用例秒数」(默认 30 秒)把 每秒单价 × 秒数 换算为 request / video / audio 字段的公示价。实际计费始终按真实秒数 × 单价,对账时不会因换算而少扣或多扣。
接口有每 IP 严格限流。建议:
  • 抓取频率不高于每 5 分钟一次
  • 利用响应头 Cache-Control: max-age=60 做客户端缓存
  • 长期监控可订阅平台公告渠道,而非高频轮询
当前接口不支持过滤参数,始终返回全部正常状态的模型。客户端可在拿到 data 数组后自行按 supported_features / input_modalities 等字段过滤。