错误码
所有开放接口的响应统一遵循以下结构,业务错误码 code 为 0 表示成功,
非 0 时通过 msg 字段提示具体错误信息。
{
"code": 0, // 业务错误码,0 表示成功
"success": true, // 是否成功
"msg": "成功", // 错误描述
"data": { ... } // 业务数据,失败时可能为 null
}
错误码分段
| 范围 | 类别 |
|---|---|
| 10000 - 19999 | 系统级错误 |
| 20000 - 29999 | 参数校验 / 应用 / 用户 / Token / Scope 等资源错误 |
| 30000 - 39999 | 业务逻辑错误(OAuth 流程、Token 过期、授权码使用、设备授权等) |
| 40000 - 49999 | 权限认证错误 |
| 50000 - 59999 | 第三方服务错误 |
本页错误码不适用于 Webhook 回执
本页是小红书 → 接入方方向(调用开放接口时的响应码),均为 5 位。
接入方接收 Webhook 后回给小红书的回执码是另一套 4 位码表,
见 Webhook 通知 §6.1,请勿混用——
例如回执里写
40003 并不会被理解为「权限不足」,而是一个规范外的未知码。
详细错误码
| 错误码 | 常量 | 描述 | 类别 | 处理建议 |
|---|---|---|---|---|
20000 | INVALID_PARAMS | 参数错误 | 参数 | 检查请求参数格式与必填项 |
20001 | MISSING_REQUIRED_PARAM | 缺少必需参数 | 参数 | — |
21000 | APP_ID_INVALID | app_id 无效 | 应用 | 确认使用生产环境的 app_id |
21001 | APP_NOT_FOUND | 应用不存在 | 应用 | — |
21002 | APP_SECRET_INVALID | app_secret 错误 | 应用 | 前往管理中心重新获取 |
21003 | INVALID_CLIENT_SECRET | 客户端密钥无效 | 应用 | — |
21004 | APP_DISABLED | 应用已被停用 | 应用 | 联系平台运营处理 |
23000 | TOKEN_INVALID | 令牌无效 | Token | — |
23001 | ACCESS_TOKEN_INVALID | access_token 无效 | Token | 使用 refresh_token 刷新或重新授权 |
23002 | REFRESH_TOKEN_INVALID | refresh_token 无效 | Token | 引导用户重新授权 |
32000 | TOKEN_EXPIRED | 令牌已过期 | Token | — |
32001 | ACCESS_TOKEN_EXPIRED | access_token 已过期 | Token | 调用刷新接口 |
32002 | REFRESH_TOKEN_EXPIRED | refresh_token 已过期 | Token | 引导用户重新授权 |
32003 | TOKEN_REVOKED | 令牌已被撤销 | Token | — |
24000 | AUTH_CODE_INVALID | 授权码无效 | 授权码 | — |
33000 | AUTH_CODE_EXPIRED | 授权码已过期 | 授权码 | 授权码 10 分钟内使用 |
33001 | AUTH_CODE_USED | 授权码已使用 | 授权码 | 授权码只能使用一次 |
33002 | AUTH_CODE_MISMATCH | 授权码与应用不匹配 | 授权码 | — |
25000 | INVALID_SCOPE | scope 无效 | Scope | — |
25001 | SCOPE_NOT_SUPPORTED | scope 不支持 | Scope | 查看 Scope 文档获取当前支持列表 |
42001 | INSUFFICIENT_SCOPE | scope 权限不足 | Scope | 重新申请授权并勾选所需权限 |
34000 | APP_NOT_AUTHORIZED | 应用未被授权 | 授权 | — |
34001 | AUTHORIZATION_NOT_FOUND | 未找到授权记录 | 授权 | — |
31001 | AUTHORIZATION_REQUIRED | 需要用户授权 | 授权 | — |
31002 | AUTHORIZATION_DENIED | 用户拒绝授权 | 授权 | — |
35000 | PKCE_CHALLENGE_REQUIRED | 缺少 code_challenge | PKCE | — |
35001 | PKCE_VERIFIER_INVALID | code_verifier 无效 | PKCE | — |
35002 | PKCE_VERIFICATION_FAILED | PKCE 校验失败 | PKCE | 检查 verifier/challenge 生成算法 |
36000 | AUTH_MODE_MISMATCH | 认证模式不匹配 | 认证模式 | 应用配置的认证模式与本次请求不符 |
36001 | AUTH_MODE_REQUIRE_PKCE | 当前应用必须使用 PKCE 模式 | 认证模式 | — |
37000 | DEVICE_CODE_INVALID | device_code 无效 | 设备授权 | 停止轮询并检查请求参数 |
37001 | DEVICE_CODE_EXPIRED | device_code 已过期 | 设备授权 | 重新创建设备授权,让设备展示新二维码 |
37002 | DEVICE_AUTHORIZATION_PENDING | 用户尚未完成授权 | 设备授权 | 按 interval 秒继续轮询 |
37003 | DEVICE_SLOW_DOWN | 轮询过于频繁 | 设备授权 | 将轮询间隔增加 5 秒 |
37004 | DEVICE_CODE_USED | device_code 已消费 | 设备授权 | 停止轮询,不再复用该 device_code |
37005 | USER_CODE_INVALID | user_code 无效 | 设备授权 | 提示用户重新扫描当前二维码 |
37006 | USER_CODE_ATTEMPT_EXCEEDED | user_code 错误尝试次数过多 | 设备授权 | 重新创建设备授权 |
37007 | GRANT_TYPE_NOT_SUPPORTED | 应用未开通设备授权模式 | 设备授权 | 联系小红书开通该授权类型 |
37008 | DEVICE_GEN_TOO_FREQUENT | 创建设备码过于频繁 | 设备授权 | 退避后稍后重试 |
37009 | DEVICE_AUTHORIZATION_SCANNED | 用户已扫码,尚未在手机上确认 | 设备授权 | 与 37002 同样继续轮询,可提示「已扫码,请在手机上确认」 |
37010 | REVOKE_TOKEN_NOT_FOUND | access_token 不存在或已被撤销 | 解绑 | 停止重试;若应用未开通「主动解绑」,请先在管理中心申请开通 |
37011 | REVOKE_TOKEN_APP_MISMATCH | access_token 不属于该应用 | 解绑 | 检查 app_id 是否与 access_token 归属一致 |
37012 | REVOKE_AUTH_RELATION_NOT_FOUND | 未找到对应的授权关系 | 解绑 | 数据异常,请携带 request-id 联系我们 |
37013 | REVOKE_WEBHOOK_DISPATCH_FAILED | Webhook 事件投递失败 | 解绑 | 撤销本身已成功;重试任务会自动补投,无需接入方处理 |
37014 | REVOKE_INTERNAL_ERROR | 撤销授权内部错误 | 解绑 | 稍后重试;若持续请联系我们 |
22000 | USER_ID_INVALID | 用户 ID 无效 | 用户 | — |
22001 | USER_NOT_FOUND | 用户不存在 | 用户 | — |
41000 | USER_NOT_LOGIN | 用户未登录 | 用户 | — |
41001 | USER_LOGIN_EXPIRED | 用户登录已过期 | 用户 | — |
41002 | USER_ACCOUNT_LOCKED | 账号已被锁定 | 用户 | — |
40000 | UNAUTHORIZED | 未认证 | 权限 | — |
40001 | FORBIDDEN | 禁止访问 | 权限 | — |
40002 | PERMISSION_DENIED | 权限不足 | 权限 | — |
30001 | RATE_LIMIT_EXCEEDED | 调用频率超限 | 限流 | 降低调用频率或申请提升配额 |
10001 | SYSTEM_ERROR | 系统内部错误 | 系统 | 稍后重试,若持续请联系我们 |
10002 | DATABASE_ERROR | 数据库错误 | 系统 | — |
10003 | REDIS_ERROR | 缓存错误 | 系统 | — |
50000 | THIRD_PARTY_ERROR | 第三方服务错误 | 系统 | — |