Hour One · AsyncAPI Specification

Hour One (MakeReals) Webhooks

Version 1.0.0

Outbound webhook notifications for video processing lifecycle. Hour One POSTs a signed JSON payload to your registered endpoint when a video finishes rendering or fails. Each request carries an x-hourone-signature header: an HMAC-SHA256 hex digest of the raw request body computed with the per-webhook signing secret.

View Spec View on GitHub CompanyVideoGenerative AIAI VideoMediaText to VideoAvatarsContent CreationAsyncAPIWebhooksEvents

Channels

videoEvents
The subscriber-supplied HTTPS endpoint registered via POST /webhooks.

Messages

VideoReady
Video ready
VideoFailed
Video failed

AsyncAPI Specification

Raw ↑
generated: '2026-07-19'
method: generated
source: https://hourone.gitbook.io/api-docs/webhooks.md
spec_type: AsyncAPI
x-note: >-
  Faithfully generated from Hour One's published webhook documentation (event
  names, payload model, and HMAC-SHA256 x-hourone-signature verification). No
  provider-published AsyncAPI document exists; the webhook contract itself is real.
asyncapi: 3.0.0
info:
  title: Hour One (MakeReals) Webhooks
  version: 1.0.0
  description: >-
    Outbound webhook notifications for video processing lifecycle. Hour One POSTs a
    signed JSON payload to your registered endpoint when a video finishes rendering
    or fails. Each request carries an x-hourone-signature header: an HMAC-SHA256 hex
    digest of the raw request body computed with the per-webhook signing secret.
defaultContentType: application/json
channels:
  videoEvents:
    address: '{subscriberUrl}'
    description: The subscriber-supplied HTTPS endpoint registered via POST /webhooks.
    parameters:
      subscriberUrl:
        description: The URL configured on the webhook resource.
    messages:
      videoReady:
        $ref: '#/components/messages/VideoReady'
      videoFailed:
        $ref: '#/components/messages/VideoFailed'
operations:
  receiveVideoReady:
    action: receive
    channel:
      $ref: '#/channels/videoEvents'
    messages:
    - $ref: '#/channels/videoEvents/messages/videoReady'
  receiveVideoFailed:
    action: receive
    channel:
      $ref: '#/channels/videoEvents'
    messages:
    - $ref: '#/channels/videoEvents/messages/videoFailed'
components:
  messages:
    VideoReady:
      name: video.ready
      title: Video ready
      contentType: application/json
      headers:
        type: object
        properties:
          x-hourone-signature:
            type: string
            description: HMAC-SHA256 hex digest of the raw body, keyed by the webhook signing secret.
      payload:
        $ref: '#/components/schemas/WebhookEvent'
    VideoFailed:
      name: video.failed
      title: Video failed
      contentType: application/json
      headers:
        type: object
        properties:
          x-hourone-signature:
            type: string
            description: HMAC-SHA256 hex digest of the raw body, keyed by the webhook signing secret.
      payload:
        $ref: '#/components/schemas/WebhookEvent'
  schemas:
    WebhookEvent:
      type: object
      required: [event_name, data]
      properties:
        event_name:
          type: string
          enum: [video.ready, video.failed]
        data:
          type: object
          properties:
            id:
              type: string
              description: The unique identifier for the video.
            req_id:
              type: string
              description: The request id associated with the video processing.
            draft_id:
              type: string
              description: The draft id related to the video, if applicable.
            status:
              type: string
              description: Current status of the video (e.g. ready, failed).