Docs
Outbound WebhooksContent Events

Content Events

Events for video metadata, captions, chapters, CTAs, and collections.

These events fire when video content, its metadata, or library structure changes. For the envelope format, shared headers, and retry policy, see Outbound Webhooks.

Examples reuse the following placeholders throughout this page: organization_id11111111-1111-1111-1111-111111111111, video id → 00000000-0000-4000-8000-00000000aa01.


video.updated

When it fires. The video's title or description was saved via the API (PATCH /videos/:id). The payload merges the standard webhookVideoData fields with description when that field is set on the resource.

{
  "id": "evt_e1f2a3b4-c5d6-4789-e012-345678901234",
  "type": "video.updated",
  "created_at": "2026-05-09T21:10:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": {
      "id": "00000000-0000-4000-8000-00000000aa01",
      "external_id": "c3d7e9a1-2b4f-4c6d-8e0a-1f3b5d7c9e0a",
      "status": "complete",
      "title": "New title",
      "duration_ms": 125400,
      "width": 1920,
      "height": 1080,
      "collection_id": "22222222-2222-4222-8222-222222222222",
      "description": "Updated description text"
    }
  }
}
PathTypeDescription
data.videoobjectSee shared data.video.
data.video.descriptionstringOptional; present only when the field is not null.

video.unpublished

When it fires. The video is no longer publicly available. Sent alongside video.deleted when a video is soft-deleted.

{
  "id": "evt_f2a3b4c5-d6e7-4890-f123-456789012345",
  "type": "video.unpublished",
  "created_at": "2026-05-09T21:00:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": {
      "id": "00000000-0000-4000-8000-00000000aa01"
    }
  }
}
PathTypeDescription
data.video.idstringUUID of the video. No other fields are sent.

video.caption.added

When it fires. A caption track was stored after upload (POST /videos/:id/captions).

{
  "id": "evt_a3b4c5d6-e7f8-4901-a234-567890123456",
  "type": "video.caption.added",
  "created_at": "2026-05-09T21:15:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": { "id": "00000000-0000-4000-8000-00000000aa01" },
    "caption": {
      "id": "44444444-4444-4444-8444-444444444444",
      "language_code": "pt-BR",
      "label": "Português"
    }
  }
}
PathTypeDescription
data.video.idstringParent video UUID.
data.caption.idstringCaption row UUID.
data.caption.language_codestringBCP-47 language code (for example pt-BR, en).
data.caption.labelstringDisplay label for the track.

video.caption.deleted

When it fires. A caption track was removed (DELETE /videos/:id/captions/:captionId). The webhook is dispatched before the row is deleted from the database.

{
  "id": "evt_b4c5d6e7-f8a9-4012-b345-678901234567",
  "type": "video.caption.deleted",
  "created_at": "2026-05-09T21:16:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": { "id": "00000000-0000-4000-8000-00000000aa01" },
    "caption": {
      "id": "44444444-4444-4444-8444-444444444444",
      "language_code": "pt-BR"
    }
  }
}
PathTypeDescription
data.video.idstringParent video UUID.
data.caption.idstringCaption UUID.
data.caption.language_codestringLanguage code of the removed track.

video.chapter.created

When it fires. A chapter row was created. The POST /videos/:id/chapters endpoint replaces all chapters atomically: one webhook fires per created chapter.

{
  "id": "evt_c5d6e7f8-a9b0-4123-c456-789012345678",
  "type": "video.chapter.created",
  "created_at": "2026-05-09T21:20:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": { "id": "00000000-0000-4000-8000-00000000aa01" },
    "chapter": {
      "id": "55555555-5555-4555-8555-555555555555",
      "title": "Intro",
      "start_time_seconds": 30
    }
  }
}
PathTypeDescription
data.video.idstringParent video UUID.
data.chapter.idstringChapter UUID.
data.chapter.titlestringChapter title.
data.chapter.start_time_secondsnumberStart offset in seconds.

video.chapter.deleted

When it fires. A single chapter was removed (DELETE /videos/:id/chapters/:chapterId).

