403 会告诉您什么
权限拒绝带的信息不止一个错误码。除了error_code: ACCESS_DENIED,data 里还会写明缺的是哪个权限、以及授予什么就能通过,您不必靠猜:
array
被检查且未持有的权限。
permission 就是需要授予的标识符;permission_level 说明它是整个服务授予一次,还是按资源实例逐个授予。string
决定您该向管理员提哪种请求。
capability —— 去要这项权限本身;您在任何地方都没有它,只放开这一个资源是不够的。instance —— 去要这个资源的访问范围;这项权限您在别处已经有了。array
其中任意一项授予了就能通过。把它交给管理团队权限的人,这是「我需要什么」最短的答案。
拒绝不会告诉您资源是否存在——
403 只表示「不给您」,不含别的信息。删除也一样:先检查权限。权限通过后,删除已被删掉或本来就不存在的资源都返回 200,所以重复删除可以安全重试。如果您能删除某个资源,靠的只是单独授予在这个资源上的权限(而不是您的角色),这项授权会随资源一起删除,再删一次就会返回 403。删除不存在的知识条目目前返回 400。403、ACCESS_DENIED 和消息 permission denied,不带 data 对象;每个接口所需的权限写在该接口的页面上。
为保护管理员而拒绝
有些改动会让某人获得管理员角色,或减少管理员的访问权限。这类改动只能由团队所有者或管理员执行;其他人会收到403 和 ACCESS_DENIED,此时 data.operation 给出的是被拒绝的改动类型,而不是缺少的权限:
operation 的取值为 change_role、remove_member、remove_group_member、delete_group、reduce_admin_role_rules、narrow_admin_role_scope、narrow_admin_member_scope、downgrade_admin_member_tier、narrow_admin_via_group 或 remove_admin_member_rule,今后可能增加。
HTTP 状态码
错误响应
当请求失败时,API 会返回结构化的错误体以及 HTTP 状态码。error_code 字段标识具体错误,便于程序化处理:
401)、Key 从不被允许的地址调用(403)、超出速率限制(429)、服务无法连接(502)以及维护中(503)。唯一的例外是 Memory Router 的推理端点:它们保持模型厂商的格式。就某个请求联系支持团队时,请提供它的 X-Trace-ID 响应头。
2026 年 10 月之前,上述拒绝使用的是另一种响应体
{"error": {"message", "type"}}。如果您的代码读取的是 error.message,请改为读取 message 和 error_code。错误代码
错误处理最佳实践
重试逻辑
错误日志
后续步骤
认证
了解认证
速率限制
了解速率限制