---
title: "Trigger a scene transition on a compositor block."
method: POST
path: "/api/flows/{flow_id}/blocks/{block_id}/transition"
tags: ["flows"]
---

# Trigger a scene transition on a compositor block.

`POST /api/flows/{flow_id}/blocks/{block_id}/transition`

Animates the transition between two inputs on a compositor/mixer block.
Supported transition types:
- `cut`: Instant switch (no animation)
- `fade`: Cross-fade via alpha blending
- `slide_left`: New input slides in from the right
- `slide_right`: New input slides in from the left
- `slide_up`: New input slides in from the bottom
- `slide_down`: New input slides in from the top

## Path parameters

- `flow_id` string, required
- `block_id` string, required

## Request body

- TriggerTransitionRequest — Request to trigger a transition on a compositor block.
  - `duration_ms` integer — Duration of the transition in milliseconds (ignored for "cut")
  - `from_input` integer, required — Index of the currently active input (0-based)
  - `to_input` integer, required — Index of the input to transition to (0-based)
  - `transition_type` string — Type of transition: "cut", "fade", "slide_left", "slide_right", "slide_up", "slide_down"

## Response `200`

Transition triggered successfully

- TransitionResponse — Response after triggering a transition. Reports *what was done*, not the resulting bus state — for the latter, listen to the `VisionMixerStateChanged` WebSocket event, which is broadcast immediately after the take completes.
  - `actual_transition_type` string, required — The transition type that was actually executed. Differs from `transition_type` when the engine downgraded the request — e.g. Slide/Push across heterogeneous PiP/input sources downgrades to "fade".
  - `duration_ms` integer, required — Duration of the transition in milliseconds
  - `message` string, required — Success message
  - `transition_type` string, required — The transition type requested by the client.

## Other responses

- `400` — Invalid transition parameters
- `404` — Flow not running or block not found
- `500` — Internal server error

## Changes

- **2026-05-19** `b680d9fbbba8` — 1 info
  - added the required property `actual_transition_type` to the response with the `200` status
- **2026-04-07** `1e67862a080e` — 1 breaking
  - removed the required property `actual_transition_type` from the response with the `200` status

[Change history](https://skmtc.dev/eyevinn/apis/strom-api/changes/api/flows/:flow_id/blocks/:block_id/transition/post.md)

---

[API](https://skmtc.dev/eyevinn/apis/strom-api.md) · [All operations](https://skmtc.dev/eyevinn/apis/strom-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/eyevinn/strom-api/revisions/0df7ca64263f/schema)
