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

Business services

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.