Ant Media · AsyncAPI Specification

Ant Media Webhooks

Version

View Spec View on GitHub BroadcastingLive StreamingMediaStreamingVideoWebRTCAsyncAPIEvents

AsyncAPI Specification

Raw ↑
specification: API Commons Webhooks
specificationVersion: '0.1'
provider: Ant Media
providerId: ant-media
generated: '2026-09-02'
method: searched
source: https://docs.antmedia.io/guides/advanced-usage/webhooks/
docs: https://docs.antmedia.io/guides/advanced-usage/webhooks/
description: >-
  Ant Media Server's outbound event surface. The server POSTs a JSON body to a URL the operator
  registers, either once for the whole application or per broadcast. No AsyncAPI document is
  published — this catalog is transcribed from the webhooks guide (HTTP 200, fetched
  2026-09-02).
asyncapi_published: false
transport:
  protocol: http
  method: POST
  content_type: application/json
  alternate_content_type: application/x-www-form-urlencoded
  content_type_setting: 'webhookContentType (advanced application settings)'
  expected_response: >-
    HTTP 200. The docs warn that hooks are called on the event-loop thread, so the receiver must
    respond quickly and do its work asynchronously.
registration:
  default:
    how: Set the Webhook URL in the application settings in the web panel.
    scope: application
  per_stream:
    how: >-
      Set the listenerHookURL field on the Broadcast object passed to createBroadcast
      (POST /v2/broadcasts/create).
    scope: broadcast
    operation: createBroadcast
delivery:
  retries: true
  since: 2.8.3
  settings:
    webhookRetryCount: 0
    webhookRetryDelay: 1000
  detail: >-
    If the receiver answers anything other than 200, or the connection errors or times out, the
    server retries. Both the retry count and the delay in milliseconds are operator-configurable
    in advanced application settings. The shipped default retry count is 0 — retries are OFF
    until an operator turns them on.
signing:
  supported: false
  detail: >-
    No signature header, no shared secret and no replay protection are documented. A receiver
    cannot verify that a POST came from its Ant Media Server; protect the endpoint with network
    controls or an unguessable URL.
common_fields:
  id: The stream id of the broadcast.
  action: The event name, repeated in the body.
  streamName: Name of the stream; may be null.
  category: Category of the stream; may be null.
  metadata: The Broadcast object's metaData field, parsed to an object when it is a JSON string.
  timestamp: Server time in milliseconds, as a string.
events:
  - name: liveStreamStarted
    trigger: A new live stream starts.
    fields: [id, action, streamName, category, metadata, timestamp]
  - name: liveStreamEnded
    trigger: A live stream ends.
    fields: [id, action, streamName, category, metadata, timestamp]
  - name: vodReady
    trigger: Recording of a live stream completes.
    fields: [id, app, duration, action, vodName, vodId, metadata, timestamp]
  - name: endpointFailed
    trigger: An RTMP endpoint republish fails.
    fields: [id, action, streamName, category, metadata, timestamp]
    note: metadata carries the RTMP URL of the failed endpoint.
  - name: publishTimeoutError
    trigger: Publish timeout — the server stopped receiving frames.
    fields: [id, action, streamName, category, metadata, timestamp]
    note: metadata is a JSON object containing subscriberId.
  - name: encoderNotOpenedError
    trigger: The encoder could not be opened.
    fields: [id, action, streamName, category, metadata, timestamp]
  - name: playStarted
    trigger: A WebRTC player starts playing a stream.
    fields: [id, action, streamName, category, subscriberId, timestamp]
  - name: playStopped
    trigger: A WebRTC player stops playing a stream.
    fields: [id, action, streamName, category, subscriberId, timestamp]
  - name: subtrackAddedInTheMainTrack
    trigger: A subtrack is created within a main track — in conferencing, a participant joined.
    fields: [id, action, streamName, category, subscriberId, mainTrackId, timestamp]
  - name: subtrackLeftTheMainTrack
    trigger: A subtrack left the main track — in conferencing, a participant left.
    fields: [id, action, streamName, category, subscriberId, mainTrackId, timestamp]
  - name: firstActiveTrackAddedInMainTrack
    trigger: The first active subtrack appears in a main track — the first participant joined the room.
    fields: [id, action, streamName, category, subscriberId, mainTrackId, timestamp]
  - name: noActiveSubtracksLeftInMainTrack
    trigger: No active subtracks remain — the room emptied.
    fields: [id, action, streamName, category, subscriberId, mainTrackId, timestamp]
event_count: 12
related:
  webhook_authorization: https://docs.antmedia.io/guides/stream-security/
  push_notifications: openapi/ant-media-push-notification-api-openapi.yml
maintainers:
  - FN: Kin Lane
    email: info@apievangelist.com
    url: https://apievangelist.com

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/ant-media-webhooks"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.