nimeet 文档中心
English

错误码全表

平台错误码全表(构建时生成)与 SDK 可见的声网错误号映射、错误信封与重试建议。

由公开错误码定义生成

版本 v1.1.0 · 更新于 2026-10-26 · 修订 1

如何处理错误

  1. 先按 HTTP 状态码分流:401/403 检查凭证、服务开通与封禁规则;404 确认资源;

409 先查询当前状态;415 补上 Content-Type;429 退避;5xx 退避并保留 X-Request-Id。

  1. 再按 code 分支:它是稳定机器码,可安全用于重试判断与告警分类。
  2. SDK 侧按 sdkCode 分支,便于从声网迁移的代码复用既有判断。

错误信封

所有失败的 REST 调用返回同一信封,code 是稳定机器码(见下表),message 与 reason 为可读原因(同时满足声网 RTC REST 用 message、云端录制用 reason 的两种读取习惯),sdkCode 是面向客户端的数值错误号。

json
{
  "code": "recording_quota_exceeded",
  "message": "recording concurrency limit reached",
  "reason": "recording concurrency limit reached",
  "sdkCode": 22,
  "details": {
    "limit": 5,
    "active": 5
  }
}

响应头始终回显 X-Request-Id,与日志、回调、审计记录使用同一个 id;排障时优先提供它。

本页由公开错误码定义在构建时生成,共 42 个错误码,另有成功占位码 ok(HTTP 200)不计入错误表。

错误码全表

retryable 目前统一为 false:该字段是错误码定义中的建议位,尚未按错误码逐项标注。下表保留定义中的原值(列 `retryable`),实际重试策略请按 HTTP 语义(列“重试建议”)执行,见 常见问题与限制。

codeHTTPsdkCodeSDK 常量分类retryable含义重试建议
invalid_channel_name400-102ERR_INVALID_CHANNEL_NAME参数校验falseinvalid channel name修正请求后重试
invalid_parameter400-2ERR_INVALID_ARGUMENT参数校验falseinvalid parameter修正请求后重试
RTC_TOKEN_INVALID_REQUEST400-2ERR_INVALID_ARGUMENT参数校验falseinvalid RTC token request修正请求后重试
RTC_UID_MAPPING_INVALID_REQUEST400-2ERR_INVALID_ARGUMENT参数校验falseinvalid RTC uid mapping request修正请求后重试
invalid_appid401-101ERR_INVALID_APP_ID鉴权falseinvalid appid检查凭证 / 更换 Token,不要原样重试
invalid_credentials401-110ERR_INVALID_TOKEN鉴权falseinvalid credentials检查凭证 / 更换 Token,不要原样重试
invalid_token401-110ERR_INVALID_TOKEN鉴权falseinvalid token检查凭证 / 更换 Token,不要原样重试
missing_authorization401-110ERR_INVALID_TOKEN鉴权falsemissing Authorization header检查凭证 / 更换 Token,不要原样重试
token_channel_mismatch401-110ERR_INVALID_TOKEN鉴权falsetoken does not match channel检查凭证 / 更换 Token,不要原样重试
token_expired401-109ERR_TOKEN_EXPIRED鉴权falsetoken expired检查凭证 / 更换 Token,不要原样重试
token_not_yet_valid401-110ERR_INVALID_TOKEN鉴权falsetoken not yet valid检查凭证 / 更换 Token,不要原样重试
token_privilege_expired401-109ERR_TOKEN_EXPIRED鉴权falsetoken privilege expired检查凭证 / 更换 Token,不要原样重试
token_uid_mismatch401-110ERR_INVALID_TOKEN鉴权falsetoken does not match uid检查凭证 / 更换 Token,不要原样重试
unauthorized401-9ERR_NO_PERMISSION鉴权falseauthentication required检查凭证 / 更换 Token,不要原样重试
app_disabled403-101ERR_INVALID_APP_ID鉴权falseapp is disabled检查封禁规则、服务是否开通、密钥是否轮换
banned403-17ERR_JOIN_CHANNEL_REJECTED鉴权falseuser is banned by a kicking rule检查封禁规则、服务是否开通、密钥是否轮换
join_rejected403-17ERR_JOIN_CHANNEL_REJECTED鉴权falsejoin channel rejected检查封禁规则、服务是否开通、密钥是否轮换
RTC_TOKEN_DENIED403-17ERR_JOIN_CHANNEL_REJECTED鉴权falseRTC token denied检查封禁规则、服务是否开通、密钥是否轮换
service_not_enabled403-1ERR_FAILED鉴权falseservice is not activated for this project检查封禁规则、服务是否开通、密钥是否轮换
channel_not_found404-113ERR_NOT_IN_CHANNEL未找到falsechannel not found确认资源存在(频道/任务/规则)
collaborator_not_found404-1ERR_FAILED未找到falsecollaborator not found确认资源存在(频道/任务/规则)
outbox_not_found404-1ERR_FAILED未找到falseoutbox event not found确认资源存在(频道/任务/规则)
project_not_found404-1ERR_FAILED未找到falseproject not found确认资源存在(频道/任务/规则)
recording_not_found404-1ERR_FAILED未找到falserecording task not found确认资源存在(频道/任务/规则)
streaming_not_found404-1ERR_FAILED未找到falsestreaming task not found确认资源存在(频道/任务/规则)
user_not_found404-113ERR_NOT_IN_CHANNEL未找到falseuser not in channel确认资源存在(频道/任务/规则)
webhook_not_found404-1ERR_FAILED未找到falsewebhook endpoint not found确认资源存在(频道/任务/规则)
already_in_channel409-19ERR_ALREADY_IN_USE状态冲突falseparticipant already in channel先查询当前状态再决定是否重试
project_exists409-1ERR_FAILED状态冲突falseproject already exists先查询当前状态再决定是否重试
recording_invalid_state409-8ERR_INVALID_STATE状态冲突falserecording task is not in a valid state for this operation先查询当前状态再决定是否重试
streaming_invalid_state409-8ERR_INVALID_STATE状态冲突falsestreaming task is not in a valid state for this operation先查询当前状态再决定是否重试
unsupported_media_type415-4ERR_NOT_SUPPORTED参数校验falseunsupported media type设置 Content-Type: application/json
rate_limited429-12—限流truetoo many requests按指数退避重试(配额/限流)
recording_quota_exceeded429-22—配额truerecording concurrency quota exceeded按指数退避重试(配额/限流)
streaming_quota_exceeded429-22—配额truestreaming concurrency quota exceeded按指数退避重试(配额/限流)
internal_error500-1ERR_FAILED内部错误trueinternal server error可退避重试;持续出现请带 X-Request-Id 反馈
recording_upstream_error502-1ERR_FAILED上游依赖trueegress upstream error上游(Egress/RTMP)异常,可退避重试
streaming_upstream_error502-1ERR_FAILED上游依赖truertmp upstream error上游(Egress/RTMP)异常,可退避重试
no_server_resources503-103ERR_NO_SERVER_RESOURCES上游依赖trueno server resources依赖不可用,可退避重试
RTC_PROVIDER_DISABLED503-1ERR_FAILED上游依赖trueRTC provider is disabled by configuration依赖不可用,可退避重试
RTC_PROVIDER_UNAVAILABLE503-111ERR_CONNECTION_INTERRUPTED上游依赖trueRTC provider unavailable依赖不可用,可退避重试
upstream_unavailable503-111ERR_CONNECTION_INTERRUPTED上游依赖trueupstream service unavailable依赖不可用,可退避重试

