Make Iterator and Array aggregator: build a Sume bulk items array
In Make, an Iterator splits an array into bundles and an Array aggregator joins them. Use the pair to turn sheet rows into a Sume bulk items array.

How do I turn spreadsheet rows into one Sume bulk request in Make?
A Sume bulk run wants a single JSON body with an items array of up to 100 entries, each shaped like one run. A spreadsheet module in Make returns one bundle per row. You need to go from many bundles to one array, which is what an aggregator does.
Make's help describes the Array aggregator as accumulating all the bundles it receives and outputting a single bundle with an array containing one item per accumulated bundle. The source module is usually an iterator or a search module. Its counterpart, the Iterator, converts an array into a series of bundles, each array item output as a separate bundle (both read 2026-10-04).
What does the scenario look like?
- A search or list-rows module returns the spreadsheet rows, one bundle each.
- An Array aggregator collects them into one array, with the source module set to that rows module.
- A JSON module builds the final body from that array. Make's help says nested collection items are hard to select inside the aggregated fields, and suggests Create JSON after the aggregator with a target structure type.
- An HTTP request module sends the body to
POST /v1/formats/{handle}/{slug}/bulk-runswith your API key and anIdempotency-Key.
What must the final body contain?
Each element needs an input object. Add concurrency between 1 and 16 beside items. If the sheet has more than 100 rows, filter the search to a range, for example rows 1 to 100, and run the scenario once per chunk; a body with 101 items is refused.
Sume's bulk queue has no webhook of its own. If you want a callback, put communication.webhook_url on each item.
{
"concurrency": 4,
"items": [
{"input": {"sku": "M-1", "language": "en"}},
{"input": {"sku": "M-2", "language": "en"}}
]
}
What should I check before turning it on?
Run the scenario once with two rows and read the queue at GET /v1/format-run-queues/{id}. The aggregator's output shape is the usual failure point, so confirm the HTTP module's body really is the object above, not an array of arrays.
Sources
Related posts
More in Formats
- A gift portrait for your store homepage: model product portrait Format
The sume-model-product-portrait Format returns one finished still of a person with your product. Use it for a homepage hero, not for a motion ad.
- November 1 switch: restyle Halloween product stills into a fall set
After Halloween, run your stills through the sume-restyle Format in one bulk queue of up to 100 items and keep the product while changing the mood.
- Pilot 3 rows before a Sume bulk batch and estimate spend from receipts
Run three rows first, read usage.debited_usd_micros from each receipt, and scale up. Skip billable_amount_usd_micros: it leaves out the agent turn.
- Retry one scene and keep the voice track: Format previous_run_id
A new voice is not a reason to redo a whole video. Continue a finished Format run with previous_run_id and an instruction that touches one scene only.
Written by Sume