Zoom API Design
Explore the design of the Zoom API, focusing on managing meetings, participants, and streaming in real-time video conferencing. Understand key protocols, architectural decisions, scalability strategies, and latency considerations that enable efficient, secure, and low-latency video communication at scale.
Zoom API design
Video conferencing applications like Zoom connect millions of users for remote collaboration through face-to-face meetings, screen sharing, and recording. Designing an API like this requires a deep understanding of networking, real-time media transport, and backend orchestration. This masterclass covers how Zoom meetings are scheduled, how resources are assigned for global streaming sessions, and how the overall architecture enables an efficient video conferencing API.
Functional requirements
Managing meetings: The API allows hosts to initiate, schedule, update, and delete one-on-one or group meetings.
Managing participants: The API allows hosts to add, remove, and restrict participants.
Streaming data: The API allows participants to share screens and audio/video streams.
Recording meetings: The API allows hosts to record meetings locally or in the cloud.
Nonfunctional requirements
Availability and reliability: The API must remain available to end users; the system should function reliably even if some participants temporarily drop.
Security: End-to-end encrypted communication, with mechanisms to handle spam attendees.
Scalability: The service must handle a growing user base and concurrent requests.
Latency: As a real-time application, the API must deliver content with minimal latency.
What if the host gets disconnected during the meeting?
Prerequisites
This design builds on the pub-sub service, which notifies participants of events such as recording status, time limits, and guest join requests.
Real-time communication foundations
The internet's client-server model introduces inherent relay latency. For video conferencing, this is compounded by large data sizes and distant servers, resulting in glitchy playback when the path is suboptimal.
User-perceived latency depends primarily on transfer and processing time. Live streams require minimal processing but often traverse long distances. Solving this "extra miles" problem requires real-time communication techniques.
Real-time communication
The shortest data path is peer-to-peer, but this becomes problematic when participants sit behind different
Note: A multimedia session identifies media-related metadata essential for transmission, processing, and enabling device-specific features compatible with other participants.
Which events should be considered live/real-time events?
Signaling and connecting
Signaling is the successful initiation of a multimedia session between participants. Before communication starts, clients must exchange and agree on session information (communication addresses, media descriptions, and metadata) via the Session Description Protocol (SDP).
SDP is a standardized description format delivered using protocols like Session Initiation Protocol (SIP) or
Session Initiation Protocol (SIP)
SIP provides guidelines for peer-to-peer communication to share, maintain, and terminate audio/video conferences. It is not a complete
The following illustration shows two clients exchanging session information via SIP signaling. Both clients agree to share data (steps one and two), but exchanging actual video frames requires establishing an interactive connection (step three):
Data exchange protocols
Several protocols provide bidirectional, endpoint-to-endpoint data flow: WebSockets, WebRTC,
While peer-to-peer protocols like WebRTC enable powerful real-time data transfer, they introduce scaling challenges.
Scaling real-time communication
SIP handles session exchange, and WebRTC handles data exchange, but neither alone provides a scalable conferencing solution. Peer-to-peer connections work for small groups (five to 10 participants), but beyond that, a full mesh becomes resource-intensive for each participant:
Why is the total number of streams in a mesh topology and not ?