Skip to main content

响应与错误编码

客户端需要分别判断 HTTP 状态和业务状态。HTTP 200 不等于业务成功;认证、参数等业务异常也可能以 HTTP 200 返回 JSON。

普通/分页包装的逐字段定义见 请求与响应约定,本页重点说明失败分类与安全处理。

普通业务与分页

普通接口成功示例:

{
"code": 8200,
"message": "SUCCESS",
"data": {}
}

分页在顶层增加 pageNopageSizetotaltotalPagedata 为数组。不同接口成功 data 可能是对象、数组、字符串或布尔值,应遵循该接口定义,不以 data 是否非空判断成功。

对话接口 成功直接返回对话对象或 SSE,Dify 检索 直接返回 records;这些成功响应不使用 code=8200 的包装。失败时应同时检查实际 Content-Type 和错误体。

HTTP 状态

HTTP 状态说明
200请求得到响应,仍须检查业务 code 或该接口成功结构
400请求格式等错误,可能由网关或框架返回
401登录状态缺失或过期等,常见业务码 8302
403用户权限不足,常见业务码 8403
413上传体积超过允许范围;网关可能不返回 AIS JSON
429标准 Chat 触发接口限流;如有 Retry-After,按其秒数延后重试
500、502、503、504服务或网关异常,保留时间及响应信息排查

业务状态

code含义或常见场景处理建议
8200普通业务成功按接口解析 data
400OpenAPI 参数非法检查字段、范围和必填约束
401AccessDenied;密钥、渠道凭据无效或平台密钥模块权限不足检查凭据类型、有效期及权限;不能仅凭此码区分原因
413请求体过大调整上传体积
429请求限流或账户余额不足等结合响应说明区分原因;余额不足不应按限流无限重试
8302未登录或登录失效检查请求头并更新凭据
8400部分业务参数异常按具体接口修正请求
8401不允许的操作等历史业务异常结合具体接口响应处理,不统一解释为密钥过期
8402参数校验、业务断言失败修正参数;访客编码重复也可能走此错误分支
8403用户或接口访问权限不足补齐对应角色或访问权限
8404未找到资源,包括用户或文件不存在检查编码及所属租户、知识库
8405请求数据不存在检查前置资源
8406请求超时核实操作结果后决定是否重试
8407请求非法或不允许删除检查操作条件
8408请求凭据过期刷新凭据
8409请求数据错误修正业务数据
8410重复操作查询当前状态
500、8500内部或未归类业务异常保留请求上下文排查,不对写操作盲目重试
8888License 不存在、过期或能力未授权联系部署方确认授权

状态来源包括不同代际的业务枚举,同一类失败可能使用不同码。尤其不能照搬旧对接资料中“所有参数错误都是 8400”“所有 API Key 错误都是 8401”的映射。

典型认证失败:

{
"code": 401,
"message": "请求中的 ApiKey 错误",
"data": null
}

message 的语言受 Accept-Language 和服务端配置影响,失败 data 也可能为空字符串。程序按 code、HTTP 状态及接口语义处理,message 用于展示和排查。

重试边界

只读查询可以在短暂网络失败后有限重试。注册和创建超时后先按稳定 code 查询;充值可能重复记账,用户 /fire 会切换状态,权限更新为全量替换,均不应自动重复执行。

SSE 建流前可能返回 JSON 错误,建流后应识别流内错误、结束原因与中断。记录请求时间、接口路径和业务编码,避免记录完整密钥、契约 Token 和含凭据的兑换 URL。