> ## Documentation Index
> Fetch the complete documentation index at: https://rendobar.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Keep the API key in an env var (RENDOBAR_API_KEY), never in chat or committed code.
> Job types change, so fetch the live catalog from GET https://api.rendobar.com/jobs/types rather than relying on memory.
> The full integration prompt for coding agents is at https://rendobar.com/prompts/integrate.md.

# Text, titles and subtitles

> Add text to a video as a title, a lower third, a running clock, a subtitles clip or a Lottie animation.

A text clip carries its own words, its own style and its own box. Three neighbouring clip kinds cover the jobs text is usually asked to do: a clock that counts, a subtitles clip that holds every line, and a Lottie animation exported by a designer.

A `text` asset renders a styled title. `style` holds the type: `font`, `size`, `weight`, `color`, `align`, a `stroke`, a `background` box, a `shadow`, and an `animate` entrance (`fade`, `slideUp`, `slideDown`, `slideLeft`, `slideRight`). `font` takes any Google Fonts family by name, or a family from your own file. See [Fonts](#fonts).

Where it sits is the clip's `transform`, the same field that places every other clip.

```json theme={null}
{
  "asset": {
    "type": "text",
    "text": "Coastal Escape",
    "style": {
      "font": "Inter",
      "size": 84,
      "weight": 800,
      "color": "#FFFFFF",
      "stroke": { "color": "#000000", "width": 6 },
      "animate": { "type": "slideUp", "duration": 0.7 }
    }
  },
  "transform": { "position": { "x": "50%", "y": "38%" } },
  "start": 0,
  "length": 3
}
```

Colours are hex: `#RGB`, `#RRGGBB`, or `#RRGGBBAA` with alpha.

## Keeping text readable

White text over bright footage disappears. Three fields fix it, in order of how much they change the look.

<video src="https://cdn.rendobar.com/compose/showcase/text-stroke/before.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-stroke/before.jpg" autoPlay loop muted playsInline controls />

<video src="https://cdn.rendobar.com/compose/showcase/text-stroke/after.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-stroke/after.jpg" autoPlay loop muted playsInline controls />

<video src="https://cdn.rendobar.com/compose/showcase/text-shadow/before.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-shadow/before.jpg" autoPlay loop muted playsInline controls />

<video src="https://cdn.rendobar.com/compose/showcase/text-shadow/after.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-shadow/after.jpg" autoPlay loop muted playsInline controls />

<video src="https://cdn.rendobar.com/compose/showcase/text-background/before.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-background/before.jpg" autoPlay loop muted playsInline controls />

<video src="https://cdn.rendobar.com/compose/showcase/text-background/after.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-background/after.jpg" autoPlay loop muted playsInline controls />

## Where the lines sit

<video src="https://cdn.rendobar.com/compose/showcase/text-align/before.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-align/before.jpg" autoPlay loop muted playsInline controls />

<video src="https://cdn.rendobar.com/compose/showcase/text-align/after.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-align/after.jpg" autoPlay loop muted playsInline controls />

## Arriving

<video src="https://cdn.rendobar.com/compose/showcase/text-animate/before.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-animate/before.jpg" autoPlay loop muted playsInline controls />

<video src="https://cdn.rendobar.com/compose/showcase/text-animate/after.mp4" poster="https://cdn.rendobar.com/compose/showcase/text-animate/after.jpg" autoPlay loop muted playsInline controls />

## A clock

A `timer` counts over the clip's own length, up or down, in the format you name.

```json theme={null}
{ "asset": { "type": "timer", "direction": "down", "format": "MM:SS", "style": { "font": "JetBrains Mono", "size": 96, "color": "#FFFFFF" } }, "start": 0, "length": 10 }
```

`format` is `SS`, `SS.S`, `SS.SS`, `MM:SS`, `MM:SS.SS` or `HH:MM:SS`. It takes the same `style` as text.

<video src="https://cdn.rendobar.com/compose/showcase/timer/after.mp4" poster="https://cdn.rendobar.com/compose/showcase/timer/after.jpg" autoPlay loop muted playsInline controls />

## Subtitles

One `subtitles` clip holds every line, either written in the timeline or read from an `.srt` or `.vtt` file. Times are seconds from the clip's start.

```json theme={null}
{ "asset": { "type": "subtitles", "cues": [
    { "start": 0, "end": 1.8, "text": "Subtitles live in the timeline." },
    { "start": 2, "end": 4, "text": "One clip, every line." }
  ], "reveal": "typewriter", "style": { "font": "Inter", "size": 44, "color": "#FFFFFF", "background": "#000000B0" } },
  "transform": { "position": { "x": "50%", "y": "88%" }, "anchor": "topLeft" } }
```

Or point it at a file: `{ "type": "subtitles", "src": "https://example.com/captions.srt" }`. For word-level captions burned from speech instead, see [animated captions](/docs/jobs/captions/animate).

<video src="https://cdn.rendobar.com/compose/showcase/subtitles/after.mp4" poster="https://cdn.rendobar.com/compose/showcase/subtitles/after.jpg" autoPlay loop muted playsInline controls />

## Lottie animations

An `animation` asset plays a Lottie `.json` file, the kind After Effects, Figma and LottieFiles export, with a transparent background. It plays once, for its own length, and fits the frame like an image.

```json theme={null}
{ "asset": { "type": "animation", "src": "https://example.com/logo-reveal.json" }, "transform": { "scale": 0.4, "position": { "x": "50%", "y": "50%" } } }
```

Export it self-contained: a file that pulls images or fonts from elsewhere is refused, because nothing reaches the renderer except through the checked download.

<video src="https://cdn.rendobar.com/compose/showcase/animation/after.mp4" poster="https://cdn.rendobar.com/compose/showcase/animation/after.jpg" autoPlay loop muted playsInline controls />

Fonts are their own page: [Fonts and languages](/docs/docs/jobs/compose/fonts). Every text field is in the [text reference](/docs/docs/jobs/compose/reference/text).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.