12 sale plates from an MCP client: compose, then one batch wait
Fan out 12 Sume timeline_compose jobs for holiday sale plates, then wait for all with one jobs_wait on job_ids, and read the results in one call.

To make 12 sale plates from an MCP client, call timeline_compose 12 times, each with its own idempotency_key, then call jobs_wait once with job_ids holding all 12 ids. jobs_wait takes 1 to 20 ids, so a dozen fits in one call, and wait_for defaults to all. Add include_results: true to read the answers in the same reply.
The batch wait is in Jobs and results and the tool flow in MCP tools and gates (read 2026-10-06). Each compose is $0.02 flat, so 12 plates cost $0.24.
What goes in each compose call?
The payload is the body of POST /v1/timeline-1.0/compose: an operation, an image.url and a video.url. Give each call its own idempotency_key, such as the plate name, so a retry cannot double-bill.
{
"idempotency_key": "plate-day-03",
"payload": {
"operation": "overlay",
"image": { "url": "https://media.sume.com/artifacts/artf_demo/plate-03.png" },
"video": { "url": "https://media.sume.com/artifacts/artf_demo/hero.mp4" },
"layout": { "position": "bottom", "width_ratio": 0.9 }
}
}How does the batch wait behave?
jobs_wait answers with object: job_wait_batch, and a status snapshot per id. A single call holds for at most 55 seconds, so if it ends with wait_slice_expired, call it again with the same ids.
| Field | Value |
|---|---|
| job_ids | 1 to 20 ids |
| wait_for | all (default) or any |
| include_results | true returns each completed result in results[] |
| results_omitted.job_ids | Ids whose result did not fit; read with one batch jobs_result |
What if one plate fails?
wait_for: "any" still reports each id, and the others keep running and billing. Read the failed one with jobs_result, fix the input, and submit that plate only, with a new key.
- An unknown or foreign-workspace id makes the whole wait call fail.
- Fixed-price tools check
max_spend_usdagainst the estimate when you pass it. - Put the finished plates into
timeline_createslots after the wait.
Sources
Related posts
More in Use cases
- Two-camera podcast clip for Shorts: alternate angles with source_in
Cut between two camera files against one audio spine in Timeline 1.0: equal on-spine starts and source_in keep both angles in sync. Python builder included.
- Transcribing a 2-hour call on Sume: 12 STT chunks, about $1.20
Sume STT takes 10 minutes per job at $0.01 a minute, so a 2-hour recording is 12 chunks and about $1.20 at list. How to cut, run, and re-stitch it.
- 2-minute AI explainer at 1080p: Veo 3.1 Lite $9.60, Standard $48
120 seconds of 1080p video costs $9.60 on Veo 3.1 Lite, $14.40 on Fast, $48 on Standard and $22.50 on Omni Flash on Sume. 4K totals included. Read 2026-10-06.
- Two voices, one conversation: Sume TTS jobs joined by concat
Make a two-person dialogue file with Sume: one TTS job per line using two avatar voices, then one Timeline audio concat. Cost, code and the gap.
Written by Sume