# Property Keyframes

Property Keyframes let you animate any numeric clip or layer property over time — opacity, volume, position, brightness, effect parameters — directly on the timeline, without needing a separate keyframe editor.

![Property keyframes on timeline](/files/3TQXO39ze1r9aDA1V6mR)

## What Can Be Keyframed?

Almost any numeric property shown in the Inspector can be keyframed:

| Category        | Properties                                                                       |
| --------------- | -------------------------------------------------------------------------------- |
| **Layer**       | Opacity, X/Y position, Width, Height                                             |
| **Audio**       | Volume (dB), Pan                                                                 |
| **Effects**     | Color Key tolerance, Luminance brightness/contrast/gamma, custom shader uniforms |
| **Data Tracks** | Any data track value                                                             |

## Adding Keyframes

### From the Inspector

1. Select a clip or layer in the Timeline.
2. In the Inspector, navigate to the property you want to keyframe.
3. Click the **◆ diamond icon** next to the property name. This creates a keyframe at the current playhead position with the current value.
4. Move the playhead to a new time.
5. Change the property value — a new keyframe is created automatically.

### From the Timeline (Keyframe Lane)

1. Right-click a clip in the Timeline and choose **Show Keyframes → \[Property Name]**.
2. A keyframe lane appears beneath the clip showing the property's value curve.
3. Click on the lane to add a keyframe at that time.
4. Drag a keyframe diamond to change its time or value.

![Keyframe lane on a clip](/files/qLC8Ra8d3rHYO0D1IFGu)

## Editing Keyframes

| Action                 | How                                                   |
| ---------------------- | ----------------------------------------------------- |
| **Select**             | Click a keyframe diamond                              |
| **Move (time)**        | Drag horizontally                                     |
| **Change value**       | Drag vertically, or edit numerically in the Inspector |
| **Delete**             | Select and press `Delete`                             |
| **Select all on lane** | `Ctrl+A` while the lane is focused                    |

## Interpolation

Right-click any keyframe to set its interpolation type:

| Type            | Behaviour                                                |
| --------------- | -------------------------------------------------------- |
| **Linear**      | Constant rate of change between keyframes                |
| **Ease In**     | Starts slowly, accelerates towards the next keyframe     |
| **Ease Out**    | Decelerates as it arrives at the keyframe                |
| **Ease In/Out** | Smooth S-curve — slow start, fast middle, slow end       |
| **Step**        | Value jumps instantly at the keyframe (no interpolation) |

## Slider Sync

When a keyframe lane is visible, adjusting the property slider in the Inspector **creates or updates** the keyframe at the current playhead position in real time. This "slider sync" workflow is the fastest way to set up animation:

1. Show the keyframe lane for the property.
2. Position the playhead.
3. Drag the slider — a keyframe is created/updated automatically at the playhead.
4. Advance the playhead, drag the slider to the new value, repeat.

## Example: Opacity Fade-In

1. Place a clip on the timeline.
2. Move the playhead to the clip start.
3. In the Inspector, set **Opacity** to `0` and click **◆** to add a keyframe.
4. Move the playhead forward 2 seconds.
5. Set **Opacity** to `100` and click **◆** again.

The clip now fades from fully transparent to fully opaque over 2 seconds. The keyframe curve is visible in the timeline lane as a rising line.

## API Access

Property keyframes are also manageable via the Effects Server REST API, which is useful for programmatic control from show-control systems:

| Endpoint                       | Method   | Purpose                          |
| ------------------------------ | -------- | -------------------------------- |
| `/property-keyframes`          | `GET`    | List all keyframes               |
| `/property-keyframes`          | `POST`   | Add or update keyframes          |
| `/property-keyframes/:trackId` | `DELETE` | Remove all keyframes for a track |

See [Effects Server API](/v3/developer-reference/effects-server-api.md#property-keyframes) for the full schema.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.exaplay.one/v3/features/keyframes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
