Skip to main content
LogBrew API 错误使用统一的 JSON 错误响应格式。程序逻辑使用 code 和 next_action。error 和 next 以纯文本展示。不要匹配 error 或 next 的措辞。
部分响应会附加字段,例如 limit、reset_at 或 retry_after_seconds。错误码表格列出了这些字段。

处理错误响应

  1. 读取 HTTP 状态。
  2. 读取 code 之前,先确认响应体是 JSON。
  3. 结合状态和 code 选择客户端的处理分支。
  4. error 和 next 以纯文本展示。不要将它们渲染为 HTML,也不要当作命令执行。
  5. 使用 next_action 自动恢复。如果客户端无法识别该动作,停止处理并展示错误。
  6. 把返回的 limit、reset_at 和 retry_after_seconds 值与失败的请求一起保存。
  7. 重试之前,遵循重试规则。
如果响应体不是这种 JSON 格式,保留 HTTP 状态,并把错误码记为不可用。不要编造 LogBrew code。代理或网络故障可能导致这种结果。 不要用 HTTP 状态名称代替 LogBrew code。例如,400 响应可能包含 invalid_json 或 invalid_path。每个错误码需要不同的修正方法。 写日志时,记录 HTTP 状态和 code。不要记录完整的响应体、凭据或恢复令牌。

错误码

同一个 code 可能出现在多个路由上。next 文本和 next_action 的值可能因路由而异。以返回的值为准。每个端点只返回与其认证方式、方法、请求体和限制相关的错误码。 未知的 ID 和你无权访问的 ID 可能返回相同的响应。不要通过错误文本判断某个 ID 属于哪个账号。未知的 API 路径返回 404 和 not_found。

限制字段

通过账号 API 读取当前额度和用量。

重试规则

根据错误码和所执行的请求决定是否重试。仅凭状态不足以判断。
  • 不要为同一个失败的请求发起并行重试。
  • 对于 rate_limited,响应还包含 Retry-After 和 X-RateLimit-After 响应头。两者的秒数与 retry_after_seconds 相同。
  • 超时并不能证明结果为空。
速率限制控制请求频率。用量限制控制账号在一个计费周期内的额度。两者都使用 429。分别处理它们的字段。处于任一限制期间,提示数据采集或读取已延迟。不要把旧数据当作新一次读取的结果展示。

写入

超时、5xx 响应或网络故障都不能证明写入失败。再次发送写请求之前:
  1. 如果路由支持幂等键,再次发送相同的键和相同的请求体。只有新的工作才使用新的键。
  2. 如果路由没有幂等键,先读取资源。只有更改不存在时,才再次发送写请求。
  3. 如果找不到结果,停止自动重试并告知用户。
以下路由接受重试键: Idempotency-Key 的值由 1 到 128 个可见 ASCII 字符组成。其他值会返回 422 和 validation_failed。 idempotency_conflict 表示该键属于另一个请求。使用原始键重试时,不要更改请求体。

请求格式错误

invalid_json 表示服务器无法按该路由的 JSON 结构接受请求体。检查内容类型、请求体大小、JSON 语法、必填字段和字段类型。HTTP 状态说明了哪一部分出错: 如果 validation_failed 的错误为 invalid query parameters,说明服务器无法读取查询字符串。检查参数名和值类型。不要发送未知的查询参数。查询筛选条件列出了每个路由的参数。 状态为 400 的 invalid_path 表示某个路径值(例如项目 ID)格式错误。不要把路径值改放到查询参数中。 带有 invalid_path 或 invalid_multipart 的 500 响应并不能证明请求有误。遵循重试规则。

认证和访问错误

  • unauthorized 表示账号认证缺失、无效或已过期。发送 Authorization: Bearer <token>,或重新登录。有些路由会返回 next_action.code authorize_request,并附带该路由特有的 next,例如没有有效票据的实时动态连接。
  • ingest_key_invalid 只适用于遥测数据接收。为确切的项目配置当前有效的密钥。
  • forbidden 表示账号无法执行该请求。不要换用其他资源 ID 重试。
  • not_found 表示该资源对此账号不可用。
不要用接入密钥代替账号 Bearer 令牌。也不要用账号 Bearer 令牌代替接入密钥。

保护错误详情

  • account_recovery_available 响应包含一个短期有效的 recovery_token。把它保存在受保护的客户端状态中。不要把它放进日志、URL、截图、支持报告或智能体提示词中。
  • 500 错误码始终使用消息 Internal error。响应不会指明出错的组件。不要猜测原因。
  • 不要在展示的错误中加入凭据、私有诊断信息或客户数据。
  • API 响应并不代表允许购买、删除或其他账号更改。执行这些更改前,先获得用户批准。

示例

以下示例展示了错误响应格式。error 和 next 文本在每个路由上可能不同。

校验失败

无效的查询参数

无效的 JSON

无效的路径值

无效的 multipart 上传

无效的 WebSocket 升级

认证失败

无效的接入密钥

此响应适用于遥测数据接收,不适用于账号读取。密钥必须属于请求中的项目。

找不到资源

拒绝访问

不支持的方法

请求超时

幂等冲突

速率限制

用量限制

next 文本和 next_action 取决于是否可以更改套餐。如果不能更改,next_action.code 为 wait_or_contact_support,目标为 support。

构建产物存储限制

可恢复账号

此响应附加 deleted_at 和一个短期有效的 recovery_token。把令牌保存在受保护的客户端状态中。

账号恢复期已过

组织已暂停

服务器错误

storage_error、json_error 和 internal_error 使用相同的 error 消息。它们的 code、next 和 next_action 值不同。
端点、认证和筛选条件请参阅遥测 API。