openai 1.55 把 base_url 换成 openrouter.ai/api/v1,模型写 openai/gpt-4o,返回 402,原文 Insufficient credits,后台明明还剩 10.2 美元,同一个 key 调免费模型 meta-llama/llama-3.3-8b-instruct:free 能通。

一开始怀疑是「充值的额度还没结算,可用余额与展示余额不同」,查了一圈,方向不对。

这类报错背后常见的原因有几处,逐个排除就行。余额低于该模型要求的最低可用额度。少数情况下是请求被路由到要求自带 key 的 provider。

少数情况下是账户被限制为只能调用低档模型。

直接查 credits 接口看可用余额和展示余额

curl -s https://openrouter.ai/api/v1/credits -H "Authorization: Bearer $OPENROUTER_KEY"

拉取该模型的定价和 provider 列表

curl -s https://openrouter.ai/api/v1/models -H "Authorization: Bearer $OPENROUTER_KEY" | python -m json.tool

显式指定 provider 顺序后再试一次

python smoke.py --model openai/gpt-4o --provider-order OpenAI --allow-fallbacks

剩下的就是换一个低价模型验证 key 本身是否可用

python smoke.py --model openai/gpt-4o-mini --prompt ping

恢复的判定其实很直接。带 provider 指定的请求返回 200,credits 接口里的可用余额与账单一致,402 不再出现。

提醒一点。聚合平台的余额和可用额度是两套数,免费模型不消耗额度,所以它能通并不能说明账户状态正常,排查时要先看 credits 而不是模型页。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189