错误
所有错误的结构都相同,并带有固定不变的 code。请根据错误码进行分支处理:错误消息是写给人看的,措辞可能会调整。
{ "error": { "code": "invalid_key", "message": "That API key does not exist." } }
部分错误除这两个字段外还带有额外字段:parameter 指出出错的参数,retry_after 表示需要等待多久,limit 和 used 用于配额耗尽的情况。
全部错误码
| 状态 | 错误码 | 触发条件 |
|---|---|---|
| 400 | missing_query | query 为空或缺失。 |
| 400 | unknown_format | format 不在六种格式之列。 |
| 400 | unknown_column | columns 中包含不存在的字段。 |
| 400 | format_not_available | 在不返回结果行的地方请求了扁平格式。 |
| 400 | per_page_too_large | per_page 超出了您套餐的行数上限。错误中会给出该上限。 |
| 400 | invalid_json | POST 请求体不是有效的 JSON。 |
| 401 | missing_key | 缺少 Authorization: Bearer 请求头。 |
| 401 | invalid_key | 该令牌不对应任何账户。 |
| 403 | plan_required | 该账户没有付费套餐。 |
| 404 | unknown_endpoint | 路径不存在。错误中会列出所有可用路径。 |
| 405 | method_not_allowed | API 为只读。请使用 GET,或以 POST 发送 JSON 请求体。 |
| 429 | too_many_requests | 请求速度超过每分钟十次(API 与 MCP 合计)。 |
| 429 | quota_exceeded | 当日搜索配额已用完。 |
| 429 | snippet_quota_exceeded | 当日代码片段配额已用完。不带代码片段的搜索仍可正常使用。 |
如何处理
- 400:请求本身有误,重复发送也无济于事。
parameter字段会指出是哪个参数。 - 401、403:令牌或套餐的问题。在情况改变之前,重试没有意义。
- 429
too_many_requests:等待retry_after秒后重试。此次请求未消耗任何资源。 - 429
quota_exceeded:配额将在下一个 UTC 午夜恢复,retry_after会告诉您还有多久。提前重试不会有帮助。 - 5xx:是我们这边的问题。请以逐渐递增的间隔重试。
错误与格式
错误以 JSON 返回;请求 format=xml 时则以 XML 返回。扁平格式无法表示错误,因此请求 csv 的失败请求会得到 JSON。这意味着读取 CSV 的客户端应检查状态码,而不是假定每个看起来像 200 的响应体都是结果行。
无需阅读本页即可获取错误码
GET / 以 JSON 列出上述所有错误码及其含义。它不需要令牌,因此开发者无需打开浏览器,就能针对完整的错误码集合构建客户端。
curl https://api.publicwww.com/下一篇 代码示例