Captions divide into two jobs that look identical on screen and are completely different underneath. If the words already exist in the audio, the agent transcribes and times them for you. If the words exist only in your head — a hook line, a title card, a label that appears at four seconds — you supply them and place them yourself.
Both belong at the end of the pipeline. Text is burned into pixels, so captioning before the cut is final means re-rendering, and captioning before the aspect ratio is final means watching your own words get cropped off the edge of the frame.
The order to run these in
These jobs are cheap in the right sequence and expensive in the wrong one. This is the order that avoids re-rendering work you have already paid for.
1. Lock the cut first
Burned-in text is part of the picture. Every trim after captioning is a re-render, so finish the edit before a single word goes on.
2. Fix the aspect ratio before the text
Text placed at 16:9 and cropped to 9:16 loses its ends. Resize, then caption into the frame you are actually publishing.
3. Transcribe if the words are spoken
When the line already exists in the audio, let the agent transcribe and time it — hand-typed timings are the slowest possible way to do this.
How to do it →4. Place the words that were never spoken
Hooks, labels and title cards are authored text on a timeline, not transcription. That is the other half of this cluster.
How to do it →
Every job in this cluster
Each one names the real Versely agent tool that performs it, so you can see which jobs share a mechanism and which are genuinely different work.
Add Captions to a Video
Speech in, styled subtitles out — no manual timing.
add_veed_captionsAdd Subtitles Automatically
You upload the video. The words appear, timed to the voice.
add_veed_captionsAdd a Text Overlay to a Video
Your words, placed exactly where you want them.
add_video_captionsAdd Timed Text Overlays to a Video
Different words at different moments — you set the clock.
add_timestamped_captionsKeep Captions On-Brand Across Every Video
Say it once. Every clip after this one inherits it.
set_brand_kitAdd Text to Slideshow Images
Carousel copy, applied per slide or across the whole set.
add_text_overlayThe agent tools behind them
12 tools from Versely's real agent surface do all 6 of these jobs. Ask for the outcome in plain English and the agent picks the tool.
add_veed_captions
Add styled, auto-transcribed captions to a video using the VEED Subtitles model (fal.ai veed/subtitles). Burns aesthetic preset styles (Glass, Whisper, Fusion, Glide, etc.) — different from add_dynamic_captions, which is the word-level animated style. Use when the user wants polished social-ready captions with a chosen visual look, or asks for VEED captions specifically. Also offer this proactively as a finishing step after any video / movie / workflow run that produces video content. Two preset tiers: BASIC (1× credit cost, 21 presets — simple/plain/beans/corpo/etc.) and DYNAMIC (2× credit cost, 9 premium presets — glass/whisper/glide2/fusion/glide/terminal/handwritten/backdrop/backdrop2). Default to preset 'glass' for a modern look unless the user specifies a vibe. Supports 165 language codes for transcription (en-US, en-GB, es-ES, es-MX, fr-FR, de-DE, it-IT, pt-BR, ja-JP, ko-KR, zh, ar-SA, ru-RU, etc.).
list_caption_fonts
List all caption/overlay fonts from the app font registry (GET /fonts), grouped by category (sans-serif, serif, display, handwriting, monospace). Each entry has id, name, category, preview. Call this before setting font_id/font_family on caption tools so you never guess font names.
preview_caption_style
Render a SHORT sample (first few seconds) of a caption style on the user's OWN video — a cheap decision aid before full-captioning. Trims the first sample_seconds of video_url, then runs the matching caption path (dynamic / veed / static) on that short clip only. Use when the user is unsure which caption look they want: offer 1–2 styles to preview, then call this (do NOT auto-render every style). After they like a look, call add_dynamic_captions / add_veed_captions / add_video_captions on the FULL video. Fast and cheap vs full-captioning because the clip is short.
add_video_captions
Burn a fixed TEXT OVERLAY onto a standalone video — a hook line, headline, badge, CTA, quote or branded label that you supply. This is NOT a subtitle tool: it does not transcribe speech. For spoken-word subtitles use add_veed_captions. Call list_caption_fonts first when the user wants a specific font.
add_timestamped_captions
Burn TIMESTAMPED TEXT OVERLAYS onto a standalone video — you supply each line with its own `start_sec`/`end_sec`, so the text changes through the clip. NOT a subtitle tool: nothing is transcribed. For spoken-word subtitles use add_veed_captions.
set_brand_kit
Create or update the user's persistent brand kit (partial upsert — only the fields you pass are changed; omitted fields keep their current values). For colors and fonts objects, KEY-MERGE: provided keys override existing ones, absent keys are preserved (not a whole-object replace). Use when the user shares brand details (logo upload, 'our color is #FF5733', fonts, voice/tone, tagline, product shots, caption style, default aspect ratio) and wants them remembered for future content. Also OFFER this proactively when they describe brand details in conversation. After saving, the kit is auto-injected into context so subsequent generations/workflows apply it by default.
get_brand_kit
Fetch the user's full brand kit (colors, fonts, voice_tone, logo, product shots, caption style, default aspect ratio). Prefer the injected User Context brand block for routine reads; call this tool only when you need the complete/current kit after a write, or when the context block is missing fields you need.
clear_brand_kit_field
Clear a single field on the user's brand kit (set it to null). Use when the user says 'remove our logo', 'clear brand colors', etc. Does not delete the whole kit.
add_text_overlay
Add text overlays (captions, titles, quotes) to slideshow images. Use after creating a slideshow when the user wants text on the images. You can send 1 overlay to apply the same text/style to ALL images, or N overlays (matching image count) for different text per slide. The system auto-expands a single overlay to all images.
get_slideshow
MANDATORY TOOL for displaying a slideshow to the user. Calling this is the ONLY way the slideshow-card UI (with thumbnails) appears in the chat — describing the slideshow in text does NOT show the visual card. You MUST call this tool (not just describe in text) whenever the user asks to see, show, open, view, preview, display, pull up, or edit an existing slideshow — including phrases like 'show me my slideshow', 'show it to me', 'let me see it', 'pull up the last one', 'what's in my slideshow', 'the one I just made', 'add text to slide 2', 'edit the overlays'. Do NOT answer these requests from memory or conversation history. ALWAYS fetch fresh state with this tool. If slideshow_id is omitted, returns the user's most recently created slideshow. Also call this before add_text_overlay, convert_slideshow_to_video, remove_slideshow_slide, replace_slideshow_slide, or reorder_slideshow_slides when the user references an existing slideshow without giving you an id.
create_slideshow_caption_in_image
Create a slideshow where the caption is RENDERED INSIDE the image by an AI image model (text is baked into the picture, not stamped on top). Best when the user wants a single cohesive image — typography integrated with the scene — instead of a chat-style overlay. ASYNC: this tool RETURNS BEFORE the images are ready. It dispatches each slide to KIE (Nano Banana Pro by default, or GPT Image 2) and returns immediately with status='slideshow_generating' and a slideshow_id. Each slide completes via webhook over the next ~30–90 seconds. Tell the user 'your slideshow is being generated — ask to see it once it's ready' and use get_slideshow on the next turn to fetch the rendered images. Do NOT chain with create_slideshow, search_pinterest, image-gen tools, or add_text_overlay (that would double-render text).
convert_slideshow_to_video
Convert a slideshow into a video with transitions and optional audio. Use after creating a slideshow when user wants a video/reel version. The video is uploaded to cloud storage and the URL is returned.
What these jobs cost
Every job here bills in credits. These are the scenarios whose formulas govern the arithmetic.
What do captions cost across a month of clips?
multiplies one base render by a style tier, so an aesthetic choice doubles the bill
Free previews, one charge per exportWhat does editing a video cost if I keep changing it?
charges per finished export, so iteration is free and the count is the whole bill
Flat per callWhat does a batch of 100 AI product images cost?
charges one fixed price per call, so the image's size and shape are free
Questions about this cluster
Should captions be burned in or a separate file?+
Burned in, for anything going to a short-form feed. Sidecar subtitle files are ignored by most vertical players and by everyone watching with the sound off, which is most people. Burned-in text also survives re-uploads and reposts.
Why does captioning come after resizing?+
Because a crop cuts pixels, and burned-in captions are pixels. Caption a widescreen video and then convert it to vertical and you lose the start and end of every line — the most common re-render in the whole editing surface.
Can captions match a specific look?+
Yes. Versely ships a caption preset library with the fonts, weights and animations used by the styles you see on TikTok and Reels, and the agent can preview a style before it commits it to the render.
Make the material first
AI UGC Video Generator
UGC ads at the speed and price of a prompt.
AI Video Generator
Text-to-video, image-to-video, and story-to-video in one place.
Story to Video AI
Write it. Watch it. In minutes.
AI Video Editor
Upload the clip. Say what's wrong with it.
AI Slideshow Maker
Photos in. Scroll-stopping slideshow out.
Text to Image Generator
One prompt. Every image model. One studio.
The rest of the pipeline
Audio, Voice & Dubbing
The biggest cluster on the surface, and the easiest to do in the wrong order.
Aspect Ratio & Resize
Six jobs, one decision: what leaves the frame.
Trim & Cleanup
Do these before you pay to render anything.
Upscale & Extend
The only jobs that add something the file never had.
Merge & Assemble
Where the pieces stop being clips and start being a video.
Ask the agent for it in plain English
The all-in-one AI studio for creators. 60+ models for video, image, voice, music and lipsync in a single app.