Skip to main content

Webhook Events

Subscribe to these events to receive notifications when operations complete.

Event types​

EventTrigger
video.analyzedVideo analysis completed successfully
video.translatedVideo translation completed successfully
subtitles.generatedSubtitles have been generated
voiceover.generatedVoiceover generation completed
article.generatedHelp article generated
export.completedVideo export completed successfully
export.failedVideo export failed
tool.completedA tool job (e.g. voiceover) completed
tool.failedA tool job failed
process.completedAll steps in a /process pipeline finished
process.failedA step in a /process pipeline failed

Event payload​

Every webhook delivery has this structure:

{
"event": "video.analyzed",
"data": {
"videoId": "vid_1708300000000_abc1234",
"jobId": "analysis_1708300000000_abc1234"
},
"webhookId": "wh_abc123"
}
FieldTypeDescription
eventstringThe event type
dataobjectEvent-specific payload (see below)
webhookIdstringThe webhook that triggered this delivery

Event-specific payloads​

video.analyzed​

{
"videoId": "vid_...",
"jobId": "analysis_..."
}

video.translated​

{
"videoId": "vid_...",
"jobId": "translation_...",
"language": "es"
}

subtitles.generated​

{
"videoId": "vid_...",
"jobId": "analysis_..."
}

voiceover.generated​

{
"videoId": "vid_...",
"jobId": "tool_..."
}

article.generated​

{
"videoId": "vid_...",
"title": "How to Configure Settings"
}

export.completed​

{
"jobId": "export_...",
"projectId": "vid_...",
"videoUrl": "https://...",
"srtUrl": "https://...",
"voiceoverUrl": "https://...",
"downloadUrls": {
"video": "https://...",
"srt": "https://...",
"voiceover": "https://..."
},
"downloadUrlsExpireAt": null
}

projectId is the video's id. voiceoverUrl is the combined voiceover audio track as a single MP3, present only when voiceover was generated for the video.

videoUrl, srtUrl and voiceoverUrl are the files' permanent addresses. Fetch the files from downloadUrls. In most workspaces they are the same addresses and downloadUrlsExpireAt is null. In a workspace with private media, they are signed links that work for 24 hours. After that, get a fresh one from Download Files.

export.failed​

{
"videoId": "vid_...",
"jobId": "export_...",
"error": "Encoding failed"
}

tool.completed​

Fired when a tool execution job completes successfully.

{
"jobId": "tool_...",
"toolType": "video-trimmer",
"result": {
"url": "https://...",
"mimeType": "video/mp4"
}
}
FieldTypeDescription
jobIdstringThe job ID
toolTypestringTool type identifier (e.g. video-trimmer, subtitle-translator)
resultobjectTool-specific output data

tool.failed​

Fired when a tool execution job fails.

{
"jobId": "tool_...",
"toolType": "video-trimmer",
"error": "Processing failed: invalid video format"
}
FieldTypeDescription
jobIdstringThe job ID
toolTypestringTool type identifier
errorstringError description

process.completed​

Fired when all steps in a one-shot /process pipeline finish successfully.

{
"jobId": "process_...",
"videoId": "vid_...",
"completedSteps": ["analysis", "voiceover", "helpArticle", "export", "translation"],
"exportedVideoUrl": "https://...",
"exportedSrtUrl": "https://...",
"exportedVoiceoverUrl": "https://..."
}
FieldTypeDescription
jobIdstringThe process job ID
videoIdstringThe created video ID
completedStepsstring[]List of completed pipeline steps
exportedVideoUrlstringURL of the exported video (if export was requested)
exportedSrtUrlstringURL of the SRT file (if export was requested)
exportedVoiceoverUrlstringURL of the combined voiceover MP3 (if voiceover was generated)

process.failed​

Fired when any step in the pipeline fails, halting the remaining steps.

{
"jobId": "process_...",
"videoId": "vid_...",
"failedStep": "export"
}
FieldTypeDescription
jobIdstringThe process job ID
videoIdstringThe created video ID
failedStepstringThe step that failed