How tasks work
Tasks follow the same async pattern as renders:- Submit a
POST /v1/tasks/{type}request - Receive
202 Acceptedwith atask_*job ID - Wait for the
task.completedwebhook (or pollGET /v1/tasks/{id}) - Download the artifact via
output.urlor/v1/tasks/{id}/download
Task types
| Task | Endpoint | Description |
|---|---|---|
| Remove Background | POST /v1/tasks/remove-background | AI background removal (image or video) |
| Gaze Redirect | POST /v1/tasks/gaze-redirect | Redirect eye contact towards camera |
| Super Resolution | POST /v1/tasks/super-resolution | AI upscaling (1–4×) |
| Transcribe | POST /v1/tasks/transcribe | Speech-to-text with word-level timestamps (AssemblyAI) |
Common fields
All task bodies share these optional fields:| Field | Type | Description |
|---|---|---|
metadata | object | Key-value pairs echoed in webhooks |
webhook_url | string | Per-request webhook override |
Idempotency
Task endpoints accept the sameIdempotency-Key header as renders.
Endpoints
| Method | Path | Description |
|---|---|---|
GET | /v1/tasks | List 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}/download | Redirect to signed artifact URL |

