# Async jobs

> Video clips and reel renders run in the background. Here is how to start them, poll them and handle failures.

Video clips, reel animations and reel renders take from a few seconds to a few minutes, so they run in the background. The tool returns a job id right away; you poll `get_job_status` until the job finishes.

| Tool | Returns | Poll with |
|---|---|---|
| `generate_video_from_image` | `{ taskUUID, status: "pending" }` | `get_job_status({ jobId: taskUUID, jobType: "video" })` |
| `animate_reel_shot` | `{ jobId, status: "pending" }` | `get_job_status({ jobId, jobType: "reelClip" })` |
| `prepare_reel_art` | `{ jobId, jobType: "reelArt", status: "queued" }` | `get_job_status({ jobId, jobType: "reelArt" })` |
| `render_reel` | `{ jobId, status: "pending" }` | `get_job_status({ jobId, jobType: "reel" })` |
| `resolve_reel_generators` (AI clip blocks, legacy) | video jobs per block | `jobType: "video"` |
| `run_brand_analysis` | `{ completed: boolean, … }` | `get_brand_analysis_status` (if completed=false) |

## Statuses

`get_job_status` returns `{ job: { status, … } }` with the job's full record, including the result URLs when it's done.

| Job type | Still running | Done | Failed |
|---|---|---|---|
| Video, reel, reelClip | `pending`, `processing` | `completed` | `failed`, `cancelled` |

## Polling

- Poll every **10–20 seconds**. Clips usually take one to three minutes; reel renders can take several.
- Status checks are free and count toward the [rate limit](/docs/errors/#rate-limits) of 60 calls a minute, so don't poll in a tight loop.
- Keep the job id. If your agent restarts, it can pick up where it left off.

## Failures and refunds

If a job fails or times out, its charge is refunded to the balance automatically. Video results are collected when you check the status, so always poll video jobs to the end: that's when the clip is saved to your library (and, for reel clip blocks, placed into the reel).

Finished results also appear in the FoodPerfect app's library, and in `list_generations`.
