Zoom API logo

Zoom API

Zoom API

Zoom API creates meetings, manages participants, and fetches recordings or transcripts — the foundation for Zoom integrations and bots.

Visit site ↗Health checked 9h ago
Use it when

OAuth and Server-to-Server OAuth cover personal and org-wide use

Watch for

Free accounts cap meetings at 40 minutes

First check

Create a Server-to-Server OAuth app (simplest for in-house use) or an OAuth app (for third-party distribution) at marketplace.zoom.us. After getting an access_token, send Authorization: Bearer <token>. Webhook endpoints must be configured and verified in the Marketplace.

Auth
oauth
CORS
No
HTTPS
Yes
Signup
Required
Latency
2570 ms
Protocol
REST
Pricing
freemium

Uptime · 30-day window

Probes: 1Uptime: 100%Avg latency: 2570ms
01

About this API

The Zoom API covers Meetings, Webinars, Phone, and Chat. The most common entry points are the Meetings and Recordings APIs: create meetings, generate join URLs, and fetch recordings and transcripts after the call. The Webinar API serves the events/marketing space with registration, reminders, and reports.

Authentication offers three app types. Server-to-Server OAuth is simplest for in-house backend calls — no user-authorization dance. OAuth is for third-party distribution. JWT is deprecated and only kept for legacy migration. All API calls are HTTPS, and access tokens are short-lived — refresh them on a regular cadence.

Webhooks are the main bridge to external systems: meeting started, ended, recording ready, participant joined — all push to your configured endpoint in real time. Zoom does not guarantee exactly-once delivery, so retries may produce duplicate events — your handler must be idempotent. Free Zoom accounts have a hard 40-minute cap per meeting, which matters for any paid-demo flow that depends on longer meetings.

02

What you can build

  • 1Programmatically create meeting links and embed them in calendars
  • 2Manage webinar registrations and reminder emails
  • 3Fetch cloud recordings and transcripts
  • 4Query usage and billing reports
  • 5Trigger post-meeting automations (notes, follow-ups) via webhooks
03

Strengths & limitations

Strengths

  • OAuth and Server-to-Server OAuth cover personal and org-wide use
  • Rich meeting metadata and recording APIs
  • Marketplace listing gives a stable distribution channel

Limitations

  • Free accounts cap meetings at 40 minutes
  • Some advanced features (live transcription, breakouts) require paid plans
  • Webhook retries require you to handle idempotency yourself
04

Example request

Generic template — replace <endpoint> with the real path from the docs.
curl https://developer.zoom.us/<endpoint> \
  -H "Authorization: Bearer $ACCESS_TOKEN"
05

Getting started

Create a Server-to-Server OAuth app (simplest for in-house use) or an OAuth app (for third-party distribution) at marketplace.zoom.us. After getting an access_token, send Authorization: Bearer <token>. Webhook endpoints must be configured and verified in the Marketplace.

06

FAQ

Is API access free?+

The API itself is free, but the features it exposes are still gated by your Zoom plan (e.g. the 40-minute meeting cap on free accounts).

Are JWT apps still usable?+

No — JWT is deprecated. New apps must use OAuth or Server-to-Server OAuth. Legacy JWT apps need to migrate.

Can I get live captions during a meeting?+

Yes, via Live Transcription (paid feature) over a dedicated WebSocket endpoint.

Why am I getting duplicate webhook events?+

Zoom does not guarantee exactly-once delivery. Your endpoint should dedupe by event id.

07

Technical details

CORS: NoHTTPS: YesSignup: YesOpen source: No
Auth type
oauth
Pricing
freemium
Protocols
REST
SDKs
javascript, typescript, python, java
Response time
2570 ms
Last health check
5/12/2026, 7:38:45 AM
08

Endpoints

Parsed from the OpenAPI spec. Showing 12 of 369 non-deprecated endpoints.

GET
/accountsAccounts

List sub accounts

page_size:querypage_number:querynext_page_token:query
POST
/accountsAccounts

Create a sub account

DELETE
/accounts/{accountId}Accounts

Disassociate a sub account

accountId:path*
GET
/accounts/{accountId}Accounts

Get sub account details

accountId:path*
GET
/accounts/{accountId}/billingBilling

Get billing information

accountId:path*
PATCH
/accounts/{accountId}/billingBilling

Update billing information

accountId:path*
GET
/accounts/{accountId}/billing/invoicesBilling

List billing invoices

accountId:path*from:queryto:query
GET
/accounts/{accountId}/billing/invoices/{invoiceId}Billing

Get invoice details

accountId:path*invoiceId:path*
GET
/accounts/{accountId}/lock_settingsAccounts

Get locked settings

accountId:path*accountId:path*option:querycustom_query_fields:query
PATCH
/accounts/{accountId}/lock_settingsAccounts

Update locked settings

accountId:path*accountId:path*
GET
/accounts/{accountId}/managed_domainsAccounts

Get managed domains

accountId:path*
PATCH
/accounts/{accountId}/optionsAccounts

Update options

accountId:path*

357 more endpoints not shown. See the OpenAPI spec for the full list.

09

Tags

10

Alternatives to consider

Different providers solving similar problems. Picked by category, auth, pricing, and tag overlap.