Add keyframes
add_keyframesAdd many keyframes to ONE element's ONE property in a single call, with an optional loop mode applied in the same call. The idiomatic form when every layer in a multi-element animation gets its own track (ripple dot pulse, snowflake fall, equaliser-bar wave). Factors elementId + property out of the loop body and folds set_track_loop in. Use set_keyframes_batch instead when you need to mix elements/properties in one atomic call.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"elementId": "<elementId>",
"property": "<property>",
"keyframes": "<keyframes>",
"projectId": "<projectId>"
},
"name": "add_keyframes"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| loop | No | Optional extrapolation mode applied to this track in the same call. Default 'hold'. | |
| property | Yes | ||
| elementId | Yes | Layer id (video.<id>, image.<id>, shapes.<id>, text.<id>, or group.<id>). | |
| keyframes | Yes | Keyframes for this track (one or more). | |
| projectId | Yes | Opaque project id (a v4 UUID, from list_projects/create_project). Selects which existing project this call mutates. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| ok | Yes | Whether the call succeeded. | |
| data | No | The payload, shaped by the tool. | |
| note | No | What to do next when not ready. | |
| error | No | Why it failed. | |
| status | No | For cache-backed readers: whether the answer was ready. | |
| editorUrl | No | Opens this project in the editor. |