> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stmlink.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> 服务端接口只有 `/server/v1/...` 这一套对外开放，需用 app_id + app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。文档中若出现其它前缀的接口，均为内部接口，不要建议客户调用。
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端调用 `/server/v1/channel/grant` 签发后下发。
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上。
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。

# 错误码规则

> SRTC 错误码的编号规则：如何从一个错误码看出它来自哪一层、哪个平台

`0` 代表成功，非 0 都是错误。

所有错误码都是 **前缀 + 3 位具体码（001-999）** 的结构。看懂前缀，你就能立刻判断这个错误是**服务端返回的**还是**客户端 SDK 产生的**、来自**哪个平台**，从而知道该去哪儿排查。

***

## 怎么读一个错误码

```text theme={null}
  1 0 6 0 0 1
  │ │ │ └─┴─┴── 具体码 001-999
  │ │ └──────── 端侧类型：6 = Web
  └─┴────────── 业务层：1 = SRTC
```

分三种情况：

| 位数             | 来源               | 前缀          | 示例                     |
| -------------- | ---------------- | ----------- | ---------------------- |
| 4 位            | **服务端**返回        | `1`         | `1021` Token 已被使用      |
| 6 位，第 3 位为 `0` | 客户端 SDK **各端通用** | `100`       | `100008` 令牌失效          |
| 6 位            | 客户端 SDK **特定平台** | `10` + 端侧类型 | `106001` Web 端：当前不在频道内 |

***

## 端侧类型

6 位错误码的第 3 位表示平台：

|  类型 | 平台          | SRTC 前缀 |
| :-: | ----------- | ------- |
|  1  | Windows     | `101`   |
|  2  | Android 手机  | `102`   |
|  3  | iOS 手机      | `103`   |
|  4  | Linux C/C++ | `104`   |
|  5  | macOS       | `105`   |
|  6  | Web（WebRTC） | `106`   |
|  7  | 小程序         | `107`   |
|  8  | Android 盒子  | `108`   |
|  9  | Android 嵌入式 | `109`   |

所以看到 `103002`，读作：SRTC 层 + iOS 端 + 第 002 号错误。

***

## 排查时怎么用

| 前缀       | 说明            | 先看哪里                                                            |
| -------- | ------------- | --------------------------------------------------------------- |
| `1xxx`   | 服务端拒绝了请求      | 检查签名、Token、频道状态。见 [服务端 API 错误码](/zh/rtc/server-api/error-codes) |
| `100xxx` | SDK 通用错误，各端一致 | 通常是参数、初始化顺序、网络问题                                                |
| `10Nxxx` | 该平台特有的错误      | 见对应平台的错误码页                                                      |

各平台完整错误码表：
[Web](/zh/rtc/web/error-codes) · [Android](/zh/rtc/android/error-codes) · [Windows](/zh/rtc/windows/error-codes) · [Swift](/zh/rtc/swift/error-codes) · [iOS](/zh/rtc/ios/error-codes) · [C](/zh/rtc/capi/error-codes)

<Note>
  **C SDK 是个例外。** 它的接口返回的是 `0 / -1 / -2 / -3 / -4` 这样的简单状态值，用于表达调用层面的结果；真正的业务失败原因来自服务端，会打在日志里。见 [C SDK 错误码](/zh/rtc/capi/error-codes)。
</Note>

<Warning>
  不要按错误**文案**做分支判断 —— 文案会随版本调整，错误码不会。
</Warning>

***

## 与 SMeeting 的区别

同一套规则，只是业务层号不同：SRTC 用 `1`，SMeeting 用 `2`。

如果你用的是 SMeeting，会同时看到两类错误码：`2xxxxx` 来自会议层，`1xxxxx` 来自底层 SRTC（会议层原样透传，便于定位）。见 [SMeeting 错误码规则](/zh/meeting/error-codes)。
