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.

4 min readSume
All posts

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.

Batch wait fields (read 2026-10-06)
FieldValue
job_ids1 to 20 ids
wait_forall (default) or any
include_resultstrue returns each completed result in results[]
results_omitted.job_idsIds 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_usd against the estimate when you pass it.
  • Put the finished plates into timeline_create slots after the wait.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume