Feed scraped product copy to a Format run: input, not instruction
Putting a supplier's text into a Format's instruction lets it steer the run. Sume's input field is treated as data, with a 64-key and 2 MiB limit.

When a Q4 ad run reads product titles and descriptions from a feed, put that text in input, not in instruction. Sume's call docs say input is written to a file in the run's workspace and the agent is told it is caller-supplied data, not instructions, while instruction is composed into the prompt and wins over the Format body where they disagree. A supplier's line that says to ignore the brief is only data in input, though the docs call this a trust boundary and not a sandbox.
How do the two fields differ?
| Field | Limit | What happens to it |
|---|---|---|
| instruction | 8000 characters accepted; about 4000 carried | Composed into the prompt after the Format body |
| input | 64 top-level keys, 2 MiB | Written whole to a file; the agent is told it is data, not instructions |
| attachments | 30 images | Images the agent can see |
| Media URLs inside input | 30 total, 10 videos, 10 audio | Share the run's attachment budget |
| Request body | 4 MiB | 413 payload_too_large above it |
What does the safe version look like?
Keep your brief short and written by you, and pass the feed fields as an object. Name the keys the Format's brief reads. input does not reach the structured output, so keep your SKU on your side, keyed by the run data.id or by the Idempotency-Key.
curl -X POST https://api.sume.com/v1/formats/sume/sume-product-commercial/runs \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: feed-sku-1042" \
-d '{
"instruction": "9:16 holiday gift ad for the product described in the input file",
"input": {
"title": "Ceramic travel mug, 12 oz",
"description": "Keeps drinks hot for hours. Comes in 3 colours."
},
"generation_spend_cap_usd": 15
}'Why does the spend cap matter here?
The docs say the blast radius of a hostile payload is bounded by the run's spend cap. That is why every item in a feed-driven bulk run should carry its own generation_spend_cap_usd. A queue of 100 capped runs has a known worst case; a queue without caps defaults to the Format's cap or the platform default of $400.
Where should my own rules go?
Rules that must hold for every run, such as the aspect ratio, the tone or a banned claim, belong in the Format's body or your short instruction, because those are your words. Anything that varies per product and comes from outside your team belongs in input. If you maintain your own Format, put the rule there once and every item in a queue inherits it.
The run body is capped at 4 MiB, so a feed of 100 products should still be 100 items, each small, rather than one large run.
What are the limits?
- Separating data from instructions lowers the risk but does not remove it. Do not pass raw untrusted text through on purpose, and review the clips before they are published.
inputis a free-form object; Sume publishes no field list, so the Format reads only the keys it recognises.- A Format that expects a key and finds
{}has nothing to read. - The 4,000-character carry limit on
instructionmeans a long pasted description is cut, which is another reason to useinput.
Sources
Related posts
More in Developers
- script_run budgets: call, paid-call and timeout limits on MCP
script_run caps a Sume MCP program by timeout (5-55 s), max_calls and max_paid_calls, and stops with a named error code. Defaults, ceilings and what to do next.
- Seedance 2.5 first frame plus references in one request: 400
On Sume's Video Router, image_url plus reference_*_urls returns 400 for seedance-2.5. Pick image-to-video or reference-to-video; /v1/videos lets frames win.
- Seedance 2.5 references: input_references or reference_image_urls?
POST /v1/videos takes frame_images and input_references for seedance-2.5; the Video Router takes image_url and reference_*_urls. The wrong shape gets 400.
- Seedance 2.5 reference audio alone returns 400: add an image
On Sume's Video Router, reference_audio_urls with no reference image or video returns 400. Pair the audio with an image or clip, within 3 audio and 12 total.
Written by Sume