FoodPerfect Docs

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.