Brand-color captions: punch and tiktok-green skip design

Sume's docs say punch and tiktok-green read none of the design tokens. To change a caption color per request, use slam or a Hangul style. Token groups.

5 min readSume
All posts

If you want to change the caption color for one request, do not use punch or tiktok-green. The Sume docs say those two styles do not support design and render on a path that reads none of its tokens. Use slam for Latin text, or a Hangul style for Korean text, and set the color in design.colors. A standalone caption job costs $0.20 whichever style you use.

What design can change

A style is a set of design tokens, and design overrides some of them for one request. Sume merges each field over the value of the style, so one key changes one thing. The docs list five groups.

Design override groups, read 2026-10-08
GroupFields
colorsbase, active, stroke, accent, accent_deep, card (null shows no card)
typographybase_weight, active_weight, active_scale, font_size_ratio, safe_width_ratio, stroke_width_px
placementanchor_ratio, landscape_anchor_ratio (center of the line as a fraction of frame height)
phrasingmax_words, max_chars, pause_seconds
motionenter_seconds, exit_seconds, emphasis_in_seconds, emphasis_out_seconds

Which styles read it

The docs name two exceptions and give one working example. This table does not claim more than that.

Design support by style, from the docs (read 2026-10-08)
StyleReads design?Note
slamyes (the docs say a selected slam keeps its own gold tint, which design.colors.active replaces)Latin default
black-outlineyes (the docs example)Hangul default
punchnorenders on a path that reads none of these tokens
tiktok-greennorenders on a path that reads none of these tokens

Ask for a color, pay nothing for a typo

Colors must be hex, rgb() or rgba(), or transparent. Sume rejects other CSS syntax and does not put it into the render document. A number outside its documented range returns 400. The docs state the reason: an incorrect look fails at request time, and you do not pay for an incorrect render. So a name such as cyan is rejected before any money moves. Use #22D3EE.

curl -X POST https://api.sume.com/v1/video-captions \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: slam-brand-001" \
  -d '{
    "video_url": "https://media.sume.com/artifacts/example/clean.mp4",
    "style": "slam",
    "design": { "colors": { "active": "#22D3EE" } }
  }'

Where the line between presets and tokens falls

The docs describe design as a way to change the look of a style for one request without changing the style name. That is why the brand-color route is slam with design.colors.active, not a custom name. The reverse also holds: if your brand color is already close to the preset, punch and tiktok-green save you a request field, but they cannot be tuned afterwards. If a client later asks for a different emphasis color, you will need to switch the style, not just the token.

Phrasing is also a token group. phrasing.max_words, max_chars and pause_seconds set how many words appear at once, so a Latin style with a design override gives you control of both color and pace. The presets give you neither.

A decision rule

  • Need an exact brand color on Latin captions: slam plus design.colors.active.
  • Want the preset punch or tiktok-green look unchanged: use it as is, and know that no token changes it.
  • Want to compare looks without paying for a second transcription: use source_caption_id and restyle.
  • Korean text: pick a Hangul style, because Korean text on a Latin style returns caption_hangul_text_latin_style.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume