Skip to content
Business
Skill

/rtms

Reference skill for Zoom RTMS. Use after routing to a live-media workflow when processing real-time audio, video, chat, transcripts, screen share, or contact-center voice streams.

From plugin
knowledge-work-plugins
35k200 skills5 agents15 commands40 MCP

Claude Code

$ npx -y skills add anthropics/knowledge-work-plugins --skill rtms --agent claude-code

SKILL.md

rtms.SKILL.md
name: zoom-rtms
description: Reference skill for Zoom RTMS. Use after routing to a live-media workflow when processing real-time audio, video, chat, transcripts, screen share, or contact-center voice streams.
user-invocable: false
triggers:
  - "real-time media"
  - "rtms"
  - "live audio stream"
  - "live video stream"
  - "meeting transcription"
  - "raw audio"
  - "raw video"
  - "websocket media"
  - "live transcript"
  - "streaming audio"
  - "streaming video"
  - "meeting bot media"
  - "contact center voice media"
  - "participant video on"
  - "participant video off"
  - "single individual video stream"

Zoom Realtime Media Streams (RTMS)

Background reference for live Zoom media pipelines. Prefer `build-zoom-bot` first, then use this skill for stream types, capabilities, and RTMS-specific implementation constraints.

Zoom Realtime Media Streams (RTMS)

Expert guidance for accessing live audio, video, transcript, chat, and screen share data from Zoom meetings, webinars, Video SDK sessions, and Zoom Contact Center Voice in real-time. RTMS uses a WebSocket-based protocol with open standards and does not require a meeting bot to capture the media plane.

Read This First (Critical)

RTMS is primarily a **backend media ingestion service**.

  • Your backend receives and processes live media: **audio, video, screen share, chat, transcript**.
  • RTMS is not a frontend UI SDK by itself.
  • Processing is **event-triggered**: backend waits for RTMS start webhook events before stream handling begins.

Optional architecture (common):

  • Add a **Zoom App SDK** frontend for in-client UI/controls.
  • Stream backend RTMS outputs to frontend via **WebSocket** (or SSE, gRPC, queue workers, etc.).

Use RTMS for media/data plane, and use frontend frameworks/Zoom Apps for presentation + user interactions.

**Official Documentation**: https://developers.zoom.us/docs/rtms/ **SDK Reference (JS)**: https://zoom.github.io/rtms/js/ **SDK Reference (Python)**: https://zoom.github.io/rtms/py/ **Sample Repository**: https://github.com/zoom/rtms-samples

Quick Links

**New to RTMS? Follow this path:**

1. **[Connection Architecture](concepts/connection-architecture.md)** - Two-phase WebSocket design 2. **[SDK Quickstart](examples/sdk-quickstart.md)** - Fastest way to receive media (recommended) 3. **[Manual WebSocket](examples/manual-websocket.md)** - Full protocol control without SDK 4. **[Media Types](references/media-types.md)** - Audio, video, transcript, chat, screen share

**Complete Implementation:**

  • **[RTMS Bot](examples/rtms-bot.md)** - End-to-end bot implementation guide

**Reference:**

  • **[Lifecycle Flow](concepts/lifecycle-flow.md)** - Complete webhook-to-streaming flow
  • **[Data Types](references/data-types.md)** - All enums and constants
  • **[Webhooks](references/webhooks.md)** - Event subscription details
  • **[Environment Variables](references/environment-variables.md)** - credential modes and runtime knobs
  • **[Quickstart Notes](references/quickstart.md)** - Secondary quickstart guide
  • **Integrated Index** - see the section below in this file

**Having issues?**

  • Connection fails -> [Common Issues](troubleshooting/common-issues.md)
  • Duplicate connections -> [Webhook Gotchas](troubleshooting/common-issues.md#webhook-response-timing)
  • No audio/video -> [Media Configuration](references/media-types.md)
  • Start with preflight checks -> [5-Minute Runbook](RUNBOOK.md)

Supported Products

| Product | Webhook Event | Payload ID | App Type | |---------|--------------|------------|----------| | **Meetings** | `meeting.rtms_started` / `meeting.rtms_stopped` | `meeting_uuid` | General App | | **Webinars** | `webinar.rtms_started` / `webinar.rtms_stopped` | `meeting_uuid` (same!) | General App | | **Video SDK** | `session.rtms_started` / `session.rtms_stopped` | `session_id` | Video SDK App | | **Zoom Contact Center Voice** | Product-specific RTMS/ZCC Voice events | Product-specific stream/session identifiers | Contact Center / approved RTMS integration |

Once connected, the core signaling/media socket model is shared across products. Meetings, webinars, and Video SDK sessions use the familiar start/stop webhooks. Zoom Contact Center Voice adds its own RTMS/ZCC Voice event family and should be treated as the same transport model with product-specific event payloads.

RTMS Overview

RTMS is a data pipeline that gives your app access to live media from Zoom meetings, webinars, and Video SDK sessions **without participant bots**. Instead of having automated clients join meetings, use RTMS to collect media data directly from Zoom's infrastructure.

What RTMS Provides

| Media Type | Format | Use Cases | |------------|--------|-----------| | **Audio** | PCM (L16), G.711, G.722, Opus | Transcription, voice analysis, recording | | **Video** | H.264, JPG, PNG | Recording, AI vision, thumbnails, active participant selection | | **Screen Share** | H.264, JPG, PNG | Content capture, slide extraction | | **Transcript** | JSON text | Meeting notes, search, compliance | | **Chat** | JSON text | Archive, sentiment analysis |

March 2026 Protocol Changes

  • **Zoom Contact Center Voice support**: RTMS now covers Contact Center Voice audio and transcript scenarios.
  • **Transcript Language Identification control**: transcript media handshakes now support `src_language` and `enable_lid`. Default behavior is LID enabled. Set `enable_lid: false` to force a fixed language.
  • **Single individual video stream subscription**: RTMS can now stream one participant's camera feed at a time when `data_opt` is set to `VIDEO_SINGLE_INDIVIDUAL_STREAM`.
  • **Graceful client-initiated shutdown**: backends can send `STREAM_CLOSE_REQ` over the signaling socket and wait for `STREAM_CLOSE_RESP`.
  • **Media keep-alive tolerance increased**: media socket keep-alive timeout is now **65 seconds**, not 35.

Two Approaches

| Approach | Best For | Complexity | |----------|----------|------------| | **SDK** (`@zoom/rt

Read more
@anthropics-2
Ships withknowledge-work-plugins

Plugins that turn Claude into a specialist for your role, team, and company. Built for Claude Cowork, also compatible with Claude Code.

35k200 skills5 agents40 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
35.3k
Star history of anthropics/knowledge-work-plugins on GitHub, a chart by star-history.com

Other skills on knowledge-work-plugins.

More skills from other plugins.

opc-asset-ops

opc-asset-ops

Turn repeatable outputs of a one-person company into compounding assets. Use when Codex needs to explain asset-compounding…

@easychen@easychenInstall Skill
dbs

dbs

dontbesilent 商业工具箱的技能调度台,根据当前问题和反馈选择下一步,在对话中直接执行、澄清、组合或对照尝试 Skill。用户不知道从哪里开始、需要调整处理方法、第一次使用…

dbs2d11k
@dontbesilent2025@dontbesilent2025Install Skill
money

money

Main entry point for the Show Me The Money business automation suite. Dual mode: pre-task routing (which skill fits your problem)…

@iamzifei@iamzifeiInstall Skill

Questions about rtms.

Which coding agents can use rtms?
rtms installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.