错误码与处理方式
查 Gateway 回传的状态码代表什么、该先检查哪里,以及怎么处理。
联络支持时附上 request_id
每个错误回应都带 request_id。联络支持时附上它,我们就能找到这一笔。
看请求在哪里被挡下#
选一个情境,看请求被哪一道检查挡下、回应长什么样子。
响应
x-ratelimit-limit-requests: … x-ratelimit-remaining-requests: … x-ratelimit-reset-requests: …
响应体是供应商的回应,格式与你使用的 SDK 一致。限流响应头告诉你还剩多少额度。
记录与计费 — 输入与输出 tokens 计量后以点数从项目余额扣除;这次调用会出现在控制台的请求记录里。
对话补全(curl)
curl https://api.atptoken.ai/v1/chat/completions \
-H "Authorization: Bearer atp-..." \
-H "Content-Type: application/json" \
-d '{
"model": "<model from GET /v1/models>",
"messages": [{"role": "user", "content": "hi"}]
}'
文字版
| 步骤 | 检查 | 拦截时 | 响应 |
|---|---|---|---|
| 1. 客户端 | 带项目密钥发出 | — | — |
| 2. 密钥校验 | 密钥有效且已启用 | 401 Unauthorized | {"message":"API key has been revoked or does not exist.","error":"token_revoked"} |
| 3. 模型白名单 | 项目已开通该模型 | 403 Forbidden | {"error":{"message":"model not available for this project","type":"permission_denied","request_id":"..."}} |
| 4. 点数 | 项目还有余额 | 402 Payment Required | 错误响应体沿用 SDK 的错误格式:钱包或点数池已用完。充值后恢复;重试没有用。 |
| 5. 限流 | 未超出限制 | 429 Too Many Requests | 错误响应体沿用 SDK 的错误格式:限流、配额或供应商冷却。退避后重试;有 Retry-After 就按它等。 |
| 6. 供应商 | 路由与故障转移 | — | — |
| 7. 记录与计费 | 按点数计量 | 200 OK | x-ratelimit-limit-requests, x-ratelimit-remaining-requests, x-ratelimit-reset-requests — 响应体是供应商的回应,格式与你使用的 SDK 一致。限流响应头告诉你还剩多少额度。 |
200 但内容为空#
请求可能回传 200 OK 却是空消息——不是错误,只是没有文字。这几乎都是由 request 参数造成,而非失败。最常见的原因是 推理模型(extended thinking)的 max_tokens 设太低:整个额度在产生任何可见输出前就被内部推理吃完,于是内容回空。
在本平台上,这种请求通常会显示零 token 用量、也不会扣点数——空的 200 加上空的 usage,就是这个情况的特征,不是计费 bug。解法:把 max_tokens 调高到「思考预算 + 预期输出」都够用,或关闭 extended thinking。在假设有文字前,一律先检查 finish_reason / stop_reason 与 usage。
这页有帮助吗?