Put customer review text in a Format's input, not instruction
For UGC testimonial variants, send review text in a Format run's input object, not instruction. Input is carried whole as a file the agent treats as data.

Put the review text, product fields and any other data you pulled from outside in the run's input object, and keep instruction for your own short task. input is written whole 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 only the first roughly 4,000 of its 8,000 accepted characters are carried.
For testing UGC testimonials at scale, that split is the whole design: the same short instruction on every item, and a different input per item.
What the API accepts and carries
input is a JSON object with no published field list: you choose the shape and the Format's recipe reads the keys it knows. The API checks only the type, the property count, the size and the media references.
The catalog has a Format built for this look, sume-close-camera-ugc, callable at the reserved sume handle by any key with formats:write. Read it first with GET /v1/formats/sume/sume-close-camera-ugc to see its description and io profile.
| Check | Rule |
|---|---|
| Type | A JSON object; arrays, strings and numbers are refused |
| Top-level keys | At most 64; nested keys are not counted |
| Size | At most 2 MiB (2097152 bytes) compact |
| Media URLs at any depth | Share the run's budget of 30 in total, at most 30 images, 10 videos and 10 audio |
| instruction | 8000 characters accepted, about the first 4000 carried |
A trust boundary, not a sandbox
Review text is exactly the kind of data you should not concatenate into instruction. Putting it in input tells the agent it is data. That is a trust boundary, not a sandbox: runs are spend-capped, so a hostile payload's blast radius is bounded by the cap, but do not pass raw untrusted text through on purpose.
Also keep identifiers on your side. input does not reach the structured output, so a review id you sent cannot be echoed back unless the run repeats it. Key results by the run id or by your Idempotency-Key.
Queue the variants
A bulk request takes 1 to 100 items, each the same body as a single run, so every variant carries its own input. Mint one Idempotency-Key per batch and cap each item. The sample queues two testimonials with a window of two.
When it finishes, branch on counts.failed before calling the batch done: queue completed only means every item is terminal. Read each child's receipt at /v1/format-runs/{run_id} for the media.
curl -sS -X POST "https://api.sume.com/v1/formats/sume/sume-close-camera-ugc/bulk-runs" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"concurrency": 2,
"items": [
{ "instruction": "Make a 9:16 testimonial clip from this review.",
"input": { "review": "Arrived fast and the fit is perfect.", "product": "linen shirt" },
"generation_spend_cap_usd": 8 },
{ "instruction": "Make a 9:16 testimonial clip from this review.",
"input": { "review": "Washed ten times and it still looks new.", "product": "linen shirt" },
"generation_spend_cap_usd": 8 }
]
}'
Sources
Related posts
More in Use cases
- UGC-style AI video ad: model checklist for 9:16, audio, product photo
For a vertical UGC-style ad, check four things on the model: 9:16, audio, a first-frame or reference photo, and the clip length. Sume rows that pass.
- UK AI ad disclosure: no blanket rule, two CAP questions to ask
The ASA says the UK has no blanket rule to disclose AI in ads, and gives two questions. How to run them on a Sume video: stills, transcript, a human sign-off.
- Unity Ads video specs: 60 s, H.264 MP4, 100 MB cap
Unity's user acquisition docs set video at 60 seconds or less, H.264 in MP4, 16:9 or 9:16, 100 MB max, and an end card. What Sume's trim step can and cannot do.
- Upload AI-made sound to Freesound or Pixabay: tags and labels
Freesound allows generative AI sounds with a GenAI tag and the model named; Pixabay wants an AI-generated checkbox. How to record the model from a Sume job.
Written by Sume