Move burned captions: design.placement.anchor_ratio on Sume
Sume caption styles have default heights. Send design.placement.anchor_ratio to move the line, as a fraction of frame height. Which styles accept it.

Send design: {"placement": {"anchor_ratio": 0.6}} with a caption request to put the center of the caption line at 60 percent of the frame height from the top. The Sume captions docs list anchor_ratio and landscape_anchor_ratio as the placement fields, defined as the center of the line as a fraction of frame height. The punch and tiktok-green styles do not support design, so use one of the other styles if you need to move text.
Defaults by style
The accepted range is 0.05 to 0.95 and the defaults are from the caption renderer source in the Sume repository, not from the docs page. Treat them as values that can change.
| Style | Default anchor_ratio |
|---|---|
| slam | 0.58 |
| black-outline | 0.64 |
| highlight | 0.70 |
| weight-shift, clip-wipe | 0.72 |
| pill-karaoke, editorial-emphasis | 0.74 |
| korean-ad | 0.76 |
Steps
- Find where your platform draws its own buttons, captions or labels on a vertical frame. Take that from the platform, since Sume does not know it.
- Grab a still with
video_framesorvideo_inspectand mark the clear band. - Add
design.placement.anchor_ratioto the caption body. Values outside the range get a400at request time, so a bad number does not cost a render. - Restyle with
source_caption_idinstead ofvideo_urlto try another ratio without a second transcription. The docs say the price does not change. - Look at the result frame and adjust.
A lower ratio moves the line up, since the ratio counts from the top. Moving up from 0.74 to 0.6 lifts the line by 14 percent of frame height, which is about 269 pixels on a 1920-pixel-tall vertical.
Landscape and vertical
anchor_ratio is for portrait frames. For landscape frames use landscape_anchor_ratio, which is the same idea for a wide picture. Both are fractions of frame height measured from the top. If you send a vertical clip you only need the first.
Change one thing at a time. If you also change the style, the font, or the phrasing, you cannot tell which change moved the text. The design object merges over the style, so a request with only placement keeps every other style value.
Keep a note of the ratio that worked for each platform and style, so the next batch starts from a known value instead of a guess.
Budget and detail
To work out a ratio from a pixel position, divide the pixel height of the line centre by the frame height. A line centred 1300 pixels from the top of a 1920-pixel frame is 1300 / 1920, or about 0.677. Round to two decimals and send 0.68. Check the range, 0.05 to 0.95, before you send, since a value outside it returns a 400 at request time rather than a bad render.
What Sume does not do
Sume does not carry platform safe-zone maps, and it does not move captions automatically when a label appears. The number is yours to choose.
Sources
Related posts
More in Media tools
- Music bed shorter than the voiceover: loop, fade and duck in Timeline
If a Music 1.0 bed ends before your narration, Sume's Timeline soundtrack can loop it, fade out up to 10 seconds and duck 0 to 20 dB under speech. The settings.
- Music API duration_seconds rejected: set track length in the prompt
Sume Music 1.0 and the Music Router reject duration and duration_seconds. Put the length in the prompt (a 2-minute track) and use time markers.
- Music from a still: image_url conditioning costs the same $0.125
Sume Music accepts an optional public HTTPS image_url as conditioning. The price stays a fixed $0.125 whether or not you send the image.
- Music from a still: image_url conditioning, still $0.125
The Music Router accepts an optional public HTTPS image_url to condition the track on a still. Request example, keeping a score consistent, fixed price.
Written by Sume