Zoom meeting.started webhook payload example

Zoom · event: meeting.started · content type: application/json

This is a representative sample — fake IDs, real structure. To see a payload with your data, point the provider at a capture URL (button below).

See it live, not frozen

One click creates a free capture bin with this exact payload already in it — pretty-printed, headers inspectable, replayable to your own endpoint:

Then paste the bin's URL into Zoom's webhook settings to capture a real delivery. No signup.

Headers

content-type: application/json
x-zm-signature: v0=6c4e67cbEXAMPLEhexhmacEXAMPLE9a1f2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d
x-zm-request-timestamp: 1787961600

Body

{
  "event": "meeting.started",
  "event_ts": 1787961600000,
  "payload": {
    "account_id": "AbCdEfGhSampleAcct",
    "object": {
      "id": "1234567890",
      "uuid": "4444AAAbbbCCCddd==",
      "host_id": "z8yCxEXAMPLEhostQ",
      "topic": "Weekly sync",
      "type": 2,
      "start_time": "2026-08-29T00:00:00Z",
      "timezone": "America/Los_Angeles",
      "duration": 60
    }
  }
}

Things that bite people

Send it yourself

Reproduce this delivery against any endpoint (your handler, a bin, staging):

$ curl -X POST https://your-endpoint.example/hook \
  -H 'content-type: application/json' \
  -H 'x-zm-signature: v0=6c4e67cbEXAMPLEhexhmacEXAMPLE9a1f2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d' \
  -H 'x-zm-request-timestamp: 1787961600' \
 -d '{"event":"meeting.started","event_ts":1787961600000,"payload":{"account_id":"AbCdEfGhSampleAcct","object":{"id":"1234567890","uuid":"4444AAAbbbCCCddd==","host_id":"z8yCxEXAMPLEhostQ","topic":"Weekly sync","type":2,"start_time":"2026-08-29T00:00:00Z","timezone":"America/Los_Angeles","duration":60}}}'

← All payload examples · Related guide · Signature debugger · Docs