manage_transitions
Transitions on a track's cuts OR lone clip edges (a free head/tail takes a single-sided fade from/to nothing; its alignment is forced). action: 'add' (trackId + atFrame = the cut where one clip ends and the next starts, + type; optional durationFrames (default 30, clamped to the clips' source handles), alignment centered|start|end, params) | 'remove' (transitionId) | 'update' (transitionId + any of type/durationFrames/alignment/params). Types: crossDissolve, dipToBlack, dipToWhite, wipe (params.angle deg, params.softness 0-100), slide (params.angle), push (params.angle). Both clips need source material past the cut — a transition that cannot fit is refused; edits that break the cut remove it. Returns {ok, transitionId?}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Transition type. | |
| token | Yes | The session token `connect` returned. Pass it on every call — it says which browser to drive. | |
| action | Yes | add | remove | update | |
| params | No | Type params patch (e.g. { angle: 90 }). | |
| atFrame | No | The cut frame for 'add'. | |
| trackId | Yes | Track owning the cut (get_timeline). | |
| alignment | No | centered | start | end | |
| projectId | Yes | Project id from get_projects. | |
| timelineId | Yes | Target timeline. | |
| transitionId | No | Existing transition id. | |
| durationFrames | No |