Is there a webhook when a Sume bulk Format queue finishes? No
No queue-level webhook on Sume bulk queues. Only per-item webhook_url, so poll the queue with backoff and read counts. A Python loop that handles 429 and 503.

No. The bulk runs docs state it twice: the queue has no webhook, and communication.webhook_url is per item. To know the whole batch is finished, poll the queue's status_url until status is completed, which means every item is terminal.
Two ways to be told
- Per item: put communication.webhook_url on each item for one callback per child run. You then count callbacks yourself.
- Per queue: poll GET /v1/format-run-queues/{id} and watch counts.
- Polling costs the read budget, separate from the create budget, so a slow loop does not starve your submits.
How often to poll
Each child can be minutes of work when the Format makes video, so polling every second buys nothing and costs rate limit. The docs recommend exponential backoff. A 429 or 503 during polling is transient: the queue keeps working, so back off and retry rather than marking the batch failed. If a poll returns 404 format_run_queue_not_found, the queue id is wrong or belongs to another owner.
| Response | Meaning | Action |
|---|---|---|
| 200 status running | Window still draining | Wait and poll again |
| 200 status completed | All items terminal | Check counts.failed and counts.canceled |
| 429 | Read budget spent | Honor retry-after |
| 503 | Sume-side outage; queue still draining | Back off, retry |
Poll loop
import json, os, time, urllib.error, urllib.request
queue_id = os.environ["QUEUE_ID"]
url = "https://api.sume.com/v1/format-run-queues/" + queue_id
headers = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
delay = 15
while True:
try:
req = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req) as r:
q = json.load(r)["data"]
if q["status"] == "completed":
print(q["counts"])
break
delay = 15
except urllib.error.HTTPError as e:
if e.code not in (429, 503):
raise
delay = min(delay * 2, 300)
time.sleep(delay)Sources
Related posts
More in Formats
- Magazine cover and model portrait Formats for beauty sellers
Two Sume Formats make 9:16 beauty images from a packshot: a magazine-cover campaign and a model product portrait. When each helps and what to verify.
- Mobile-app UGC Format: holiday app ads vs App Store previews
Use Sume's mobile-app UGC Format for creator-style app ads this holiday season, and check Apple's 15 to 30 second App Preview limits before reusing a clip.
- output_schema max_string_length: descriptions can spend 120,000
A Sume Format output_schema has a document-wide 120,000-character string budget, plus depth 10, 5,000 properties and 1,000 values per enum.
- List every run of a Sume Format in Python: the keyset cursor pager
GET /v1/formats/{handle}/{slug}/runs returns data, has_more and next_cursor. Pass next_cursor back until has_more is false; limit is 1 to 100.
Written by Sume