Logo animation with sume-logo-motion-design: one call, a cap, a retry

Animate a logo with the sume-logo-motion-design Format: attach the PNG, set a spend cap, keep a stable idempotency key, and continue a run to fix one detail.

4 min readSume
All posts

The Sume catalog Format for a logo sting is sume-logo-motion-design. Call POST /v1/formats/sume/sume-logo-motion-design/runs, attach the logo as an input_image, say in instruction what motion you want, and cap the spend. The catalog page lists the slug without describing it, so read GET /v1/formats/sume/sume-logo-motion-design first for its description and io profile, and do not assume that a vector logo is accepted: the attachment docs name input_image as the only attachment type.

The call

Attachments are fetched at create time, and Sume checks the real type and size and copies the image into durable storage. A private or broken URL therefore fails the create, not the run. Use a PNG with a clean edge on a flat background.

curl -sS -X POST "https://api.sume.com/v1/formats/sume/sume-logo-motion-design/runs" \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: brand-7-logo-sting-v1" \
  -d '{
    "instruction": "Three-second logo reveal on a dark background. Letters assemble, one soft light sweep, hold on the final mark.",
    "attachments": [
      {"type": "input_image", "image_url": "https://example.com/brand/logo.png", "filename": "logo.png"}
    ],
    "generation_spend_cap_usd": 15
  }'

Fix one thing without starting over

When the motion is right and one detail is wrong, such as a hold that is too short, continue the run instead of making a fresh one. previous_run_id continues an earlier run of the same Format as one more turn of the same conversation. The body still needs at least one of instruction, input, previous_run_id or attachments, and the new instruction should be short and specific: "Same reveal, hold the final mark for two seconds." Use a new Idempotency-Key for the continuation. The same key with a changed body is a conflict and nothing runs.

If you only want to try a different style, start a fresh run. A continuation carries the earlier turn with it, which helps for a small change and hurts for a new direction.

Keys, scopes and caps

The call needs a key with formats:write, and polling needs formats:read. Keys made before the Format API shipped do not carry those scopes, and you cannot add scopes to an existing key, so mint a new one. Service-account keys cannot create Format runs.

Settings for a logo sting run (Sume docs, read 2026-10-05)
SettingValue to sendWhat happens otherwise
generation_spend_cap_usdA number up to 500, for example 15Inherits the Format's cap, or $400 if it names none
Idempotency-KeyBrand id plus a versionA fresh uuid per call gives no replay protection
attachments[].typeinput_imageNo other attachment type exists
previous_run_idEarlier run id of this FormatA fresh start without it
communication.webhook_urlPublic HTTPS endpointYou poll the receipt instead

Delivering many brands

If you animate logos for a list of brands, create one bulk queue for the Format, with one item per logo, instead of a loop in your code. A bulk queue holds 1 to 100 items and a window of 1 to 16 runs in flight, and each item is an ordinary run with its own receipt. An item that names none of instruction, input, previous_run_id or attachments fails the whole create with 400 and the item's index, so validate the list before you send it.

Last, check the result against the brand sheet by eye. A logo is the one asset where a small letter change is a defect, and the catalog page makes no claim about letter fidelity. Keep the receipt of each approved sting next to the brand's file. If the brand changes its mark, that receipt tells you which run to continue and which logo file went in, so you do not rebuild the sting from memory. Review before you release, and keep a failed run's receipt as well, because it shows what was already spent.

Sources

Related posts

More in Formats

All Formats posts

Written by Sume