---
title: "Set a shader video effect on a vision mixer block (input look or PGM master)."
method: POST
path: "/api/flows/{flow_id}/blocks/{block_id}/effect"
tags: ["flows"]
---

# Set a shader video effect on a vision mixer block (input look or PGM master).

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

Requires the shader FX engine (GPU backend with Shader FX enabled) —
returns 400 when the engine is not built into the running pipeline.

## Path parameters

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

## Request body

- SetVideoEffectRequest — Request to set a video effect on a vision mixer block.
  - `effect` union, required — A persistent video effect ("look") applied to a vision mixer input or to the PGM master output. JSON encoding is internally tagged on `type`: `{"type": "pixelate", "block_size": 24.0}`. All numeric parameters are clamped server-side (see [`VideoEffect::sanitized`]); colors are `#RRGGBB` hex strings.
    - object — No effect (identity passthrough).
      - `type` 'none', required
    - object — Chroma key: pixels close to `key_color` become transparent.
      - `key_color` string — Key color as `#RRGGBB` (typically green `#00B140` or blue).
      - `similarity` number, float — Chroma distance below which pixels are fully keyed (0..1).
      - `smoothness` number, float — Soft edge width added above `similarity` (0..1).
      - `spill` number, float — Spill suppression amount — desaturates key-colored fringes (0..1).
      - `type` 'chroma_key', required
    - object — Mosaic pixelation (privacy or stylization).
      - `block_size` number, float — Block size in source pixels (2..200).
      - `type` 'pixelate', required
    - object — Disc-bokeh defocus blur (24-tap Vogel spiral, single pass).
      - `radius` number, float — Blur radius in source pixels (0..40).
      - `type` 'blur', required
    - object — Two-color luma mapping. `low`=black point color, `high`=white point color. Grayscale = `#000000`/`#FFFFFF`, sepia = `#2B1D0E`/`#FFF1DF`.
      - `high` string
      - `low` string
      - `mix` number, float — Blend between original (0) and duotone (1).
      - `type` 'duotone', required
    - object — Darkened corners.
      - `amount` number, float — Strength of the darkening (0..1).
      - `softness` number, float — Falloff softness (0.01..1).
      - `type` 'vignette', required
    - object — Animated VHS look: chroma shift, scanlines, tape noise.
      - `intensity` number, float — Overall intensity (0..1).
      - `type` 'vhs', required
    - object — Animated old-film look: grain, flicker, scratches, warm tone.
      - `intensity` number, float — Overall intensity (0..1).
      - `type` 'old_film', required
    - object — Edge detection glow added on top of the image.
      - `color` string — Glow color as `#RRGGBB`.
      - `intensity` number, float — Glow strength (0..1).
      - `type` 'edge_glow', required
    - object — CRT monitor: barrel distortion, scanlines, RGB grille.
      - `intensity` number, float — Overall intensity (0..1).
      - `type` 'crt', required
    - object — Newspaper-print halftone dots.
      - `dot_size` number, float — Dot grid size in pixels (3..40).
      - `type` 'halftone', required
    - object — Thermal-camera false color over luma.
      - `intensity` number, float — Blend between original (0) and thermal (1).
      - `type` 'thermal', required
    - object — Night-vision scope: green phosphor, lifted shadows, grain, vignette.
      - `intensity` number, float — Blend between original (0) and night vision (1).
      - `type` 'night_vision', required
    - object — Color quantization into bands (screen-print / toon).
      - `levels` number, float — Number of levels per channel (2..16).
      - `type` 'posterize', required
    - object — Underwater: wavy refraction, blue-green grade, caustic shimmer.
      - `intensity` number, float — Overall intensity (0..1).
      - `type` 'underwater', required
    - object — Primary color correction + white balance — the camera-matching tool. Every control is neutral at its default, so an untouched correction is an identity pass. Applied in a fixed order: white balance, brightness, contrast, hue, saturation, gamma.
      - `brightness` number, float — Additive brightness offset (-1..1, neutral 0).
      - `contrast` number, float — Contrast multiplier around mid-gray (0..2, neutral 1).
      - `gamma` number, float — Midtone gamma curve (0.1..3, neutral 1).
      - `hue` number, float — Hue rotation: -1..1 maps to -180..180 degrees (neutral 0).
      - `saturation` number, float — Saturation: 0 = grayscale, 1 = unchanged, up to 2 (0..2, neutral 1).
      - `temperature` number, float — White balance temperature: warm (+) / cool (-) (-1..1, neutral 0).
      - `tint` number, float — White balance tint: magenta (+) / green (-) (-1..1, neutral 0).
      - `type` 'color_correct', required
  - `target` union, required — Where a [`VideoEffect`] is applied on a vision mixer block.
    - object — A video input by index — the effect follows the source everywhere (PGM, PVW, thumbnails, PiPs).
      - `input` integer, required — A video input by index — the effect follows the source everywhere (PGM, PVW, thumbnails, PiPs).
    - 'master' — The PGM master output — applied after composition.

## Response `200`

Effect applied

- SetVideoEffectResponse — Response after setting a video effect.
  - `effect` union, required — A persistent video effect ("look") applied to a vision mixer input or to the PGM master output. JSON encoding is internally tagged on `type`: `{"type": "pixelate", "block_size": 24.0}`. All numeric parameters are clamped server-side (see [`VideoEffect::sanitized`]); colors are `#RRGGBB` hex strings.
    - object — No effect (identity passthrough).
      - `type` 'none', required
    - object — Chroma key: pixels close to `key_color` become transparent.
      - `key_color` string — Key color as `#RRGGBB` (typically green `#00B140` or blue).
      - `similarity` number, float — Chroma distance below which pixels are fully keyed (0..1).
      - `smoothness` number, float — Soft edge width added above `similarity` (0..1).
      - `spill` number, float — Spill suppression amount — desaturates key-colored fringes (0..1).
      - `type` 'chroma_key', required
    - object — Mosaic pixelation (privacy or stylization).
      - `block_size` number, float — Block size in source pixels (2..200).
      - `type` 'pixelate', required
    - object — Disc-bokeh defocus blur (24-tap Vogel spiral, single pass).
      - `radius` number, float — Blur radius in source pixels (0..40).
      - `type` 'blur', required
    - object — Two-color luma mapping. `low`=black point color, `high`=white point color. Grayscale = `#000000`/`#FFFFFF`, sepia = `#2B1D0E`/`#FFF1DF`.
      - `high` string
      - `low` string
      - `mix` number, float — Blend between original (0) and duotone (1).
      - `type` 'duotone', required
    - object — Darkened corners.
      - `amount` number, float — Strength of the darkening (0..1).
      - `softness` number, float — Falloff softness (0.01..1).
      - `type` 'vignette', required
    - object — Animated VHS look: chroma shift, scanlines, tape noise.
      - `intensity` number, float — Overall intensity (0..1).
      - `type` 'vhs', required
    - object — Animated old-film look: grain, flicker, scratches, warm tone.
      - `intensity` number, float — Overall intensity (0..1).
      - `type` 'old_film', required
    - object — Edge detection glow added on top of the image.
      - `color` string — Glow color as `#RRGGBB`.
      - `intensity` number, float — Glow strength (0..1).
      - `type` 'edge_glow', required
    - object — CRT monitor: barrel distortion, scanlines, RGB grille.
      - `intensity` number, float — Overall intensity (0..1).
      - `type` 'crt', required
    - object — Newspaper-print halftone dots.
      - `dot_size` number, float — Dot grid size in pixels (3..40).
      - `type` 'halftone', required
    - object — Thermal-camera false color over luma.
      - `intensity` number, float — Blend between original (0) and thermal (1).
      - `type` 'thermal', required
    - object — Night-vision scope: green phosphor, lifted shadows, grain, vignette.
      - `intensity` number, float — Blend between original (0) and night vision (1).
      - `type` 'night_vision', required
    - object — Color quantization into bands (screen-print / toon).
      - `levels` number, float — Number of levels per channel (2..16).
      - `type` 'posterize', required
    - object — Underwater: wavy refraction, blue-green grade, caustic shimmer.
      - `intensity` number, float — Overall intensity (0..1).
      - `type` 'underwater', required
    - object — Primary color correction + white balance — the camera-matching tool. Every control is neutral at its default, so an untouched correction is an identity pass. Applied in a fixed order: white balance, brightness, contrast, hue, saturation, gamma.
      - `brightness` number, float — Additive brightness offset (-1..1, neutral 0).
      - `contrast` number, float — Contrast multiplier around mid-gray (0..2, neutral 1).
      - `gamma` number, float — Midtone gamma curve (0.1..3, neutral 1).
      - `hue` number, float — Hue rotation: -1..1 maps to -180..180 degrees (neutral 0).
      - `saturation` number, float — Saturation: 0 = grayscale, 1 = unchanged, up to 2 (0..2, neutral 1).
      - `temperature` number, float — White balance temperature: warm (+) / cool (-) (-1..1, neutral 0).
      - `tint` number, float — White balance tint: magenta (+) / green (-) (-1..1, neutral 0).
      - `type` 'color_correct', required
  - `message` string, required

## Other responses

- `400` — Invalid request or FX engine unavailable

## Changes

> 25 revisions in range; 18 could not be searched.

- **2026-04-07** `1e67862a080e` — 1 breaking
  - api path removed without deprecation

[Change history](https://skmtc.dev/eyevinn/apis/strom-api/changes/api/flows/:flow_id/blocks/:block_id/effect/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)
