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_id → 11111111-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"
}
}
}| Path | Type | Description |
|---|---|---|
data.video | object | See shared data.video. |
data.video.description | string | Optional; 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"
}
}
}| Path | Type | Description |
|---|---|---|
data.video.id | string | UUID 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"
}
}
}| Path | Type | Description |
|---|---|---|
data.video.id | string | Parent video UUID. |
data.caption.id | string | Caption row UUID. |
data.caption.language_code | string | BCP-47 language code (for example pt-BR, en). |
data.caption.label | string | Display 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"
}
}
}| Path | Type | Description |
|---|---|---|
data.video.id | string | Parent video UUID. |
data.caption.id | string | Caption UUID. |
data.caption.language_code | string | Language 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
}
}
}| Path | Type | Description |
|---|---|---|
data.video.id | string | Parent video UUID. |
data.chapter.id | string | Chapter UUID. |
data.chapter.title | string | Chapter title. |
data.chapter.start_time_seconds | number | Start 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" }
}
}| Path | Type | Description |
|---|---|---|
data.video.id | string | Parent video UUID. |
data.chapter.id | string | UUID 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"
}
}
}| Path | Type | Description |
|---|---|---|
data.video.id | string | Parent video UUID. |
data.cta.id | string | CTA UUID. |
data.cta.title | string | CTA 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
}
}
}| Path | Type | Description |
|---|---|---|
data.video.id | string | Parent video UUID. |
data.cta.id | string | CTA UUID. |
data.cta.title | string | Title after the update. |
data.cta.is_active | boolean | Whether 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" }
}
}| Path | Type | Description |
|---|---|---|
data.video.id | string | Parent video UUID. |
data.cta.id | string | UUID 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"
}
}
}| Path | Type | Description |
|---|---|---|
data.video.id | string | Video UUID. |
data.collection.id | string | UUID of the destination collection. |
data.collection.name | string | Collection 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"
}
}
}| Path | Type | Description |
|---|---|---|
data.collection.id | string | Collection UUID. |
data.collection.name | string | Display 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"
}
}
}| Path | Type | Description |
|---|---|---|
data.collection.id | string | Collection UUID. |
data.collection.name | string | Collection name before deletion. |