Skip to main content

How tasks work

Tasks follow the same async pattern as renders:
  1. Submit a POST /v1/tasks/{type} request
  2. Receive 202 Accepted with a task_* job ID
  3. Wait for the task.completed webhook (or poll GET /v1/tasks/{id})
  4. Download the artifact via output.url or /v1/tasks/{id}/download

Task types

TaskEndpointDescription
Remove BackgroundPOST /v1/tasks/remove-backgroundAI background removal (image or video)
Gaze RedirectPOST /v1/tasks/gaze-redirectRedirect eye contact towards camera
Super ResolutionPOST /v1/tasks/super-resolutionAI upscaling (1–4×)
TranscribePOST /v1/tasks/transcribeSpeech-to-text with word-level timestamps (AssemblyAI)

Common fields

All task bodies share these optional fields:
FieldTypeDescription
metadataobjectKey-value pairs echoed in webhooks
webhook_urlstringPer-request webhook override

Idempotency

Task endpoints accept the same Idempotency-Key header as renders.

Endpoints

MethodPathDescription
GET/v1/tasksList tasks (filterable by type/status)
GET/v1/tasks/{id}Get a single task
DELETE/v1/tasks/{id}Cancel a queued task
GET/v1/tasks/{id}/downloadRedirect to signed artifact URL