> ## 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.

# Build with AI

> Connect the SRTC / SMeeting docs to AI coding tools such as Claude Code and Cursor: install the integration skills with one command, or connect the docs MCP server. Also covers llms.txt, per-page Markdown, and how to prompt for better results.

If you write code with an AI coding tool, you can connect our docs to it so that it generates code against our actual APIs and conventions instead of guessing from its training data.

There are two ways to do this. **We recommend the first one**—it takes a single command.

***

## Option 1: Install the skills (recommended)

Run this in your project directory:

```bash theme={null}
npx skills add https://docs.stmlink.com
```

This creates `.agents/skills/` in your project. It works with Claude Code, Cursor, Codex, Gemini CLI, Devin, and other mainstream tools, and your AI reads it automatically.

It installs three skills, each for a different scenario:

| Name | When it is used |
| - | - |
| **SRTC 音视频接入** (*SRTC audio and video integration*) | Real-time audio and video: joining a channel, publishing and subscribing to tracks, screen sharing, recording |
| **SMeeting 会议接入** (*SMeeting conferencing integration*) | Video conferencing: choosing an integration option, meeting controls, raise hand, waiting room, in-meeting messages |
| **SRTC / SMeeting 服务端接入** (*SRTC / SMeeting server integration*) | Calling the APIs from your backend: how to compute the signature, how to issue tokens, how to receive callbacks |

They are not copies of the docs. They cover **the places where integrations most often go wrong**: call order, the difference between the terms of the two layers, the three common causes of signature failures, and what our design does not support (for example, a host cannot force another member's camera on).

<Tip>
  After installing, you can ask right away: "I want to build a video meeting with a host and raise hand on Web. Help me plan the integration."
  The AI first decides which integration option to use and then gives you the steps—instead of dumping code that may target the wrong layer.
</Tip>

***

## Option 2: Connect the docs MCP server

When you need the AI to look up the full docs in real time (not just the skills), configure our MCP server:

```
https://docs.stmlink.com/mcp
```

It provides docs search and reads whole pages by path. For how to configure it, see the MCP documentation of the tool you use. Once connected, the three skills above are also discovered automatically, so you don't need to install them separately.

***

## Give the AI context directly

If you don't want to install anything, you can give these URLs to the AI directly:

| URL | Content |
| - | - |
| `https://docs.stmlink.com/llms.txt` | Index of all pages on the site, grouped by product and platform; the AI uses it to decide which page to read |
| Any doc page URL plus `.md` | The Markdown source of that page, for example `/zh/rtc/web/quickstart.md` |

Each page also has **Copy page** and **Open in ChatGPT / Claude** buttons in the top-right corner.

***

## Results depend on how you ask

These points noticeably improve the quality of generated code:

* **Say which layer.** "Build a meeting with SMeeting" and "build an audio/video call with SRTC" use completely different APIs, and their terms don't carry over.
* **Say which platform.** The same capability has different class and method names on Web, Android, and Swift.
* **Say whether you are building your own UI.** This determines which SMeeting integration option to use; picking the wrong one wastes a lot of work.

<Warning>
  **Review the code the AI generates, especially anything involving keys.** `app_key` must stay on your own backend.
  Any approach that puts it in frontend code, a configuration file, or a mobile app is wrong—even if the AI generated it that way.
  See [Token and authentication](/en/rtc/token).
</Warning>

***

## Having problems

If the AI-generated code uses the wrong API, it usually means the docs don't explain that part clearly enough. Let us know—we'll fix the docs. That is more valuable than working around it on your own.