错误号在接口定义中存为正数,SDK facade 通过 SdkErrorCode 暴露同绝对值的负数常量(例如 invalid_appid → 101 → -101 ERR_INVALID_APP_ID)。两者语义一致、符号不同,跨层比对时按绝对值匹配。

SDK 可见的声网错误号

SDK facade(@nimeet/rtc-web 及同构端)把失败统一表示为 { code, sdkCode, message, retryable },其中 sdkCode 使用下列负值,让从声网迁移的应用沿用既有的错误判断分支。REST 层不返回负值,用上表正数 sdkCode 对齐。

sdkCode常量含义对应 REST 错误码
-1ERR_FAILED通用失败(未映射的兜底)REST 无直接对应(连接层)
-2ERR_INVALID_ARGUMENT参数非法REST 无直接对应(连接层)
-3ERR_NOT_READYSDK 尚未就绪REST 无直接对应(连接层)
-4ERR_NOT_SUPPORTED当前端不支持该能力REST 无直接对应(连接层)
-5ERR_REFUSED调用被拒绝REST 无直接对应(连接层)
-7ERR_NOT_INITIALIZED未初始化REST 无直接对应(连接层)
-8ERR_INVALID_STATE当前状态不允许该操作REST 无直接对应(连接层)
-9ERR_NO_PERMISSION没有权限REST 无直接对应(连接层)
-10ERR_TIMEDOUT超时REST 无直接对应(连接层)
-17ERR_JOIN_CHANNEL_REJECTED加入频道被拒绝REST 无直接对应(连接层)
-18ERR_LEAVE_CHANNEL_REJECTED离开频道被拒绝REST 无直接对应(连接层)
-19ERR_ALREADY_IN_USE已在频道中 / 资源占用REST 无直接对应(连接层)
-101ERR_INVALID_APP_IDApp ID 无效REST 无直接对应(连接层)
-102ERR_INVALID_CHANNEL_NAME频道名非法REST 无直接对应(连接层)
-103ERR_NO_SERVER_RESOURCES服务端资源不足REST 无直接对应(连接层)
-109ERR_TOKEN_EXPIREDToken 已过期REST 无直接对应(连接层)
-110ERR_INVALID_TOKENToken 无效REST 无直接对应(连接层)
-111ERR_CONNECTION_INTERRUPTED连接中断(可自动重连)REST 无直接对应(连接层)
-112ERR_CONNECTION_LOST连接丢失(需重新入会)REST 无直接对应(连接层)
-113ERR_NOT_IN_CHANNEL不在频道中REST 无直接对应(连接层)

facade 额外定义(不来自声网):RTC_RECONNECTING、RTC_PUBLISH_DENIED、RTC_DEVICE_NOT_FOUND。断开原因 -111 走自动重连,-112 需要重新入会。

本页由文档构建流水线生成 · 2026-10-31 01:24:02 UTC · 文档中心 v1.1.0.

内容依据公开 API 定义.

ni-meet 是自建 RTC PaaS,媒体面基于 LiveKit(Apache-2.0),并与声网 API 兼容。