{
  "id": "evt_d6e7f8a9-b0c1-4234-d567-890123456789",
  "type": "video.chapter.deleted",
  "created_at": "2026-05-09T21:21:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": { "id": "00000000-0000-4000-8000-00000000aa01" },
    "chapter": { "id": "55555555-5555-4555-8555-555555555555" }
  }
}
PathTypeDescription
data.video.idstringParent video UUID.
data.chapter.idstringUUID of the removed chapter.

video.cta.created

When it fires. A CTA was created (POST /videos/:id/ctas).

{
  "id": "evt_e7f8a9b0-c1d2-4345-e678-901234567890",
  "type": "video.cta.created",
  "created_at": "2026-05-09T21:25:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": { "id": "00000000-0000-4000-8000-00000000aa01" },
    "cta": {
      "id": "66666666-6666-4666-8666-666666666666",
      "title": "Saiba mais"
    }
  }
}
PathTypeDescription
data.video.idstringParent video UUID.
data.cta.idstringCTA UUID.
data.cta.titlestringCTA title at creation.

video.cta.updated

When it fires. A CTA was updated (PUT /videos/:id/ctas/:ctaId).

{
  "id": "evt_f8a9b0c1-d2e3-4456-f789-012345678901",
  "type": "video.cta.updated",
  "created_at": "2026-05-09T21:26:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": { "id": "00000000-0000-4000-8000-00000000aa01" },
    "cta": {
      "id": "66666666-6666-4666-8666-666666666666",
      "title": "New CTA title",
      "is_active": true
    }
  }
}
PathTypeDescription
data.video.idstringParent video UUID.
data.cta.idstringCTA UUID.
data.cta.titlestringTitle after the update.
data.cta.is_activebooleanWhether the CTA is active after the update.

video.cta.deleted

When it fires. A CTA was deleted (DELETE /videos/:id/ctas/:ctaId).

{
  "id": "evt_a9b0c1d2-e3f4-4567-a890-123456789012",
  "type": "video.cta.deleted",
  "created_at": "2026-05-09T21:27:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": { "id": "00000000-0000-4000-8000-00000000aa01" },
    "cta": { "id": "66666666-6666-4666-8666-666666666666" }
  }
}
PathTypeDescription
data.video.idstringParent video UUID.
data.cta.idstringUUID of the deleted CTA.

video.collection.changed

When it fires. A video was moved to another collection (POST /videos/move-to-collection). Batch moves emit one event per video.

{
  "id": "evt_b0c1d2e3-f4a5-4678-b901-234567890123",
  "type": "video.collection.changed",
  "created_at": "2026-05-09T21:30:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "video": { "id": "00000000-0000-4000-8000-00000000aa01" },
    "collection": {
      "id": "22222222-2222-4222-8222-222222222222",
      "name": "Marketing"
    }
  }
}
PathTypeDescription
data.video.idstringVideo UUID.
data.collection.idstringUUID of the destination collection.
data.collection.namestringCollection name at the time of the move.

collection.created

When it fires. A collection was created via the API (POST /collections) or when the organization's default collection is auto-created on first use.

{
  "id": "evt_c1d2e3f4-a5b6-4789-c012-345678901234",
  "type": "collection.created",
  "created_at": "2026-05-09T21:35:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "collection": {
      "id": "77777777-7777-4777-8777-777777777777",
      "name": "Product launches"
    }
  }
}
PathTypeDescription
data.collection.idstringCollection UUID.
data.collection.namestringDisplay name.

collection.deleted

When it fires. A non-default collection was soft-deleted. Associated videos may be soft-deleted in the same transaction.

{
  "id": "evt_d2e3f4a5-b6c7-4890-d123-456789012345",
  "type": "collection.deleted",
  "created_at": "2026-05-09T21:40:00.000Z",
  "organization_id": "11111111-1111-1111-1111-111111111111",
  "data": {
    "collection": {
      "id": "77777777-7777-4777-8777-777777777777",
      "name": "Old folder"
    }
  }
}
PathTypeDescription
data.collection.idstringCollection UUID.
data.collection.namestringCollection name before deletion.