# Programmatic Zoom webhook management with event subscriptions API endpoints Building event-driven applications on the Zoom developer platform enables powerful real-time integrations,enhancing everything from workflow automation to live notifications. Managing webhook subscriptions across multiple regions and accounts can be complex, but now Zoom provides API endpoints to programmatically manage event subscriptions and better tailor them to your needs. ## The challenge: managing webhooks at scale In a multi-tenant SaaS platform that integrates with Zoom on behalf of hundreds of global customers, each tenant has different needs: - Different event types (e.g., meetings, recordings, webinars) - Unique webhook endpoints per customer - Regional compliance requirements Previously, webhook subscriptions were configured at the app level, affecting all users equally. There was no way to customize events per user or account, making granular control very challenging. ## The solution: Zoom’s event subscription API endpoints Zoom now offers API endpoints that let developers programmatically manage webhook subscriptions on a per-user or per-account basis. This offers key benefits such as: - **Granular delivery:** Send specific events only to the users or accounts that need them - **Regional flexibility:** Manage subscriptions differently by region or compliance requirement - **Scalability:** Handle thousands of users without manual setup ## API capabilities With the event subscription endpoints, developers can: - [Create](/docs/api/marketplace/#tag/app/post/marketplace/app/event_subscription) an event subscription - [Subscribe](/docs/api/marketplace/#tag/app/patch/marketplace/app/event_subscription/{eventSubscriptionId}) users or accounts to an event subscription - [Unsubscribe](/docs/api/marketplace/#tag/app/delete/marketplace/app/event_subscription) users or accounts from an event subscription - [Delete](/docs/api/marketplace/#tag/app/delete/marketplace/app/event_subscription/{eventSubscriptionId}) an event subscription - [Get](/docs/api/marketplace/#tag/app/get/marketplace/app/event_subscription) user or account event subscription This level of control enables reliable automation, reduces manual error, and supports high-scale integrations. ## Quick start: create and subscribe to an event subscription with cURL To authenticate API requests, use a **General OAuth** app type and obtain an access token via the [client credentials](/docs/integrations/oauth/#example-request-4) grant type. ``` curl --location --request POST 'https://zoom.us/oauth/token?grant_type=client_credentials' \ --header 'Authorization: Basic ' ``` The basic authorization header is your **Client ID** and **Client Secret** with a colon **:** in between, Base64 Encoded. _Note: The required scopes to use these event subscription API endpoints **do not need to be manually selected** during the app build process. They are automatically granted when using the **Client Credentials Grant** flow with a **General OAuth app**._



This returns an `access_token` with the required scopes to manage webhook subscriptions. Use this token as a bearer token in the authorization header of subsequent API calls. ``` { "access_token": "eyJzb20TNhIT_106eEK3dquTjMyGsKZUgLdOA...", "token_type": "bearer", "expires_in": 3600, "scope": "marketplace:delete:event_subscription marketplace:read:list_event_subscriptions marketplace:update:event_subscription marketplace:write:event_subscription marketplace:write:websocket_connection", "api_url": "https://api.zoom.us" } ``` To programmatically manage event subscriptions: 1. Create an event subscription ``` curl --request POST \ --url https://api.zoom.us/v2/marketplace/app/event_subscription \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "events": ["meeting.created"], "event_subscription_name": "Example Event Subscription", "event_webhook_url": "https://www.example.com", "user_ids": [ "_8KG7DeoRU2xIsDSY9ed2Q", "90KG7DeoRU2xIsDSY9edwe" ], "subscription_scope": "user", "account_id": "pvg3UAgpRlyTDW-9sIpKcw" }' ``` ``` Response: { "event_subscription_id": "0ZAaJY4dQ52BbwI9PArBLQ" } ``` 2. Subscribe users or accounts to event subscription ``` curl --request PATCH \ --url https://api.zoom.us/v2/marketplace/app/event_subscription/0ZAaJY4dQ52BbwI9PArBLQ \ --header 'Authorization: Bearer YOUR_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data '{ "user_ids": [ "_8KG7DeoRU2xIsDSY9ed2Q", "90KG7DeoRU2xIsDSY9edwe" ], "account_id": "5AATFjiUS0yEnELIMzQO4g" }' ``` You can also use the API to unsubscribe users or accounts from an event subscription, delete subscriptions, or get current subscriptions. Combined with the newly enhanced [get webhook logs endpoint](/docs/api/marketplace/#tag/app/get/marketplace/apps/{appId}/webhook_logs), developers can get full visibility into: - Delivery success/failure - Retry attempts - Error tracking This makes it easier to build production-grade, event-driven integrations that are scalable and easy to debug. ### Multi-tenant webhook management with Zoom is easier than ever Zoom’s event subscription endpoints give you the tools to build dynamic, personalized, and scalable webhook integrations. Whether you're building for one customer or for multiple, these endpoints help you: - Cut down on manual setup - Improve regional and customer-specific flexibility - Reduce integration errors Start integrating these endpoints into your codebase and upgrade your data management process toward more streamlined webhook management. ## Happy coding!