错误

状态码说"哪一类",错误体说"具体是什么";错误响应提供五个通用头,限流时再带一个 scope 头,让重试逻辑不用看错误体。

出错时,HTTP 状态码告诉你错误属于哪一类;错误体按该前缀的格式给出具体原因;每个错误响应还带四个 x-praxis-problem-* 头和一个 x-praxis-recovery-action(限流错误再多带一个 x-praxis-problem-scope,见限流),不论错误体长什么样,重试逻辑只看头就够。

状态码

状态码含义你该做什么
400请求字段或格式不合法修正参数,不要原样重试
401缺少或无效的凭证检查 API Key
402余额或付费额度不足补充余额或联系账户管理员
403无权访问该资源或操作核对 Key 权限与资源归属;必要时联系支持
404资源、模型或路径不存在检查 ID、模型名和路径
408请求超时检查网络后重试;写操作先确认是否已完成
409资源状态或并发修改冲突重新读取状态,再调整请求
413请求体或文件超过大小限制减小内容或改用端点支持的 URL 输入
422请求内容无法处理根据错误详情修正参数或输入
429请求速率、并发或模型额度超限按 retry-after 等待;并发超限时等待在途请求结束
500平台内部错误稍后重试;持续出现请附 X-Request-Id 联系支持
501功能尚未支持换用已支持的端点,不要重试
502上游调用失败或返回无效响应退避重试,持续失败时换模型或联系支持
503服务或可用线路暂不可用退避重试,或选择其它模型
504上游响应超时退避重试;写操作先确认结果,避免重复创建

错误码

以下是常见的机器可读错误码,不是所有端点的封闭枚举。兼容接口的错误体可能使用协议自己的 code/type;跨协议判断可读取 x-praxis-problem-code,其值可能与错误体 code 不同。大小写按返回值区分。

code什么时候出现、该怎么办
AUTHENTICATION_ERRORKey 缺失或无效;检查并更换凭证。
VALIDATION_ERROR参数不符合格式、类型或范围要求;按详情改参数。
INPUT_NOT_REPRESENTABLE所选模型或协议无法表达输入选项;删除该选项或换模型。
NOT_FOUND资源不存在或对当前账户不可见;核对 ID 与账户。
MODEL_NOT_FOUND模型不存在或不可见;从模型列表选取可用名称。
MODEL_PROTOCOL_NOT_OFFERED模型不提供所请求的协议;换用其支持的端点或模型。
MODEL_PROTOCOL_LINE_UNAVAILABLE支持该协议的合格线路暂不可用;退避重试或换模型。
GENERATION_NOT_FOUND生成记录不存在或不属于当前账户;核对响应头中的生成 ID 与 Key。
RATE_LIMITED超过速率或并发限额;按 retry-after 等待并降低速率或并发。
UPSTREAM_ERROR上游调用失败或响应不合法;按 retryable 退避重试,持续失败时换模型或联系支持。
PROVIDER_SELECTION_NOT_ALLOWED指定供应商 order/only 时没有携带 BYOK;移除供应商选择或提供自己的上游 Key。
not_implemented该端点或能力未实现;换用已支持的能力,不要原样重试。
model_protocol_not_offeredHTTP 404;模型未声明所请求的协议。查询 GET /model/v1/models 的 supported_apis,改用相应入口,例如声明 Google 协议的模型使用 /google/v1beta/models/{model}:generateContent;不要只换前缀而保留另一协议的请求体。
provider_unavailableHTTP 502;本次请求的可用线路全部失败。退避重试,持续失败时换模型,并附 X-Request-Id 联系支持。
thinking_disable_unsupportedHTTP 400;模型不能关闭思考,例如对 glm-5.3 设置 reasoning_effort="none"。移除关闭设置或选择支持的思考等级;需要关闭思考时换模型。
insufficient_quota / INSUFFICIENT_BALANCEHTTP 402;余额不足,错误体或响应头的代码因入口而异。充值或联系账户管理员后再重试,不要立即循环重试。
validation_error(response_format)HTTP 400;例如 Model "deepseek-flash" does not support json_schema on this API.。换用在该入口支持 json_schema 的模型;若只需要合法 JSON,可改用 json_object,但它不保证 schema 约束。
validation_error(参数被点名)HTTP 400;设置 provider.require_parameters=true 时,所选模型仍可能无法支持请求参数,例如 param: "logprobs"、does not support the requested logprobs value。按 param 和消息调整参数或换模型;不要只关闭检查后假定参数已生效。

错误体

错误体的格式跟着地址第一段走,和成功响应一致——你的 SDK 不需要为错误特殊处理。

厂商前缀(/openai /anthropic /google /e2b /tavily):和该前缀对应的官方 API 错误体一模一样。

// /openai
{ "error": { "code": 401, "message": "Invalid API key." } }
// /anthropic
{ "type": "error", "error": { "type": "authentication_error", "message": "Invalid API key." } }

Praxis 前缀(/agent /model /sandbox /search /meta):标准的 Problem Details(RFC 9457),Content-Type: application/problem+json。

{
  "type": "https://deepraxis.ai/problems/authentication_error",
  "title": "authentication_error",
  "status": 401,
  "detail": "Invalid API key.",
  "instance": "problem_eqfnxu",
  "code": "AUTHENTICATION_ERROR",
  "retryable": false
}
字段含义
type错误类型的 URL,稳定,可用来分支
title / detail给人读的摘要与具体原因
status同 HTTP 状态码
instance本次错误的 ID,联系支持时附上
code机器可读的错误码
retryable原样重试是否可能成功

错误响应头(五个通用头 + 一个限流头)

五个通用头与错误体格式无关;第六个 scope 头仅适用于限流错误:

头含义例子
x-praxis-problem-code跨协议分类码;可能与错误体的 code 不同AUTHENTICATION_ERROR
x-praxis-problem-kind错误大类——出了什么事authentication_failure
x-praxis-problem-origin错误归谁——谁能解决它:user(你的请求或凭证)、platform(我们)、upstream_provider(上游厂商)等unknown
x-praxis-problem-retryable原样重试是否可能成功false
x-praxis-problem-scope仅限流错误:触发的保护层——platform 平台层、model 模型层platform
x-praxis-recovery-action建议的处理动作relogin

重试

  • retryable 为 true(或状态码 429 502 503):指数退避重试;429 优先按 retry-after。
  • 其它一律不要原样重试——先改请求或 Key。
导出

本页内容