比价 API
比价 API
POST /v1/price-comparisons 把 BeatAPI 某个已公开计价规格的价格,与其他平台对同一规格公开标出的价格放在一起比较。调用不需要 API key,也不计费。
这是中立比价。BeatAPI 和其他平台按同一套规则排名;别的平台更便宜时,结果会照实说明,此时 beatapi_position 为 not_lowest。
快速开始
只传 model 时,比较该型号的常用规格,参与方是所有存有该规格报价的平台。传 spec 可以换一个规格,传 providers 可以指定参与比较的平台。
请求
model 和 spec 各自最长 200 个字符。model 为空时,用 spec 查找型号。
常用规格
不传 spec 时,按规格形态选出一个规格,与哪个平台更便宜无关:
- 文本型号:输入 tokens。
- 视频型号:第一个不带参考视频、也不是视频转视频的 720p 规格。
- 图片型号:第一个普通图片规格,例如
nano-banana-pro-1k。
model 本身就是规格 ID 时,比较的就是这个规格。
规格 ID
规格 ID 来自匿名价目表:GET https://api.beatapi.io/v1/pricing 的 data.groups[].specs[] 中每一项都有 id。每次比价也会返回该型号的 available_specs。
平台 ID
平台 ID 为小写,与 quotes[].provider 返回的值一致;beatapi 即 BeatAPI。传了 providers 时只比较列出的平台,所以要让 BeatAPI 参与排名,就要列上 beatapi。列出的平台如果没有该规格的报价,会以 pending_verification 返回。比价表里不存在的 ID 会被 400 拒绝。
响应
调用成功返回 200,结果放在 data 中,与 GET /v1/pricing 的外层结构相同。响应不缓存(Cache-Control: no-store)。
下面的示例使用 2026-11-11 核对的价格。价格、日期和 data_version 都会随时间变化,以实际调用结果为准。
示例中的各项数字这样得出:
- 参与排名的四个报价是 0.05、0.126、0.1344 和 0.15。
atlascloud的估价和higgsfield不提供的规格照列,但不参与排名。 - 最低价:0.05(
beatapi)。第二位:0.126(wavespeed)。(0.126 − 0.05) ÷ 0.126 = 60.32%。 - 均价:(0.05 + 0.126 + 0.1344 + 0.15) ÷ 4 = 0.1151。(0.1151 − 0.05) ÷ 0.1151 = 56.56%。
顶层字段
计价单位
所有金额以美元计,并以十进制字符串返回,小额价格不会被舍入成零。null 表示没有可信的价格;"0" 才表示免费。
报价
只有同时满足以下条件的报价才参与排名:有金额、30 天内核对过、与该规格完全一致、不是估价。其他报价仍保留在 quotes 中并附 exclusion_reason,可以看到谁没参与、为什么。
BeatAPI 的报价是 GET /v1/pricing 里的实时零售价,BeatAPI 一改价,下一次比价就会体现。其他平台的价格由人工对照其公开页面核对。
汇总与四项指标
百分比是保留两位小数的字符串,用未舍入的金额计算,最后四舍五入。参与排名的平台不足两家或分母为零时,该指标为 null,不会出现 NaN。mean_amount 保留 8 位小数。
型号有歧义时
名称同时匹配多个型号时,返回 200 和 needs_clarification:
从候选中选一个原样作为 model 提交。完整名称、slug 或规格 ID 的精确匹配总是优先于部分匹配,所以 Nano Banana Pro 只会对应一个型号。名称一个型号都匹配不上时,同样返回 needs_clarification,但没有 model_candidates。
错误
错误使用统一的错误对象。需要修改的请求返回 400 bad_request,message 会指出问题:
400 不要原样重发。500 internal_error 表示比价暂时无法计算;重试一次,仍失败请带上 request_id 联系支持。

