Burn an 'AI-generated' disclosure line into a clip with caption cues
YouTube asks creators to disclose realistic AI content. Add an authored on-screen line with Sume caption cues, no speech-to-text, that travels with the file.

Platform labels are one layer, and each platform sets its own rules. A burned-in line is another, and it travels with the file if it is reposted. YouTube's disclosure page says labels appear in the player or in the description. A line in the frame does not replace that label; it adds to it.
Cues, not speech
The video captions API takes cues (or segments) with text, start and end in seconds, and does no speech-to-text with them. That is also the path for silent clips. You can send only one of script_text, words, cues, and segments. A job reserves $0.20, priced for videos of at most 60 seconds.
| Field | Use |
|---|---|
| cues[].text | The line, such as AI-generated scene |
| cues[].start | Seconds from the start |
| cues[].end | Seconds, after start |
| style | black-outline for Korean text, slam for Latin |
Request
import json, os, urllib.request
body = {
"video_url": "https://media.sume.com/artifacts/example/final.mp4",
"style": "slam",
"cues": [{"text": "AI-generated scene", "start": 0.0, "end": 3.0}],
}
req = urllib.request.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": "disclosure-line-001",
},
method="POST",
)
print(urllib.request.urlopen(req).read().decode())Mind placement
Check the line at phone size and away from the sticker area of the app. design.placement.anchor_ratio moves a line as a fraction of frame height, for styles that support design.
Sources
Related posts
More in Developers
- Burn captions from TTS word timings: no second transcription
Ask Sume TTS for word timings, group them into phrases and send them as caption cues. The caption job skips speech-to-text and still costs $0.20.
- Callback or polling for Omni 4K jobs on the Sume video API
Use callback_url on /v1/videos or mode webhook on the Video Router for Omni 4K batches: one signed request per job, not repeated polls. Checks included.
- Can I put my Sume API key in the MCP server URL? No, use a header
Do not put a Sume key in the MCP URL. The MCP auth spec bans tokens in the query string. Send a Bearer or x-api-key header, or use OAuth, in each client.
- Cancel a video chain midway: 409 job_generation_already_started
Cancel works only before generation starts. In a render, trim and captions chain, cancel queued jobs, let started jobs finish, and stop submitting steps.
Written by Sume