meetbot.dev

bot api · zoom

web shipping today · linux SDK Q3

Zoom, recorded.

POST a zoom.us URL into POST /v1/bots; we join via the web client today (no Zoom SDK key required, no native binary on your side). The Zoom Linux Meeting SDK lands in M5 for paid hosts who need authenticated joins.

overview

Why this exists.

Two adapter paths. Today: the Zoom Web client. Same Puppeteer + Chrome stack as Meet and Teams; works for free-tier hosts, doesn't require a Zoom SDK key from you, doesn't need a native binary anywhere in your stack. Per-speaker audio comes from the WebRTC SSRC mapping; participant names from the People pane; captions from Zoom's caption WebSocket where enabled. Webhook contract identical to the other platforms.

The Linux SDK upgrade in M5. We've applied for Zoom's Linux Meeting SDK license — when it's approved (4-week wait), we'll route paid Zoom hosts through the native SDK via a Bun FFI binding. That means no more weekly DOM-breakage games with Zoom's web client and a much higher reliability ceiling for the customers who need it. The Web adapter stays in place as the fallback for free-tier hosts the SDK can't authenticate against.

Signed-in bots later. M3 brings Zoom OAuth on top of the SDK path — you register a Zoom OAuth app, your end-users go through OAuth, we store the ZAK + OBO tokens, and the bot joins as an authenticated host. That bypasses the lobby on free Zoom plans and means we can record without the host being present. This is the same "hosted multi-tenant OAuth" pattern we're rolling out for Google + Microsoft in parallel.

what you get back

The contract, spelled out.

item

Web-client adapter

Today's path. Puppeteer + Chrome. No Zoom SDK key needed; works on free-tier and paid Zoom alike.

item

Zoom Linux Meeting SDK

M5 (Q3 2026). C++ FFI from Bun via bun:ffi. Higher reliability for paid Zoom hosts; replaces Web adapter for those accounts.

item

ZAK + OBO via OAuth

M3. Customer registers a Zoom OAuth app; end-users authorize; bot joins as authenticated host. Bypasses lobby on free Zoom plans.

item

Per-speaker audio + names

WebRTC SSRC mapping joined to Zoom's People-pane participant names. Same JSONL shape as Meet/Teams.

item

Captions via WebSocket

Where the host has captions enabled, we read finalized utterances off Zoom's caption WebSocket. DOM-scrape fallback otherwise.

item

Sub-codes on exit

waiting_for_host, host_denied_admission, removed_from_meeting, meeting_ended, recording_disabled, lobby_timeout — surfaced on the webhook.