公开 API 健康检查HTTP
$ curl https://api.modelpricelab.com/health
# 返回服务状态与时间戳
快速开始
用一个请求获取已存模型价格记录。
curl -H "Authorization: Bearer mpl_your_api_key" \
"https://api.modelpricelab.com/v1/prices"端点参考
API Free 仅可调用 GET /v1/prices。/v1/changes 与全部 Webhook 路由需要当前有效的 Developer 方案($39/月,见定价页)。
| 端点 | 方法 | 鉴权 | 说明 | 限制 |
|---|---|---|---|---|
| /v1/prices | GET | API 密钥 | 返回跨供应商与平台的已存模型价格记录。 | API Free 或当前付费权益 |
| /v1/changes | GET | API 密钥 | 返回已发布的价格与 API 变更;默认排除运行事故。 | 需要当前付费权益 |
| /v1/webhooks | GET | API 密钥 | 列出已配置的 Webhook 接收地址。 | 需要当前付费权益 |
| /v1/webhooks | POST | API 密钥 | 将 HTTPS 地址订阅到 change.alert 事件。 | 需要当前付费权益 |
| /v1/webhooks/{id} | DELETE | API 密钥 | 删除 Webhook 订阅。 | 需要当前付费权益 |
Webhook 签名验证
仅当前有效的 Developer 方案可收到投递;使用 x-mpl-signature(sha256=…)对未经 JSON 解析的原始请求体做 HMAC SHA-256 验证。
import { createHmac, timingSafeEqual } from 'node:crypto';
const signature = req.headers['x-mpl-signature'];
// Capture the exact raw UTF-8 request bytes before JSON parsing.
const rawBody = req.rawBody;
const expected = 'sha256=' + createHmac('sha256', WEBHOOK_SECRET)
.update(rawBody)
.digest('hex');
const valid = typeof signature === 'string'
&& signature.length === expected.length
&& timingSafeEqual(Buffer.from(signature), Buffer.from(expected));
if (!valid) {
res.status(401).send('Invalid signature');
return;
}速率限制与配额
每个 API 密钥根据所属方案拥有每日请求配额。超出配额的请求会返回 HTTP 429。
API Free
请求量: 100/天
记录口径: 已存记录,不承诺固定新鲜度
Developer 方案($39/月)
请求量: 10,000/天,含变更与 Webhook
记录口径: 已存记录,不承诺实时
配额每日 UTC 午夜重置。耗尽后可购买加量包($5 / 50,000 次 / 30 天,可叠加)即时续用,响应头会标记 X-RateLimit-Topup: true;GET /v1/usage 可随时查询余量与重置时间(查询本身不消耗配额)。
curl "https://api.modelpricelab.com/v1/usage" -H "Authorization: Bearer $MPL_KEY"
# → { "plan": "developer", "daily_quota": { "limit": 10000, "remaining": 9962,
# "reset_at": "2026-10-06T00:00:00Z" }, "topup": { "remaining": 49997 } }