point and a pixel dimensions box, exactly like image and video overlays, and fontSize is in the same artboard pixels as dimensions so text keeps its size relative to the frame.
Every styling field has a default taken from the editor, so text, startTimeMs and durationMs are usually all you need: Inter at 500 weight, white, center-aligned, no background, sized to 7.5% of the video’s shorter side, in a centered box 60% of the artboard wide and 25% tall. New text overlays start with a hard cut and appear in front; use update_text_overlay to change their transition or place them behind a cut-out presenter.
For a designed look, pass a presetId instead of styling by hand. Text presets are the tiles in the editor’s Text panel — Tella’s built-in styles (default:title, default:caption, default:label, …) and the ones the user saved — and a preset fills in the font, weight, width, color, size, alignment, background and background shape at once. Any of those fields sent alongside overrides the preset’s value, the same as picking a tile and then tweaking it.
A weight or width outside the chosen font’s own variable axis range is clamped when the video renders, the same way the editor clamps it.
fontFamily must be one of Tella’s catalog fonts — the same list the editor’s font picker offers, and the only families the renderer bundles: Archivo, Barlow, Caveat, DM Sans, Figtree, Inter, Lora, Merriweather, Montserrat, Nunito Sans, Open Sans, Oswald, Playfair Display, Poppins, Raleway, Roboto, Roboto Flex, Roboto Mono, Source Sans 3, Space Grotesk. Anything else is rejected with a 400 rather than silently rendering as Inter.
Reading is looser than writing: an overlay made before that catalog can report a different family it still renders with, so list_text_overlays may return a family you couldn’t set. Updating such an overlay’s text or timing works normally — the check only applies when you send fontFamily yourself.
All times are milliseconds on the clip’s playback timeline — the video as watched, with cuts applied. It is the same timeline as
get_transcript, thumbnails, and previews, so nothing needs converting. A start at or past the end of the clip is rejected with a 400.list_text_overlays
List the text overlays on a clip. Image and video overlays are listed separately bylist_overlays.
string
required
Video ID
string
required
Clip ID
add_text_overlay
Add a text overlay on top of a clip.string
required
Video ID
string
required
Clip ID
string
required
The text to display
integer
required
Start time in ms
integer
required
Duration in ms
string
A preset from
list_text_presets — default:<id> for a built-in style or a saved preset’s ID. Supplies every style field below; fields sent alongside override itenum<string>
One of the catalog fonts listed above. Defaults to Inter
number
Font size in artboard pixels. Defaults to 7.5% of the video’s shorter side
string
Hex color,
#RRGGBB or #RRGGBBAA. Defaults to whitenumber
Variable-font weight axis — 100 (thin) to 900 (black). Defaults to 500
number
Variable-font width axis, as a percentage — 100 is normal, 50 ultra-condensed, 150 extra-expanded. Defaults to 100
enum<string>
Horizontal alignment inside the text box —
left, center, or right. Defaults to centerobject
Background behind the text, in the same object shape as a clip background —
{ type: "solid", color }, with color as #RRGGBB or #RRGGBBAA. Defaults to transparentenum<string>
Background shape —
none, regular, or squircle. Defaults to noneobject
Top-left corner —
{xPct, yPct} (0-100), as a percentage of the video canvasobject
Text box size in artboard pixels —
{width, height}, both greater than 0update_text_overlay
Update an existing text overlay — its copy, font, text color, background, timing, position, size, transition, or depth. Only provided fields change.string
required
Video ID
string
required
Clip ID
string
required
Text overlay ID
string
New text
string
Restyle the overlay with a preset from
list_text_presets; its text, timing and placement stay. Style fields sent alongside override the preset’s valuesenum<string>
New font family, one of the catalog fonts listed above
number
New font size in artboard pixels
string
New hex color,
#RRGGBB or #RRGGBBAAnumber
New weight — 100 (thin) to 900 (black)
number
New width axis, as a percentage
enum<string>
New horizontal alignment inside the text box —
left, center, or rightobject
New background behind the text —
{ type: "solid", color }, with color as #RRGGBB or #RRGGBBAAenum<string>
New background shape —
none, regular, or squircleinteger
New start time in ms
integer
New duration in ms
object
New top-left —
{xPct, yPct} (0-100)object
New size in artboard pixels —
{width, height}, both greater than 0enum<string>
Intro and outro animation —
smooth fades the text in and out, while hard_cut makes it appear and disappear instantly.enum<string>
front paints the text over everything. behind_presenter places it behind the cut-out presenter but above the clip background and screen. Without a camera in the layout, the text stays in front.list_text_overlays and update_text_overlay return the current transition and depth for every text overlay.
remove_text_overlay
Remove a text overlay from a clip.string
required
Video ID
string
required
Clip ID
string
required
Text overlay ID
Text presets
A text preset is everything about a text overlay except its text, timing and placement. Itsstyle carries fontFamily, fontWeight, fontWidth, color, textAlign, background, backgroundShape and a fontSizeScale — the size relative to the editor’s default (7.5% of the canvas’s shorter side), so the same preset reads the same on every canvas. Adding an overlay with a preset resolves that scale to artboard pixels for the video it lands on.
list_text_presets
List Tella’s built-in text styles and the presets saved by the authenticated user. Each result has apresetId, name, scope (default or personal) and its style.
Pass a returned presetId to add_text_overlay, update_text_overlay, or the same operations in apply_video_edits.
save_text_preset
Save a personal text preset, like the editor’s “Save style” on a text overlay. The style starts from an existing text overlay whenvideoId and textOverlayId are given — which keeps a custom font and reads the size relative to that video’s canvas — else from the editor’s default text look. Every style field passed alongside overrides it. The preset then shows up in list_text_presets and in the editor’s Text panel for the same user.
string
required
Preset name, as shown in the editor
string
Video holding the text overlay to copy the style from. Goes together with
textOverlayIdstring
Text overlay to copy the style from. Goes together with
videoIdenum<string>
One of the catalog fonts listed above
number
Variable-font weight axis — 100 (thin) to 900 (black)
number
Variable-font width axis, as a percentage — 100 is normal
string
Hex color,
#RRGGBB or #RRGGBBAAnumber
Font size relative to the editor’s default: 1 is the default, 0.6 a caption, 1.4 a headline. Defaults to 1, or to the copied overlay’s size
enum<string>
left, center, or rightobject
Background behind the text —
{ type: "solid", color }enum<string>
none, regular, or squircledelete_text_preset
Delete one of the authenticated user’s saved text presets. Built-indefault: presets can’t be deleted, and text overlays already styled with the preset keep their look.
string
required
A
personal preset ID from list_text_presets