> ## 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/...`（SRTC 与 SMeeting 的主接口）和 `/stm/srvapi/v1/...`（SMeeting 的用户体系，服务端极简对接会用到）。鉴权是 app_id + nonce + timestamp + signature 四个请求头，用 app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。除这两组前缀外的接口均为内部接口，不要建议客户调用。 Public server APIs use two path prefixes with the same authentication: `/server/v1/...` (the main APIs of both SRTC and SMeeting) and `/stm/srvapi/v1/...` (the SMeeting user system, used by server-side low-code integration). Authenticate with four request headers, app_id + nonce + timestamp + signature, where signature is HMAC-SHA256 keyed with app_key; call these APIs only from the customer's own backend. Any other path is internal: never suggest calling it.
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端签发后下发（SRTC 走 `/server/v1/channel/grant`，SMeeting 走 `/stm/srvapi/v1/member/grant`）。 app_key is a server-side secret and must never appear in client code, frontend config, or a mobile app. The token a client uses to join must be issued by the customer's backend and passed down to the client (SRTC: `/server/v1/channel/grant`; SMeeting: `/stm/srvapi/v1/member/grant`).
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上，也不要用「频道」「加入 / 离开」描述 SMeeting 的概念（接口标识符原样保留）。 SRTC and SMeeting are two separate layers with different terminology. SRTC is the audio/video foundation: it has channels, and users join and leave a channel. SMeeting is built on top of SRTC: it has rooms and meetings, and members enter and exit a meeting. Answer in the terms of the layer the user is working with: never apply "room" or "meeting" to SRTC APIs, and never describe SMeeting concepts in prose with "channel", "join", or "leave" (API identifiers such as `force_join` keep their literal names).
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。苹果平台每个产品都有两套 SDK（Swift 原生与 Objective-C），两套 API 不能混用。 Package, class, and method names differ between platform SDKs for the same capability. In sample code, use the API documented for that platform; never carry one platform's code over to another. On Apple platforms each product ships two SDKs (native Swift and Objective-C) whose APIs must not be mixed.

# Changelog

> Release history of the SMeeting Web SDK (@seastart/smeeting-web-sdk), including changes that require code updates: v0.3.0 error code renumbering, English error messages, the new language parameter (with an old-to-new code mapping), and corrected McuTaskStatus values. Read before upgrading.

### Latest version

Check the latest version on npm:

```bash theme={null}
npm info @seastart/smeeting-web-sdk version
```

***

### v0.3.0 - 2026-09-30

<Warning>
  **This release contains breaking changes**: meeting-layer error codes are renumbered, the SDK's error messages are now in English, and a `language` parameter is added. Any code that branches on the numeric `code` (especially `206000`) or on Chinese error text needs to be updated according to the table below. For the full tables, see [Error codes](/en/meeting/web/error-codes) and [Error code format and unified table](/en/meeting/error-codes). The underlying SRTC is upgraded to Web 0.7.0 as well, and the `106xxx` codes it passes through are also renumbered; see the [SRTC Web changelog · v0.7.0](/en/rtc/web/changelog).
</Warning>

#### Breaking changes

* **Meeting-layer error codes renumbered**: low 3-digit codes are assigned from the cross-platform unified table instead of falling into `206000`. Check `code`, not the message text
* **Error messages in English**: the `message` / `msg` of the SDK's own errors are now all in English and meant for developers and logs; map codes to your own end-user messages (the error code page has a "Suggested user message" column)
* Network failures / HTTP non-200 responses when calling the meeting server are now always `206007`, with the HTTP status in `message`; unparsable responses or responses missing the `code` field are `206356`
* Capture / permission errors pass through the SRTC-layer codes unchanged (such as `106231` camera permission denied, `106251` microphone permission denied, and `106039` screen sharing denied), and the cleanup after a failed turn-on no longer overwrites the original error
* `McuTaskStatus` values now match the server: `WaitStart = 0` and `WaitEnd = 2` are added, `Exception` changes from 2 to 3, and `Normal` from 3 to 4. Code that compares by member name gets the correct meaning after upgrading; **check any code that compares against the literal numbers 2 / 3**

#### New

* **`language`** init parameter (for example `zh-CN` or `en`; if omitted, follows `navigator.language`, falling back to `zh`), which also applies to the underlying SRTC: requests to both the meeting server and the SRTC server carry `Accept-Language`, and **the messages of server business errors (`1000`–`99999`) come back in Chinese or English accordingly**. The SDK's own errors are always in English and aren't affected. See [Types](/en/meeting/web/types)
* `autoPlayDialogText` init parameter: overrides the text of the autoplay prompt (by default Chinese or English according to `language`)
* The package exports `SdkError` and `MeetingErrorCode` (meeting-layer low 3 digits). The SRTC package also exports an `SdkError` with the same name; alias one of them when importing both packages

#### Fixes

* The `McuRecordDetail` type now matches what the server actually returns: fields such as `began_at` / `total_duration` / `records` are added, and `mcu_at` / `mcu_dur` are deprecated (the server still fills them in; new integrations should use `began_at` / `total_duration`)

#### Changes

* The SRTC dependency is upgraded to `@seastart/srtc-web-sdk` 0.7.0
* The npm page description is now bilingual (Chinese and English), and the license is now proprietary (UNLICENSED)

#### Old code → new code mapping

| Scenario | 0.2.0 and earlier | 0.3.0 |
| - | - | - |
| Not logged in / token expired / not in a meeting / no permission (host operations) | `206001` / `206002` / `206003` / `206004` | Unchanged (message now in English) |
| The room has disabled turning on the camera / mic / screen sharing | `206000` | `206004` |
| The token can't be parsed | Raw parse exception | `206005` |
| Already in a meeting, entering again | `206000` | `206006` |
| Network failure / HTTP non-200 when calling the meeting server | `Error` with no code | `206007` |
| No such member in the meeting | `206000` | `206010` |
| Turning on the camera / mic / screen sharing when it's already on, switching devices before it's on, and so on | `206000` | `206011` |
| Unparsable response / missing the `code` field | Raw parse exception / treated as a server error | `206356` |
| Capture / permission / publish and subscribe failures (passed through from SRTC) | Old SRTC codes or the browser's raw exception | New SRTC codes such as `106231`, `106251`, `106039`; see the [SRTC Web changelog](/en/rtc/web/changelog) |
| Server business errors (`1000`–`99999`) | Passed through | Passed through; messages come back in Chinese or English according to `language` |

### v0.2.0 - 2026-09-02

* feat: the SRTC dependency is upgraded to Web 0.6.x and adapted to the multi-channel API
* feat: audio level meters and "speaking" indication
* fix: turning the mic / camera / screen sharing on and off is serialized per slot, eliminating duplicate tracks published by concurrent operations
