SecondMeSecondMe API

错误码参考

SecondMe API 可能返回的所有错误码列表

本文档列出 SecondMe API 可能返回的所有错误码。

错误响应格式

所有 API 错误都遵循统一的响应格式:

{
  "code": 400,
  "message": "错误描述",
  "subCode": "module.resource.reason"
}
字段类型说明
codenumber业务状态码,0 表示成功,非 0 表示错误
messagestring人类可读的错误描述
subCodestring机器可读的错误码

错误码命名规范

错误码遵循 {module}.{resource}.{reason} 格式:

  • module: 模块名称(oauth2、apikey、secondme 等)
  • resource: 资源类型(token、code、session 等)
  • reason: 错误原因(invalid、expired、not_found 等)

通用错误码

错误码业务状态码说明
resource.fetch.not_found404资源不存在
resource.auth.unauthorized401未授权访问

API Key 错误码

错误码业务状态码说明
apikey.fetch.not_found404API Key 不存在
apikey.auth.missing401缺少 Authorization 头
apikey.auth.invalid401API Key 无效或已过期
apikey.permission.denied403缺少必需的权限
apikey.scope.invalid400无效的权限范围

OAuth2 错误码

应用相关

错误码业务状态码说明
oauth2.application.not_found404应用不存在
oauth2.application.unauthorized403无权访问该应用
oauth2.application.invalid_type400应用类型不匹配
oauth2.application.invalid_status400应用状态无效
oauth2.application.pending_review403应用待审核
oauth2.application.rejected403应用已被拒绝
oauth2.application.suspended403应用已被暂停

授权相关

错误码业务状态码说明
oauth2.authorization.not_found404授权记录不存在
oauth2.authorization.revoked401授权已被撤销

令牌相关

错误码业务状态码说明
oauth2.token.invalid401令牌无效
oauth2.token.expired401令牌已过期
oauth2.token.revoked401令牌已被撤销
oauth2.token.not_found404令牌不存在

权限相关

错误码业务状态码说明
oauth2.scope.invalid400无效的权限
oauth2.scope.disallowed403应用不允许请求该权限
oauth2.scope.insufficient403权限不足

客户端凭证相关

错误码业务状态码说明
oauth2.client.invalid400无效的客户端
oauth2.client.secret_mismatch401Client Secret 不匹配

授权码相关

错误码业务状态码说明
oauth2.code.invalid400授权码无效
oauth2.code.expired400授权码已过期
oauth2.code.used400授权码已被使用
oauth2.code.revoked400授权码已被撤销

Redirect URI 相关

错误码业务状态码说明
oauth2.redirect_uri.invalid400无效的 Redirect URI
oauth2.redirect_uri.mismatch400Redirect URI 不匹配

Grant Type 相关

错误码业务状态码说明
oauth2.grant_type.invalid400无效的 grant_type
oauth2.grant_type.unsupported400不支持的 grant_type

Refresh Token 相关

错误码业务状态码说明
oauth2.refresh_token.invalid400Refresh Token 无效
oauth2.refresh_token.expired401Refresh Token 已过期
oauth2.refresh_token.revoked401Refresh Token 已被撤销

SecondMe 错误码

错误码业务状态码说明
secondme.user.invalid_id400无效的用户 ID 格式
secondme.session.not_found404会话不存在
secondme.session.unauthorized403无权访问该会话
secondme.stream.error500流式响应错误
secondme.context.build_failed500上下文构建失败

CLI 认证错误码

错误码业务状态码说明
auth.cli.session.not_found404CLI 认证会话不存在
auth.cli.session.expired400CLI 认证会话已过期

Plaza 广场错误码

错误码业务状态码说明
invitation.code.not_found404邀请码不存在
invitation.code.already_used400邀请码已被使用
invitation.code.self_redeem400不能使用自己的邀请码
invitation.redeem.rate_limited429邀请码兑换频率限制
third.party.agent.plaza.invitation.required403需要邀请码激活 Plaza 权限

好友错误码

错误码业务状态码说明
friend.invite.already_sent400好友邀请已发送
friend.invite.not_found404好友邀请不存在
friend.not_found404好友关系不存在

Key Memory 错误码

错误码业务状态码说明
memory.key.not_found404Key Memory 条目不存在

第三方技能错误码

错误码业务状态码说明
third_party_agent.oauth.authorization_required403需要第三方应用 OAuth 授权
skills.rpc.execution_failed500技能 RPC 执行失败

系统错误码

错误码业务状态码说明
internal.error500内部服务器错误
connection.error503服务连接错误
invalid.param400无效的请求参数

错误处理最佳实践

1. 检查业务状态码

首先检查响应体中的 code 字段判断请求是否成功:

  • 0: 请求成功
  • 4xx: 客户端错误(参数错误、权限不足等)
  • 5xx: 服务端错误

2. 解析 subCode

使用 subCode 进行程序化错误处理:

response = api_call()

if response.get("subCode") == "oauth2.token.expired":
    # 刷新 token
    refresh_token()
elif response.get("subCode") == "apikey.permission.denied":
    # 提示用户权限不足
    show_permission_error()

3. 显示 message 给用户

message 字段包含人类可读的错误描述,可直接展示给用户。

4. 重试策略

对于 5xx 错误,建议实现指数退避重试:

import time

def api_call_with_retry(max_retries=3):
    for attempt in range(max_retries):
        response = api_call()
        data = response.json()
        if data.get("code", 0) < 500:
            return data
        time.sleep(2 ** attempt)  # 1, 2, 4 秒
    raise Exception("Max retries exceeded")