YouTube Shorts series: pin one caption look for every episode
Shorts series run from 2026-09-23. Omit style and Sume picks one from the text. Pin style, font and design in one config so ten episodes look the same.

To keep every episode of a YouTube Shorts series looking the same, send the same style and design object on every Sume caption call, and never rely on the default. If you omit style, Sume chooses one from the caption text: slam for Latin, black-outline for Korean. A bilingual season would then change look between episodes without a single line of your code changing. Keep one config, and send it with every request.
The reason to care now is that YouTube Shorts series (seasons, episodes, custom thumbnails and sequential playback) started rolling out on 2026-09-23 on web, mobile and TV, according to the Orthotropy October update (read 2026-10-06). A series is watched in order, so a changing caption style from one episode to the next is easy to see.
What to pin
The video-captions endpoint takes a public HTTPS video_url, a style (slam, punch, tiktok-green, korean-ad, black-outline, weight-shift, highlight, pill-karaoke, clip-wipe or editorial-emphasis), an optional Hangul font and a design object that overrides colors, typography, placement, phrasing and motion for one request. language is only a hint for speech-to-text. It never picks the style or font. Two styles, punch and tiktok-green, ignore design entirely, so do not choose them if you need a tuned look.
One config, every episode
import json, os, urllib.request as u
LOOK = {"style": "black-outline",
"design": {"colors": {"active": "#22D3EE"}, "placement": {"anchor_ratio": 0.72},
"phrasing": {"max_words": 4}}}
EPISODES = ["https://example.com/s1e1.mp4", "https://example.com/s1e2.mp4"]
def submit(i, url):
body = {"video_url": url, **LOOK}
req = u.Request("https://api.sume.com/v1/video-captions", data=json.dumps(body).encode(),
headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"],
"Content-Type": "application/json", "Idempotency-Key": f"season1-caption-v1-{i}"})
return json.load(u.urlopen(req))["data"]
for i, url in enumerate(EPISODES, start=1):
job = submit(i, url)
print(f"episode {i}:", job["request_id"], job["status_url"])What can fail, and how to change the look later
Check the same few things on every episode. A number outside a documented range gives a 400 at request time, so a wrong look fails before it is paid for. Korean text on a Latin style returns 400 caption_hangul_text_latin_style; Hangul faces on a Latin style return 400 caption_font_requires_hangul_style. And when the spoken words are not the words you want shown, send script_text: Sume keeps the speech-to-text timings and aligns your text to them.
Changing the look later is a restyle, not a re-transcription. Send source_caption_id and the new style, and Sume reuses the source video and word timings. The price does not change, because a restyle is still a render. See restyle ad captions without a second transcription.
| Episodes (60 s or less) | Caption jobs | Cost at $0.20 per job | With one full restyle |
|---|---|---|---|
| 10 | 10 | $2.00 | $4.00 |
| 24 | 24 | $4.80 | $9.60 |
| 52 | 52 | $10.40 | $20.80 |
Budget
The $0.20 is per accepted standalone caption job for a video of at most 60 seconds, from the video-captions docs and the pricing page (read 2026-10-06). Check the live figure at GET /v1/catalog before you budget a large batch. If a season is also voiced by TTS, render the voice first and caption the finished clip; the order is covered in AI voiceover for Shorts.
A good habit for a season is a golden episode. Caption episode one, look at it on a phone, and fix the look in LOOK before you submit the other episodes. The mistakes that matter on a small screen are placement (the line sits behind the Shorts interface), line length (a phrase that wraps to three lines) and contrast (the accent color vanishes on a bright scene). Each is one field in design, and a restyle of a single episode costs the same $0.20 as a new job.
Keep the config in version control next to the episode list. When a season two starts, copy the file, change the accent color and nothing else, and the family resemblance is built in. If a later episode is in Korean, use the Hangul styles and a Hangul font in a second config rather than patching the first, because Hangul text on a Latin style is rejected.
Sources
Related posts
More in Media tools
- YouTube show banner and backdrop: one has the title, one must not
YouTube wants a 16:9 banner with the show title and a 16:9 backdrop without it. How to make both from one source image with Sume Ideogram 4.5.
- 10-minute video compose: Timeline costs $1.00, plan first
Timeline bills $0.10 per output minute, so a 10-minute video is $1.00 and a 30-minute one is $3.00. Limits: 1,800 seconds and 200 slots.
- How do I make a 180-second Shorts episode from 30-second Wan clips?
A 180-second episode is six 30-second Wan 3.0 clips joined by one Timeline render: $22.50 for video at 720p plus $0.30 for the render, in Sume prices.
- 2-second logo sting from Omni: generate 3 s, trim, $0.395 at 720p
Gemini Omni Flash 1.1 outputs 3 to 10 seconds. A 2-second sting on Sume is a 3-second clip at $0.375 (720p) plus a $0.02 video trim.
Written by Sume