Provider Pricing API
与 Hvoy 1.0/1.1 兼容的中转站价格接口参考,适用于 NewAPI、Sub2API 以及自研中转站。
XTokenChecker 会优先抓取站长提交的 Hvoy 兼容价格 API。如果没有填写,我们会尝试访问站点根域名下的 /api/provider/pricing;仍然不可用时,才回退到价格页规则解析。
推荐站长直接实现这个结构化接口。它比抓 HTML 价格页稳定,也更容易把 NewAPI / Sub2API 里的渠道、倍率、分组价格映射成可比较的最终售价。
接口路径
GET /api/provider/pricing
Content-Type: application/json; charset=utf-8接口应返回人民币最终售价。XTokenChecker 使用稳定的 model_name + group_name 组合匹配模型和渠道。
最小响应示例
{
"schema_version": "1.1",
"success": true,
"message": "",
"data": {
"currency": "CNY",
"price_unit": "per_1m_tokens",
"site_name": "example",
"site_domain": "example.com",
"updated_at": "2026-07-15T00:00:00Z",
"models": [
{
"model_name": "claude-sonnet-4-6",
"group_name": "cc",
"input_price": 7.5,
"output_price": 37.5,
"cache_input_price": 0.75,
"cache_create_price": 9.375,
"cache_create_price_1h": 15,
"enabled": true,
"note": ""
},
{
"model_name": "gpt-image-2",
"group_name": "image",
"price_unit": "per_call",
"unit_price": 0.2,
"enabled": true,
"note": "按次计费"
}
]
}
}字段规则
| 字段 | 规则 |
|---|---|
schema_version | 必需。当前推荐 1.1,兼容 1.0。 |
success | 必需。接口是否成功生成价格数据。 |
data.currency | 必需。固定使用 CNY。 |
data.price_unit | 必需。支持 per_1m_tokens 和 per_call。 |
data.updated_at | 必需。带时区的 ISO 8601 时间,推荐 UTC。 |
data.models | 必需。每一项代表一个模型和分组组合。 |
model_name | 必需。稳定模型 ID,例如 gpt-5.4、claude-sonnet-4-6。 |
group_name | 必需。稳定渠道或分组 ID,例如 official、cc、vip。发布后不要频繁改名。 |
input_price | Token 计费时必需。单位为 CNY / 1M input tokens。 |
output_price | Token 计费时建议填写。单位为 CNY / 1M output tokens。未知可传 null。 |
cache_input_price | 可选。缓存读价格。 |
cache_create_price | 可选。缓存写价格,Claude 场景通常对应 5-minute cache writes。 |
cache_create_price_1h | 可选。Claude 1-hour cache writes;其他模型通常可传 null。 |
unit_price | price_unit 为 per_call 时必需。单位为 CNY / 次。 |
enabled | 可选,默认 true。已知临时下线的组合请返回 false。 |
note | 可选。只做展示和排查,不参与价格计算。 |
价格必须是 JSON number,不能传字符串数字。缺少某个 model_name + group_name 组合只表示未匹配,不会被自动判断为明确下线。
可选签名
如果你的价格接口不希望完全公开,可以启用 Hvoy 兼容签名。
X-Hvoy-Ts: 1747886400
X-Hvoy-Sign: 9f0f4d7f6a5a648242cc0d2e4c2cfc0d4d79cf50615a5c1304f8cbea57c478c4签名计算方式:
sign = hex(HMAC-SHA256(auth_secret, X-Hvoy-Ts))建议服务端只接受当前时间前后 60 秒内的时间戳。在线抓取测试使用固定测试密钥:
hvoy_provider_pricing_test_secret_v1_20260522NewAPI 站点适配建议
很多中转站基于 NewAPI 或其分支。建议在你自己的后端新增一个公开只读接口,将内部价格配置转换成上面的标准响应。
可优先读取这些信息源:
- 模型可用性:从 NewAPI 的模型列表、渠道配置或对外
/v1/models结果获得。 - 渠道分组:用渠道分组、模型倍率分组、用户组价格或自定义分组生成稳定的
group_name。 - Token 价格:把倍率、补全倍率、分组倍率换算成 CNY / 1M tokens 后返回
input_price和output_price。 - 图片或按次模型:用
price_unit: "per_call"和unit_price返回每次调用价格。
不要直接让抓取方登录后台页面。后台字段、表格列名和页面结构在不同分支里差异很大,稳定性不如你主动输出 JSON。
Sub2API 站点适配建议
Sub2API 系统通常也会有模型映射、分组或订阅套餐倍率。建议把最终对用户生效的售卖价格导出为 Provider Pricing API。
可按以下顺序生成价格:
- 读取当前公开可售模型和分组。
- 将模型别名统一成稳定
model_name,例如把展示名映射为 OpenAI / Claude 兼容模型 ID。 - 将套餐倍率、模型倍率、渠道倍率折算成最终 CNY 价格。
- 对临时不可售的组合保留记录并返回
enabled: false。
如果你的站点只公开 HTML 价格页,XTokenChecker 可以尝试规则解析,但建议同时提供结构化接口,避免页面改版导致价格抓取失败。
自测流程
- 在站点部署
GET /api/provider/pricing。 - 打开 在线抓取测试。
- 输入完整 HTTPS URL,例如
https://example.com/api/provider/pricing。 - 如果启用了签名,请先用测试密钥通过验签,再到站长后台填写正式签名密钥。
- 返回结果中至少应有一个
models[]项能和你提交的模型列表匹配。
常见错误
input_price或output_price写成字符串,例如"7.5"。updated_at没有时区。model_name使用展示名,导致无法稳定匹配。group_name经常变化,导致历史价格断裂。- Token 价格和按次价格混用,但没有设置
price_unit。 - 返回的是官方原价,而不是站点实际对用户售卖的最终价。