Wall-of-text Format for a sale announcement, typed output

Call Sume's wall-of-text Format for a kinetic-type sale clip and bind an output_schema so the video URL lands in your own JSON shape.

5 min readSume
All posts

What it makes

sume-wall-of-text makes a text-led vertical ad. Its catalog description reads "Create a finished Fastlane wall-of-text Blitz from brand DNA", for a wall of text, kinetic type or a Fastlane text-led ad. A sale announcement is the natural fit: the offer, the dates and one line of urgency, set as type, with no actor to cast.

Black Friday 2026 is Friday, November 27 and Cyber Monday is Monday, November 30, so a three-line text ad can announce the window, the extension and the last call. Put those lines in instruction, and put your brand colours, name and URL in input.

Bind the result to your own shape

A completed run hands you media plus a paragraph of text by default. If you write the result straight into a database, bind a JSON Schema with output_schema and the receipt's output comes back in that shape. SumeMediaFile# is the reference for a media file object that the run fills with a durable media.sume.com URL.

curl -sS -X POST "https://api.sume.com/v1/formats/sume/sume-wall-of-text/runs" \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: bf-text-ad-01" \
  -d '{
    "instruction": "Three beats of kinetic type: Black Friday starts Nov 27, 25% off, ends Cyber Monday. 9:16.",
    "input": { "brand": "Trail Mug", "url": "https://shop.example.com" },
    "output_schema": {
      "name": "acme/text-ad/v1",
      "strict": true,
      "schema": {
        "type": "object",
        "additionalProperties": false,
        "required": ["ad_video"],
        "properties": { "ad_video": { "$ref": "SumeMediaFile#" } }
      }
    },
    "primary_output_key": "ad_video",
    "generation_spend_cap_usd": 30
  }'

Read filled_by before you count it delivered

The receipt says how your object was produced. Read it before you treat a run as delivered, especially if you score runs automatically.

How an output_schema is filled, from the structured output docs
filled_byMeaningWhat to expect
agentThe run called a tool with your schema as its argument shapePreferred; the run could see your input and instruction
projectionA separate pass built the object from the run's media and closing textYour input is not visible there, so prose fields may be null

Design the schema around what the Format makes

Require only what the Format actually produces. A wall-of-text ad makes a video, so a schema that demands a thumbnail image or a transcript will fail on the projection path every time, silently, until you read output_error. A schema outside the supported strict subset is rejected up front with 400 output_schema_invalid, nothing runs and nothing is charged.

Keep your own ids out of the schema. They do not round-trip on the projection path, so key them to run.id or to the Idempotency-Key you sent. When the run finishes, primary_output_url is the single URL to show, and TikTok's in-feed page accepts vertical 9:16 non-Spark video at 540 x 960 px or larger, up to 10 minutes and 500 MB (read 2026-10-03).

Sources

Related posts

More in Formats

All Formats posts

Written by Sume