Sume Format run image attachments: 30 images, 30 MB, 500 MB

A Sume Format run takes up to 30 images, 30 MB each and 500 MB per run, in JPEG, PNG, WebP, GIF, or AVIF. Here is what invalid_attachment means.

4 min readSume
All posts

A Sume Format run accepts up to 30 image attachments, each up to 30 MB, with 500 MB across the run, in JPEG, PNG, WebP, GIF, or AVIF. Break a limit and the call returns 400 invalid_attachment.

Attachments are images only. For other material, such as a document or a data table, put the content in the input object, or refer to media by URL there within the media budget.

The limits are generous for most product work. The common failure is not the count; it is a stray camera original that is far over 30 MB, or a format such as HEIC that is not on the list.

The limits

The Call a Format page sets the rules. The whole request body is capped at 4 MiB, and a larger one returns 413 payload_too_large. The Content-Type must be JSON, or the call returns 415. These limits interact: if attachments travel inside the JSON body, a handful of large photos can hit the 4 MiB body limit long before the 500 MB per-run limit. When the per-run limit matters, send URLs instead of embedded data.

Media URLs inside input share their own budget: 30 files in total, at most 30 images, 10 videos, and 10 audio files.

Attachment and media limits, from the Sume docs (read 2026-10-10)
LimitValueError
Attached images30, 30 MB each400 invalid_attachment
Total attachment size500 MB per run400 invalid_attachment
FormatsJPEG, PNG, WebP, GIF, AVIF400 invalid_attachment
Media URLs in input30 files, 30 images, 10 videos, 10 audio400 invalid_attachment
Request body4 MiB413 payload_too_large
Content-TypeJSON only415

Choosing between attachments and input

Use attachments for reference photos you want the run to see, such as a product from several angles. Use input for structured facts and for media that you reference by URL. Input is written whole to a JSON file, up to 64 top-level keys and 2 MiB, and is treated as data.

A call must name at least one of instruction, input, previous_run_id, or attachments, or it returns 400.

A reasonable default is three to six images per run: a hero shot, two angles, and a detail. More images do not always help, and they raise the chance that one of them is the file that breaks the call.

Preparing images

Resize photos to what the video needs before sending. A product photo of 3000 pixels on a side is rarely better than 2000, and smaller files make retries cheap. Convert unusual formats first, because a format outside the five listed is refused. Keep the original in your own storage so a revision run can use it again.

For a bulk queue, every item is a full request, and a bad item fails the whole create with details.index naming it. Validate image counts and sizes in code before you submit so you find the problem early.

Log the byte size of every file you attach. When a call fails, the log shows at once whether it was the size, the count, or the type.

What a failure looks like

invalid_attachment is a 400 at create time, so no run exists and nothing is charged. Fix the input and send it again. Because the request never produced a run, the idempotency key is released and you can reuse it.

Sources

Related posts

More in Formats

All Formats posts

Written by Sume