Async jobs
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 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.