限制与错误代码
API 使用标准 HTTP 状态码。错误体遵循你所用客户端的格式,因此 OpenAI SDK 和 Anthropic SDK 可直接解析。
错误格式
OpenAI 格式端点返回包含 message、type 和 code 的 error 对象。Anthropic 格式端点返回 "type": "error",以及包含 type 和 message 的 error 对象。stream 中途发生的错误以相同结构的事件发送。
402
{
"error": {
"message": "GeraiPoints tidak cukup, silakan top up",
"type": "insufficient_quota",
"code": "insufficient_quota"
}
}message 的内容为印尼语,且可能变动。程序逻辑请检查 HTTP 状态码和 type/code,而不是消息文本。状态码
| 状态码 | type / code | 含义 | 处理方法 |
|---|---|---|---|
| 400 | invalid_request_error | 请求无效:请求体不是 JSON、model 为空,或 messages 缺失/为空。base URL 写错导致路径变成 /v1/v1/… 时也会出现。 | 检查请求体和 base URL。 |
| 401 | authentication_error | 未发送 API 密钥、密钥错误或已撤销——或密钥用错了通道(bansos 密钥用于付费端点,反之亦然)。 | 检查密钥和 base URL——认证。 |
| 402 | insufficient_quota | GeraiPoints 不足以支付此请求。 | 充值 GeraiPoints 后重新发送。 |
| 403 | permission_error | 模型不在此密钥的 allowlist 中,或是你尚未拥有的套餐专属模型。 | 把模型加入密钥的 allowlist,或使用其他密钥。 |
| 404 | model_not_found | 未知的模型 id,或该模型当前未开放。带前缀的名称(如 gp/… 或 openai/…)也会返回 404。 | 从模型列表中准确复制 id。 |
| 413 | — | 请求体过大,服务器无法接收。 | 精简对话历史或缩小附件。 |
| 429 | rate_limit_error | 请求过多:模型容量已满,或超出 Unlimited/Bansos 套餐的限制。 | 按 Retry-After(如有)等待,然后间隔一段时间再试。 |
| 502 | api_error | 模型服务繁忙或出现问题;该请求不计费。 | 几秒后重试,或使用其他模型。 |
| 503 | api_error | 模型正在维护或暂时不可用;该请求不计费。 | 稍后再试或使用其他模型。 |
使用限制
| 类型 | 限制 |
|---|---|
| 付费密钥(gk-) | 每个密钥没有固定的速率限制;用量受 GeraiPoints 余额限制。只有在模型容量已满时才会出现 429。 |
| Unlimited plan | 每个账号有每分钟请求数和并发请求数限制。429 响应带有 Retry-After 和 x-ratelimit-*。详情见 Unlimited 页面。 |
| 免费套餐(Bansos) | 每日请求配额和每分钟限制。429 响应带有 Retry-After 和 x-ratelimit-*。剩余配额见 Bansos 页面。 |
| 大小与回答 | 过大的请求体会以 413 拒绝。如果余额不足以支付所请求的值,回答长度(max_tokens)可能会被自动调低。 |
| API 密钥 | 每个账号最多 20 个有效密钥;每个密钥的 allowlist 最多 64 个模型。 |
| 客户密钥 | 限额在处理前生效:会超出剩余限额的请求将被拒绝。一次性限额用完 → 402 KEY_BATAS_HABIS(调高限额即可追加);达到每日/每月限额 → 429 KEY_BATAS_HARIAN / KEY_BATAS_BULANAN,附带 Retry-After。密钥已暂停 → 403 KEY_DIJEDA。客户密钥不能使用 -unli 和 bansos 模型。 |
正确重试
- 只对 429、502 和 503 重试,间隔逐渐加长(例如 1、2、4、8 秒),最多 2–3 次。
- 不要重试 400、401、402、403、404——先修正请求,否则结果不会改变。
- 如有
Retry-After请求头,请遵守。 - 每次重试都是一个新的计费请求。如果原因是应用 timeout,请调高 timeout——见Agentic 工具设置。