> ## 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.

# Picture effects

> Add colour grades, looks, stylised filters and layer effects to a clip or a whole track, with keyframes on any number.

Effects are one ordered list. The same list sits on a clip, on a track, or on the whole timeline, and it runs in the order you write it.

```json theme={null}
{
  "asset": { "type": "video", "src": "https://cdn.rendobar.com/assets/examples/sea.mp4" },
  "start": 0,
  "length": 3,
  "effects": [
    { "type": "color", "saturation": 1.2, "temperature": 6800 },
    { "type": "vignette" }
  ]
}
```

On a **track**, the list covers every clip on it. On the **timeline**, it covers the finished video, which is where one grade for the whole edit belongs.

```json theme={null}
"timeline": {
  "effects": [{ "type": "look", "name": "muted" }],
  "tracks": [
    { "effects": [{ "type": "grain" }], "clips": [{ "asset": { "type": "video", "src": "https://cdn.rendobar.com/assets/examples/sea.mp4" } }] }
  ]
}
```

Every entry takes an optional `start` and `length`, in seconds or as a percent of what it sits on, so an effect can run for part of a clip. Numeric parameters take keyframes, so they can move while it runs.

```json theme={null}
{ "type": "blur", "radius": [{ "time": "0%", "value": 14, "easing": "easeOutCubic" }, { "time": 1, "value": 0 }] }
```

There are 34 effects, for picture and for sound, each with its own parameters in real units. The full list, with a rendered before and after for each one, is the [effects reference](https://rendobar.com/compose/effects/). The groups:

| Group | Examples |
| - | - |
| Colour and looks | `color`, `look`, `lut`, `denoise`, `glow`, `grain`, `vignette`, `sharpen`, `blur` |
| Stylise | `shake`, `glitch`, `mosaic`, `posterize`, `rgbShift`, `scanLines`, `sketch`, `trails` |
| Layers and masking | `chromaKey`, `mask`, `blurRegion`, `outline`, `dropShadow` |
| Sound | `eq`, `compressor`, `limiter`, `gate`, `highPass`, `lowPass`, `loudness`, `pitch`, `echo`, `reverb`, `voiceDenoise` |
| Sound made visible | `visualizer` |

Two of them read a file, which is fetched and checked like any clip source: `lut` takes a `.cube` grade, and `mask` takes a picture that decides what of the clip shows.

```json theme={null}
{ "type": "mask", "src": "https://cdn.rendobar.com/assets/brand/logo-mark.png", "channel": "alpha" }
```

An effect that changes the picture is refused on a clip that has none, and one that changes the sound is refused on a silent clip, so a mistake is a 400 rather than a render that ignores it. Text and shapes draw their own outline and shadow, so `outline` and `dropShadow` are refused on them.

## Colour

One `color` effect carries brightness, contrast, saturation, temperature and the rest, so there is one place to correct a picture rather than nine overlapping filters. `look` applies a promoted recipe in one word, and `lut` takes a `.cube` file you supply.

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

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

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

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

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

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

## Stylise

`glitch`, `pixelate`, `posterize`, `rgbShift`, `scanLines`, `sketch`, `trails` and `shake`. Used for a beat or a scene change rather than a whole video.

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

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

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

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

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

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

## Layers

`chromaKey` removes a solid background, `mask` cuts a clip to a shape, `blurRegion` hides a face or a plate, and `outline` and `dropShadow` edge a layer that has transparency.

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

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

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

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

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

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

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

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

## Anything the engine can do

`{ "type": "engine" }` reaches the rest of the render engine by its own names, for the case a promoted effect does not cover. Every service and property is checked before the job starts, so a typo is a 400 and not a failed render.

```json theme={null}
{ "type": "engine", "service": "avfilter.colorize", "params": { "av.hue": 200, "av.saturation": 0.6 } }
```

An engine entry that duplicates a promoted effect is refused, so there is one way to ask for each thing. The names come from the engine and can change when it is upgraded, which the promoted names never do.

Every effect and every parameter is in the [effect reference](/docs/docs/jobs/compose/reference/effects). Sound effects are on [Audio levels and effects](/docs/docs/jobs/compose/audio).


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