Korean captions: slam returns 400, so use korean-ad with language ko

Latin caption styles have no Hangul glyphs, so Korean text on slam, punch or tiktok-green returns 400 caption_hangul_text_latin_style. Use korean-ad.

4 min readSume
All posts

Korean text sent to slam, punch or tiktok-green returns 400 caption_hangul_text_latin_style. Sume refuses rather than switching the style, because the alternative is a video full of tofu boxes at the same price. For Korean speech use style: "korean-ad" with language: "ko", or one of the Hangul identities.

Hangul styles

From the video-captions docs, read 2026-10-09.

Hangul caption identities
StyleLook
black-outlinewhite fill, thick black outline, mid-frame; safe default
korean-adad karaoke: weight shift plus accent on the spoken word
weight-shiftphrase cards, spoken word heavy
highlightaccent block behind the spoken word
pill-karaokedark pill, color follows the voice
clip-wipeleft-to-right wipe, clearest on small phones
editorial-emphasistwo-line card, last word large in a display face

Defaults and language

If you send no style, the caption text decides: Korean resolves to black-outline, Latin to slam. language is only a speech-to-text hint (ko, en); it never selects the style or the font. korean-ad is not the default for Korean, so name it if you want the ad look.

curl -X POST https://api.sume.com/v1/video-captions \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: ko-ad-001" \
  -d '{"video_url":"https://media.sume.com/artifacts/example/talk.mp4","style":"korean-ad","language":"ko"}'

Fonts

font is optional and only for Hangul styles; sending a Hangul face with a Latin style returns caption_font_requires_hangul_style. Pretendard is the face for korean-ad, weight-shift, highlight, pill-karaoke and editorial-emphasis; Do Hyeon is for black-outline and clip-wipe. The weight-travel styles animate the wght axis, which only Pretendard has.

Cost

The standalone caption job is $0.20 for clips up to 60 s under the current estimate. A wrong style fails at request time with a 400, so you do not pay for it.

Handling the 400 in a pipeline

Treat caption_hangul_text_latin_style as a routing signal. If your pipeline sends mixed-language copy, detect Hangul in the transcript or script, choose korean-ad or black-outline before the request, and keep slam for Latin text. The two default styles carry a gold tint on the spoken word when you select them by name; with no style the render keeps the fill color. design.colors.active sets the tint in either case. Every media job follows the same lifecycle: submit with an Idempotency-Key, receive a job, poll GET /v1/jobs/:id/status until it is ready, then read GET /v1/jobs/:id/result. A retry with the same key does not queue a second job, so a network error during submit never doubles a charge.

Sources

Related posts

More in Media tools

All Media tools posts

Written by Sume