move_layer
Set a layer's static base transform. Writes x/y/w/h/rotation directly on image., video., and shapes.; for group. sets pivotX/pivotY (no width/height/rotation — use add_keyframe for group rotation). Also sets scale and opacity, which every layer kind carries. Note: when a layer has a keyframe track for a property, the track OVERRIDES the static value at every frame — use add_keyframe to animate, move_layer to set the un-animated default. A scale/opacity write over an existing track is REFUSED for that reason; pass clear_animation:true to replace the animation with the static value.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Centre x in the element's OWN frame. At root that is canvas coords (1080 wide); INSIDE A GROUP it is the group's space, so it is not where the layer sits on the canvas. inspect_layers reports both — write back the `x` it gave you, and read `canvas_x` for the on-canvas position. | |
| y | No | Centre y in the element's OWN frame — canvas coords (1920 tall) at root, the group's space inside a group. See `x`. | |
| scale | No | Uniform scale multiplier about the layer's pivot. 1 = natural size. Every layer kind carries it. | |
| width | No | Width in px (must be > 0). | |
| height | No | Height in px (must be > 0). | |
| opacity | No | Layer opacity, 0..1 (values outside are allowed and clamp at paint time). Composes with any ancestor group's opacity. | |
| rotation | No | Rotation in degrees, clockwise. | |
| elementId | Yes | video.<id>, image.<id>, shapes.<id>, or group.<id>. | |
| projectId | Yes | Opaque project id (a v4 UUID, from list_projects/create_project). Selects which existing project this call mutates. | |
| clear_animation | No | Only meaningful when setting `scale` / `opacity` on a layer where that property is animated. true = the static value REPLACES the keyframe track. Omitted / false = the call is refused rather than writing a value the animation would hide. |