API Reference
To make API requests to Zoom, start by obtaining an access token through OAuth or server-to-server authentication.
Send HTTP requests to the base URL https://api.zoom.us/v2/ with your access token in the Authorization header. Use GET, POST, PATCH, PUT, or DELETE methods as needed for different endpoints. Refer to the API reference for specific endpoint details and required parameters.
Base URL sample
https://api.zoom.us/v2/
Workplace
- Meetings
- Chat
- Phone
- Calendar
- Scheduler
- Rooms
- Clips
- Whiteboard
- Conference Room Connector
- Chatbot
- AI Companion
- Zoom Docs
- Tasks
Business services
- Contact Center
- Webinars Plus & Events
- Virtual Agent
- Revenue Accelerator
- Number Management
- Quality Management
- Workforce Management
- Commerce
- Healthcare
- Video Management
- Auto Dialer
- Customer Managed Keys Hybrid
Accounts
Build platform
Marketplace
Authentication
All API requests require an access token. You can get an access token by authenticating with OAuth 2.0 or by using server-to-server OAuth 2.0.
For OAuth, implement the authorization flow to get user consent and receive an authorization code. Exchange this code for an access token.
For server-to-server OAuth, use your app credentials to directly request an access token. Both methods provide access tokens valid for one hour.
Use the refresh token (for OAuth) or request a new token (for server-to-server) when the current token expires.
OAuth 2.0 sample
curl -X POST https://zoom.us/oauth/token \
-H "Authorization: Basic BASE64_ENCODED_CLIENT_ID_AND_SECRET" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code&code=AUTHORIZATION_CODE&redirect_uri=YOUR_REDIRECT_URI"
Access token response sample
{
"access_token": "<JWT_TOKEN>",
"token_type": "bearer",
"refresh_token": "<JWT_TOKEN>",
"expires_in": 3599,
"scope": "user:read"
}
Make API requests
Send HTTP requests to the base URL https://api.zoom.us/v2/ with your access token in the Authorization header. Use GET, POST, PATCH, PUT, or DELETE methods as needed for different endpoints. Refer to the API reference for specific endpoint details and required parameters.
cURL sample
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
https://api.zoom.us/v2/users/me
Subscribe to events
Zoom will send real-time notifications to your endpoint when events occur. To subscribe to events, set up event subscriptions in your app. Specify an HTTPS endpoint URL that can accept POST requests with JSON payloads. Enable desired event subscriptions in your app settings.
Implement verification to ensure webhook authenticity. Your endpoint should respond with a 200 or 204 status code within 3 seconds to confirm receipt.
In addition to webhooks, Zoom offers WebSockets for real-time event notifications. See the WebSockets documentation for details on this alternative method, currently in public beta.
meeting.started sample
{
"event": "meeting.started",
"payload": {
"account_id": "o8KK_AAACq6BBEyA70CA",
"object": {
"duration": 60,
"start_time": "2022-03-01T10:00:00Z",
"timezone": "America/Los_Angeles",
"topic": "My Meeting",
"id": "123456789",
"type": 2,
"uuid": "jI8fgZVOQkOKgOTgMFM2Jw==",
"host_id": "z8yCxTTTTKWIFKy9d3VA"
}
},
"event_ts": 1646128800000
}
Rate limits
The Zoom API uses rate limits to ensure efficient handling of API request traffic. When you exceed a rate limit, the API request will fail and return a HTTP 429 status code. Rate limits are applied at the account level and vary based on your account plan.
Zoom sends responses for queries-per-second (QPS) or daily limits.
For full details on rate limits, see our rate limit documentation.
Response headers (QPS) sample
X-RateLimit-Category: Light
X-RateLimit-Type: QPS
Response body (QPS) sample
{
"code": 429,
"message": "You have reached the maximum per-second rate limit for this API. Try again later."
}
Response headers (daily-limit) sample
X-RateLimit-Category: Heavy
X-RateLimit-Type: Daily-limit
X-RateLimit-Limit: 30000
X-RateLimit-Remaining: 0
Retry-After: 2025-08-23T00:00:00Z
Response body (daily-limit) sample
{
"code": 429,
"message": "You have reached the maximum daily rate limit for this API. Refer to the response header for details on when you can make another request."
}
Pagination
Zoom APIs use pagination to manage large result sets. Most APIs use the next_page_token parameter for pagination. When making requests, specify the page_size to control results per page. If more results are available, use the returned next_page_token in subsequent requests.
For full details on pagination, see our pagination documentation.
Request with next_page_token sample
curl -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
"https://api.zoom.us/v2/users/me/meetings?page_size=30&next_page_token=abc3445rg"
Response with next_page_token sample
{
"page_count": 1,
"page_number": 1,
"page_size": 30,
"total_records": 2,
"next_page_token": "abc3445rg",
"meetings": [
{
"id": 123456789,
"topic": "My Meeting",
"start_time": "2023-04-15T22:00:00Z",
"duration": 60,
"timezone": "America/Los_Angeles",
"created_at": "2023-04-14T21:14:55Z",
"join_url": "https://example.com/j/123456789"
},
{
"id": 987654321,
"topic": "Team Sync",
"start_time": "2023-04-16T15:00:00Z",
"duration": 30,
"timezone": "America/New_York",
"created_at": "2023-04-14T22:30:00Z",
"join_url": "https://example.com/j/987654321"
}
]
}
Status and error codes
The Zoom API uses HTTP Status codes to reflect a successful or unsuccesful request. 2XX status codes represent a successful request, 4XX/5XX status codes represent an error took place. If you receive an error status code, check the body for an error code and message.
Reference Error Codes for more information.
Get started in Postman
Zoom's Postman Public Workspace provides a collection of API requests to help you get started with Zoom APIs.
Start with the full collection, or jump in to Get Started Fast with Zoom APIs for tailored workflows like authorization, creating non-login users, in-meeting control and more in this collection.