Red5 · AsyncAPI Specification

Red5 Pro Webhooks

Version 16.0.0

Red5 Pro's webhook subsystem calls a customer-supplied REST endpoint when streaming events occur. Events are grouped into six categories — CONNECT, PUBLISH, SUBSCRIBE, WEBSOCKET, MEDIA and USER — and are configured through indexed endpoint properties in `conf/red5.properties` (previously `webapps/live/WEB-INF/red5-web.properties`) or, in a Stream Manager 2.0 deployment, through NodeGroupConfig `propertyOverrides`. From a fresh install the default policy is cluster-aware: origin nodes fire only PUBLISH events and edge nodes only SUBSCRIBE events, which suppresses the duplicate events an unfiltered configuration produces. This document is DERIVED verbatim from Red5's published webhook documentation; Red5 does not publish an AsyncAPI of its own for this surface.

View Spec View on GitHub Live StreamingMediaReal-TimeRTMPStreamingVideoWebRTCAsyncAPIEventsWebhooks

Channels

webhookReceiver
A single configured endpoint receives every event that passes its category and event filters (`webhooks.endpoints..filters.categories`, `webhooks.endpoints..filters.events`, and role filters).

Messages

WebhookEvent
Red5 Pro webhook event

Servers

https
customerEndpoint
The customer-operated HTTPS endpoint configured as `webhooks.endpoints..url`. Red5 POSTs to it; there is no Red5-operated host on this surface.

AsyncAPI Specification

Raw ↑
asyncapi: 3.0.0
info:
  title: Red5 Pro Webhooks
  version: '16.0.0'
  description: >-
    Red5 Pro's webhook subsystem calls a customer-supplied REST endpoint when streaming
    events occur. Events are grouped into six categories — CONNECT, PUBLISH, SUBSCRIBE,
    WEBSOCKET, MEDIA and USER — and are configured through indexed endpoint properties
    in `conf/red5.properties` (previously `webapps/live/WEB-INF/red5-web.properties`) or,
    in a Stream Manager 2.0 deployment, through NodeGroupConfig `propertyOverrides`.
    From a fresh install the default policy is cluster-aware: origin nodes fire only
    PUBLISH events and edge nodes only SUBSCRIBE events, which suppresses the duplicate
    events an unfiltered configuration produces. This document is DERIVED verbatim from
    Red5's published webhook documentation; Red5 does not publish an AsyncAPI of its own
    for this surface.
  contact:
    name: Red5 Support
    url: https://www.red5.net/contact/
  externalDocs:
    description: Red5 Pro Webhooks Overview
    url: https://www.red5.net/docs/red5-pro/users-guide/red5-pro-webhooks-overview/
defaultContentType: application/json
servers:
  customerEndpoint:
    host: '{webhookHost}'
    protocol: https
    description: >-
      The customer-operated HTTPS endpoint configured as
      `webhooks.endpoints.<N>.url`. Red5 POSTs to it; there is no Red5-operated host on
      this surface.
    variables:
      webhookHost:
        default: your-server.com
        description: Host of the customer's own webhook receiver.
channels:
  webhookReceiver:
    address: '/'
    title: Configured webhook endpoint
    description: >-
      A single configured endpoint receives every event that passes its category and
      event filters (`webhooks.endpoints.<N>.filters.categories`,
      `webhooks.endpoints.<N>.filters.events`, and role filters).
    messages:
      webhookEvent:
        $ref: '#/components/messages/WebhookEvent'
operations:
  receiveWebhookEvent:
    action: receive
    channel:
      $ref: '#/channels/webhookReceiver'
    summary: Red5 POSTs a webhook event to the configured endpoint.
    messages:
      - $ref: '#/channels/webhookReceiver/messages/webhookEvent'
components:
  messages:
    WebhookEvent:
      name: WebhookEvent
      title: Red5 Pro webhook event
      contentType: application/json
      payload:
        $ref: '#/components/schemas/WebhookPayload'
  schemas:
    WebhookPayload:
      type: object
      description: >-
        The documented webhook payload. Field set taken verbatim from the Webhook Data
        section of the Red5 Pro Webhooks Overview.
      properties:
        event:
          type: string
          description: The event name.
          enum:
            - connection-connect
            - connection-disconnect
            - stream-published
            - stream-unpublished
            - stream-subscribed
            - stream-unsubscribed
            - websocket-connect
            - websocket-disconnect
            - video-started
            - video-saved
            - thumb-created
          x-note: >-
            USER-category events carry a free-string event name chosen by the customer's
            own code (WebhookUtil.callUserWebhook) and are not part of this enum.
        guid:
          type: string
          description: Slash-bearing stream GUID, e.g. live/stream1.
          examples: ['live/stream1']
        username:
          type: string
        userAgent:
          type: string
        nodeRole:
          type: string
          description: Cluster role of the node that fired the event.
          examples: ['origin']
        capabilities:
          type: array
          items:
            type: string
          examples: [['publish']]
        clusterNodeType:
          type: string
          examples: ['TYPE_AUTO']
        timestamp:
          type: integer
          description: Epoch milliseconds.
        nodePublicIp:
          type: string
x-event-catalog:
  CONNECT:
    description: Client connects or disconnects.
    events:
      - {name: connection-connect, when: on connection}
      - {name: connection-disconnect, when: on disconnection}
  PUBLISH:
    description: A stream is published or unpublished. Fired by origin nodes by default.
    events:
      - {name: stream-published, when: on publish}
      - {name: stream-unpublished, when: on unpublish}
  SUBSCRIBE:
    description: A subscriber stream begins or ends. Fired by edge nodes by default.
    events:
      - {name: stream-subscribed, when: a new subscriber joins}
      - {name: stream-unsubscribed, when: a subscriber leaves}
  WEBSOCKET:
    description: WebSocket connects or disconnects.
    events:
      - {name: websocket-connect, when: on websocket connection}
      - {name: websocket-disconnect, when: on websocket disconnection}
  MEDIA:
    description: Video-related events.
    events:
      - {name: video-started, when: the first video packet is transmitted}
      - {name: video-saved, when: the CloudStoragePlugin completes an upload and reports back}
      - {name: thumb-created, when: thumbnails are enabled and a new thumbnail is created}
  USER:
    description: >-
      Custom events fired from the customer's own webapp code via
      WebhookUtil.callUserWebhook. The event name is a free string; there is no enum to
      extend, and USER events are NOT delivered under the default cluster-aware policy —
      the receiving endpoint must opt in with an explicit events filter.
    events: []
x-provenance:
  generated: '2026-09-04'
  method: derived
  source: >-
    https://www.red5.net/docs/red5-pro/users-guide/red5-pro-webhooks-overview/,
    https://www.red5.net/docs/red5-cloud/users-guide/red5-cloud-webhooks/,
    https://www.red5.net/docs/red5-pro/development/api/stream-manager-2.0/examples/stream-manager-2-web-hooks/
  note: >-
    Red5 publishes no AsyncAPI document. Every channel, event name, payload field and
    default-policy note above is transcribed from Red5's published webhook
    documentation; nothing is invented. Delivery semantics Red5 does not publish —
    retry policy, signing/verification, ordering guarantees — are absent here because
    they are absent there.

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/red5-webhooks-asyncapi"
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.