# Actions

## List actions

**get** `/actions`

Returns released prebuilt Flora actions that can be executed by the public API. Action identifiers are raw slugs such as rotate-image, not action-prefixed IDs.

### Returns

- `actions: array of object { action_id, charged_cost, description, 5 more }`

  - `action_id: "color-grade-image-browser" or "overlay-image-browser" or "draw-image-browser" or 37 more`

    Action identifier

    - `"color-grade-image-browser"`

    - `"overlay-image-browser"`

    - `"draw-image-browser"`

    - `"crop-image-browser"`

    - `"scene-3d-image-browser"`

    - `"blur-image-browser"`

    - `"change-image-ar-browser"`

    - `"rotate-image-browser"`

    - `"color-filter-image-browser"`

    - `"color-tint-image-browser"`

    - `"filter-color-image-browser"`

    - `"duplicate-image-browser"`

    - `"side-by-side-composite-browser"`

    - `"add-shape-to-image-browser"`

    - `"add-text-to-image-browser"`

    - `"qr-code-generator-browser"`

    - `"resize-image-browser"`

    - `"shader-effect-browser"`

    - `"split-text-browser"`

    - `"find-and-replace-text-browser"`

    - `"concat-text-browser"`

    - `"ken-burns-video"`

    - `"stitch-videos"`

    - `"split-video"`

    - `"extract-video-frames"`

    - `"color-grade-video"`

    - `"video-to-frame-grid"`

    - `"boomerang-video"`

    - `"reverse-video"`

    - `"video-to-long-exposure"`

    - `"video-effect"`

    - `"color-filter-video"`

    - `"speed-up-video"`

    - `"slow-down-video"`

    - `"duplicate-video"`

    - `"greenscreen-video"`

    - `"resize-video"`

    - `"change-video-ar"`

    - `"split-audio-from-video"`

    - `"merge-audio-into-video"`

  - `charged_cost: number`

    Cost per execution in USD

  - `description: string`

    Action description

  - `inputs: array of object { name, type, dynamic, 2 more }`

    Action input slots

    - `name: string`

      Action input or output name

    - `type: "image" or "video" or "text" or "audio"`

      Action input or output media type

      - `"image"`

      - `"video"`

      - `"text"`

      - `"audio"`

    - `dynamic: optional boolean`

      Deprecated alias for `multiple: true`. Mirrors `multiple` for back-compat.

    - `multiple: optional true or object { max, min }`

      Many-connections form. `true` is unbounded shorthand; the object form sets explicit min/max bounds.

      - `true`

        - `true`

      - `object { max, min }`

        - `max: optional number`

        - `min: optional number`

    - `optional: optional boolean`

      Whether the slot allows zero connections in single-input mode. Ignored when `multiple` is the object form (use `min: 0` there instead).

  - `language: "javascript" or "python"`

    Action runtime language

    - `"javascript"`

    - `"python"`

  - `name: string`

    Action name

  - `outputs: array of object { name, type, dynamic, 2 more }`

    Action output slots

    - `name: string`

      Action input or output name

    - `type: "image" or "video" or "text" or "audio"`

      Action input or output media type

      - `"image"`

      - `"video"`

      - `"text"`

      - `"audio"`

    - `dynamic: optional boolean`

      Deprecated alias for `multiple: true`. Mirrors `multiple` for back-compat.

    - `multiple: optional true or object { max, min }`

      Many-connections form. `true` is unbounded shorthand; the object form sets explicit min/max bounds.

      - `true`

        - `true`

      - `object { max, min }`

        - `max: optional number`

        - `min: optional number`

    - `optional: optional boolean`

      Whether the slot allows zero connections in single-input mode. Ignored when `multiple` is the object form (use `min: 0` there instead).

  - `params: array of object { key, type, available_values, 6 more }`

    Action parameters

    - `key: string`

      Action parameter key

    - `type: string`

      Action parameter control type

    - `available_values: optional array of object { label, value, description }`

      Allowed parameter values

      - `label: string`

      - `value: string`

      - `description: optional string`

    - `default_value: optional unknown`

      Default parameter value

    - `info_tooltip: optional string`

      Action parameter description

    - `label: optional string`

      Action parameter label

    - `max_number_value: optional number`

    - `min_number_value: optional number`

    - `number_step: optional number`

### Example

```http
curl https://app.flora.ai/api/v1/actions \
    -H "Authorization: Bearer $FLORA_API_KEY"
```

#### Response

```json
{
  "actions": [
    {
      "action_id": "color-grade-image-browser",
      "charged_cost": 0,
      "description": "Rotate an image by a fixed angle.",
      "inputs": [
        {
          "name": "image",
          "type": "image",
          "dynamic": true,
          "multiple": true,
          "optional": true
        }
      ],
      "language": "javascript",
      "name": "Rotate Image",
      "outputs": [
        {
          "name": "image",
          "type": "image",
          "dynamic": true,
          "multiple": true,
          "optional": true
        }
      ],
      "params": [
        {
          "key": "angle",
          "type": "select",
          "available_values": [
            {
              "label": "label",
              "value": "value",
              "description": "description"
            }
          ],
          "default_value": {},
          "info_tooltip": "Rotation angle in degrees.",
          "label": "Angle",
          "max_number_value": 0,
          "min_number_value": 0,
          "number_step": 0
        }
      ]
    }
  ]
}
```

## Get an action

**get** `/actions/{actionId}`

Returns metadata for one released prebuilt Flora action. Action identifiers are raw slugs such as rotate-image, not action-prefixed IDs.

### Path Parameters

- `actionId: "color-grade-image-browser" or "overlay-image-browser" or "draw-image-browser" or 37 more`

  Action identifier

  - `"color-grade-image-browser"`

  - `"overlay-image-browser"`

  - `"draw-image-browser"`

  - `"crop-image-browser"`

  - `"scene-3d-image-browser"`

  - `"blur-image-browser"`

  - `"change-image-ar-browser"`

  - `"rotate-image-browser"`

  - `"color-filter-image-browser"`

  - `"color-tint-image-browser"`

  - `"filter-color-image-browser"`

  - `"duplicate-image-browser"`

  - `"side-by-side-composite-browser"`

  - `"add-shape-to-image-browser"`

  - `"add-text-to-image-browser"`

  - `"qr-code-generator-browser"`

  - `"resize-image-browser"`

  - `"shader-effect-browser"`

  - `"split-text-browser"`

  - `"find-and-replace-text-browser"`

  - `"concat-text-browser"`

  - `"ken-burns-video"`

  - `"stitch-videos"`

  - `"split-video"`

  - `"extract-video-frames"`

  - `"color-grade-video"`

  - `"video-to-frame-grid"`

  - `"boomerang-video"`

  - `"reverse-video"`

  - `"video-to-long-exposure"`

  - `"video-effect"`

  - `"color-filter-video"`

  - `"speed-up-video"`

  - `"slow-down-video"`

  - `"duplicate-video"`

  - `"greenscreen-video"`

  - `"resize-video"`

  - `"change-video-ar"`

  - `"split-audio-from-video"`

  - `"merge-audio-into-video"`

### Returns

- `action_id: "color-grade-image-browser" or "overlay-image-browser" or "draw-image-browser" or 37 more`

  Action identifier

  - `"color-grade-image-browser"`

  - `"overlay-image-browser"`

  - `"draw-image-browser"`

  - `"crop-image-browser"`

  - `"scene-3d-image-browser"`

  - `"blur-image-browser"`

  - `"change-image-ar-browser"`

  - `"rotate-image-browser"`

  - `"color-filter-image-browser"`

  - `"color-tint-image-browser"`

  - `"filter-color-image-browser"`

  - `"duplicate-image-browser"`

  - `"side-by-side-composite-browser"`

  - `"add-shape-to-image-browser"`

  - `"add-text-to-image-browser"`

  - `"qr-code-generator-browser"`

  - `"resize-image-browser"`

  - `"shader-effect-browser"`

  - `"split-text-browser"`

  - `"find-and-replace-text-browser"`

  - `"concat-text-browser"`

  - `"ken-burns-video"`

  - `"stitch-videos"`

  - `"split-video"`

  - `"extract-video-frames"`

  - `"color-grade-video"`

  - `"video-to-frame-grid"`

  - `"boomerang-video"`

  - `"reverse-video"`

  - `"video-to-long-exposure"`

  - `"video-effect"`

  - `"color-filter-video"`

  - `"speed-up-video"`

  - `"slow-down-video"`

  - `"duplicate-video"`

  - `"greenscreen-video"`

  - `"resize-video"`

  - `"change-video-ar"`

  - `"split-audio-from-video"`

  - `"merge-audio-into-video"`

- `charged_cost: number`

  Cost per execution in USD

- `description: string`

  Action description

- `inputs: array of object { name, type, dynamic, 2 more }`

  Action input slots

  - `name: string`

    Action input or output name

  - `type: "image" or "video" or "text" or "audio"`

    Action input or output media type

    - `"image"`

    - `"video"`

    - `"text"`

    - `"audio"`

  - `dynamic: optional boolean`

    Deprecated alias for `multiple: true`. Mirrors `multiple` for back-compat.

  - `multiple: optional true or object { max, min }`

    Many-connections form. `true` is unbounded shorthand; the object form sets explicit min/max bounds.

    - `true`

      - `true`

    - `object { max, min }`

      - `max: optional number`

      - `min: optional number`

  - `optional: optional boolean`

    Whether the slot allows zero connections in single-input mode. Ignored when `multiple` is the object form (use `min: 0` there instead).

- `language: "javascript" or "python"`

  Action runtime language

  - `"javascript"`

  - `"python"`

- `name: string`

  Action name

- `outputs: array of object { name, type, dynamic, 2 more }`

  Action output slots

  - `name: string`

    Action input or output name

  - `type: "image" or "video" or "text" or "audio"`

    Action input or output media type

    - `"image"`

    - `"video"`

    - `"text"`

    - `"audio"`

  - `dynamic: optional boolean`

    Deprecated alias for `multiple: true`. Mirrors `multiple` for back-compat.

  - `multiple: optional true or object { max, min }`

    Many-connections form. `true` is unbounded shorthand; the object form sets explicit min/max bounds.

    - `true`

      - `true`

    - `object { max, min }`

      - `max: optional number`

      - `min: optional number`

  - `optional: optional boolean`

    Whether the slot allows zero connections in single-input mode. Ignored when `multiple` is the object form (use `min: 0` there instead).

- `params: array of object { key, type, available_values, 6 more }`

  Action parameters

  - `key: string`

    Action parameter key

  - `type: string`

    Action parameter control type

  - `available_values: optional array of object { label, value, description }`

    Allowed parameter values

    - `label: string`

    - `value: string`

    - `description: optional string`

  - `default_value: optional unknown`

    Default parameter value

  - `info_tooltip: optional string`

    Action parameter description

  - `label: optional string`

    Action parameter label

  - `max_number_value: optional number`

  - `min_number_value: optional number`

  - `number_step: optional number`

### Example

```http
curl https://app.flora.ai/api/v1/actions/$ACTION_ID \
    -H "Authorization: Bearer $FLORA_API_KEY"
```

#### Response

```json
{
  "action_id": "color-grade-image-browser",
  "charged_cost": 0,
  "description": "Rotate an image by a fixed angle.",
  "inputs": [
    {
      "name": "image",
      "type": "image",
      "dynamic": true,
      "multiple": true,
      "optional": true
    }
  ],
  "language": "javascript",
  "name": "Rotate Image",
  "outputs": [
    {
      "name": "image",
      "type": "image",
      "dynamic": true,
      "multiple": true,
      "optional": true
    }
  ],
  "params": [
    {
      "key": "angle",
      "type": "select",
      "available_values": [
        {
          "label": "label",
          "value": "value",
          "description": "description"
        }
      ],
      "default_value": {},
      "info_tooltip": "Rotation angle in degrees.",
      "label": "Angle",
      "max_number_value": 0,
      "min_number_value": 0,
      "number_step": 0
    }
  ]
}
```

## Start an action run

**post** `/runs/action`

Starts a headless prebuilt action run using raw action slugs such as rotate-image, workspace_id, project_id, and non-empty inputs. Direct action runs do not create or mutate canvas nodes. Mutating public API requests support an optional Idempotency-Key header for client retries; duplicate keys within two hours return idempotency_duplicate.

### Body Parameters

- `body: object { action_id, inputs, project_id, 2 more }  or object { action_id, inputs, project_id, 2 more }  or object { action_id, inputs, project_id, 2 more }  or 37 more`

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "color-grade-image-browser"`

      - `"color-grade-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { advanced, brightness, contrast, 7 more }`

      Action parameters

      - `advanced: optional boolean`

        Show additional controls

      - `brightness: optional number`

        Brightness

      - `contrast: optional number`

        Contrast

      - `highlights: optional number`

        Highlights

      - `hue_shift: optional number`

        Hue Shift (deg)

      - `saturation: optional number`

        Saturation

      - `shadows: optional number`

        Shadows

      - `show_scope: optional boolean`

        Show Color Scope in preview

      - `tint: optional number`

        Tint (Green-Magenta)

      - `warmth: optional number`

        Warmth

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "overlay-image-browser"`

      - `"overlay-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { blend, center, opacity, 2 more }`

      Action parameters

      - `blend: optional "normal" or "multiply" or "screen" or 2 more`

        Blend

        - `"normal"`

        - `"multiply"`

        - `"screen"`

        - `"overlay"`

        - `"soft-light"`

      - `center: optional object { x, y }`

        Center

        - `x: number`

        - `y: number`

      - `opacity: optional number`

        Opacity

      - `rotation: optional number`

        Rotation (deg)

      - `size: optional object { x, y }`

        Size

        - `x: number`

        - `y: number`

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "draw-image-browser"`

      - `"draw-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { color, erase, size }`

      Action parameters

      - `color: optional string`

        Brush color

      - `erase: optional boolean`

        Erase

      - `size: optional number`

        Brush size

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "crop-image-browser"`

      - `"crop-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { center, lock_aspect, rotation, size }`

      Action parameters

      - `center: optional object { x, y }`

        Center

        - `x: number`

        - `y: number`

      - `lock_aspect: optional boolean`

        Lock ratio

      - `rotation: optional number`

        Rotation (deg)

      - `size: optional object { x, y }`

        Size

        - `x: number`

        - `y: number`

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "scene-3d-image-browser"`

      - `"scene-3d-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { aspect_ratio, background, color, 6 more }`

      Action parameters

      - `aspect_ratio: optional "1:1" or "16:9" or "9:16" or 2 more`

        Aspect Ratio

        - `"1:1"`

        - `"16:9"`

        - `"9:16"`

        - `"4:3"`

        - `"3:4"`

      - `background: optional string`

        Background Color

      - `color: optional string`

        Color

      - `offset: optional object { x, y }`

        Offset

        - `x: number`

        - `y: number`

      - `rotation: optional object { x, y, z }`

        Rotation (deg)

        - `x: number`

        - `y: number`

        - `z: number`

      - `scale: optional object { x, y, z }`

        Scale

        - `x: number`

        - `y: number`

        - `z: number`

      - `shape: optional "cube" or "sphere" or "torus" or 2 more`

        Shape

        - `"cube"`

        - `"sphere"`

        - `"torus"`

        - `"cone"`

        - `"cylinder"`

      - `show_background: optional boolean`

        Include Background

      - `size: optional number`

        Resolution (longest side)

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "blur-image-browser"`

      - `"blur-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { angle, blur_type, bokeh_shape, 15 more }`

      Action parameters

      - `angle: optional number`

        Motion Angle (°)

      - `blur_type: optional "gaussian" or "box" or "motion" or 5 more`

        Blur Type

        - `"gaussian"`

        - `"box"`

        - `"motion"`

        - `"radial"`

        - `"bilateral"`

        - `"bokeh"`

        - `"tiltshift"`

        - `"targetcolor"`

      - `bokeh_shape: optional "circle" or "hexagon" or "pentagon"`

        Bokeh Shape

        - `"circle"`

        - `"hexagon"`

        - `"pentagon"`

      - `brush_hardness: optional number`

        Brush Hardness

      - `brush_intensity: optional number`

        Brush Intensity

      - `brush_size: optional number`

        Brush Size (px)

      - `edge_threshold: optional number`

        Edge Preservation

      - `erase: optional boolean`

        Erase

      - `mode: optional "full" or "draw"`

        Mode

        - `"full"`

        - `"draw"`

      - `radial_mode: optional "zoom" or "spin"`

        Radial Mode

        - `"zoom"`

        - `"spin"`

      - `radial_strength: optional number`

        Radial Strength

      - `radius: optional number`

        Radius

      - `target_color: optional string`

        Target Color

      - `target_invert: optional boolean`

        Invert Selection (blur non-matching)

      - `target_tolerance: optional number`

        Color Tolerance

      - `tilt_center: optional number`

        Sharp Band Center

      - `tilt_orientation: optional "horizontal" or "vertical"`

        Band Orientation

        - `"horizontal"`

        - `"vertical"`

      - `tilt_width: optional number`

        Sharp Band Width

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "change-image-ar-browser"`

      - `"change-image-ar-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { aspect_ratio, background_mode, blur_amount, 2 more }`

      Action parameters

      - `aspect_ratio: optional "1:1" or "16:9" or "9:16" or 5 more`

        Aspect Ratio

        - `"1:1"`

        - `"16:9"`

        - `"9:16"`

        - `"4:3"`

        - `"3:4"`

        - `"3:2"`

        - `"2:3"`

        - `"21:9"`

      - `background_mode: optional "solid" or "blur"`

        Background

        - `"solid"`

        - `"blur"`

      - `blur_amount: optional number`

        Blur Amount

      - `fit: optional "crop" or "pad"`

        Fit

        - `"crop"`

        - `"pad"`

      - `pad_color: optional string`

        Pad Color

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "rotate-image-browser"`

      - `"rotate-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { angle, background, canvas_mode, 2 more }`

      Action parameters

      - `angle: optional number`

        Angle (°, clockwise)

      - `background: optional string`

        Background Color

      - `canvas_mode: optional "shrink" or "keep" or "expand"`

        Canvas

        - `"shrink"`

        - `"keep"`

        - `"expand"`

      - `direction: optional "none" or "horizontal" or "vertical" or "both"`

        Flip

        - `"none"`

        - `"horizontal"`

        - `"vertical"`

        - `"both"`

      - `transparent: optional boolean`

        Transparent Background

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "color-filter-image-browser"`

      - `"color-filter-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { bw_threshold, colorpop_tolerance, dot_angle, 14 more }`

      Action parameters

      - `bw_threshold: optional number`

        Threshold

      - `colorpop_tolerance: optional number`

        Color Tolerance

      - `dot_angle: optional number`

        Grid Angle (°)

      - `dot_bg: optional string`

        Background

      - `dot_color: optional string`

        Dot Color

      - `dot_size: optional number`

        Dot Size

      - `filter: optional "grayscale" or "sepia" or "invert" or 13 more`

        Filter

        - `"grayscale"`

        - `"sepia"`

        - `"invert"`

        - `"bw"`

        - `"posterize"`

        - `"solarize"`

        - `"duotone"`

        - `"clarendon"`

        - `"moon"`

        - `"nashville"`

        - `"noir"`

        - `"fade"`

        - `"vignette"`

        - `"colorpop"`

        - `"crossprocess"`

        - `"halftone"`

      - `grain: optional number`

        Grain

      - `highlight_color: optional string`

        Highlight Color

      - `intensity: optional number`

        Intensity

      - `posterize_bits: optional number`

        Bits per channel

      - `sepia_warmth: optional number`

        Warmth

      - `shadow_color: optional string`

        Shadow Color

      - `solarize_threshold: optional number`

        Threshold

      - `target_color: optional string`

        Keep Color

      - `vignette_softness: optional number`

        Vignette Softness

      - `vignette_strength: optional number`

        Vignette Strength

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "color-tint-image-browser"`

      - `"color-tint-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { blend_mode, color, intensity }`

      Action parameters

      - `blend_mode: optional "multiply" or "screen" or "overlay" or 2 more`

        Blend Mode

        - `"multiply"`

        - `"screen"`

        - `"overlay"`

        - `"soft_light"`

        - `"color"`

      - `color: optional string`

        Tint Color

      - `intensity: optional number`

        Intensity

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "filter-color-image-browser"`

      - `"filter-color-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { invert, mode, replacement_color, 3 more }`

      Action parameters

      - `invert: optional boolean`

        Invert Selection

      - `mode: optional "remove" or "replace" or "keep"`

        Mode

        - `"remove"`

        - `"replace"`

        - `"keep"`

      - `replacement_color: optional string`

        Replacement Color

      - `softness: optional number`

        Edge Softness

      - `target_color: optional string`

        Target Color

      - `tolerance: optional number`

        Tolerance

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "duplicate-image-browser"`

      - `"duplicate-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { count }`

      Action parameters

      - `count: optional number`

        Copies

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "side-by-side-composite-browser"`

      - `"side-by-side-composite-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { background, gap, layout, normalize }`

      Action parameters

      - `background: optional string`

        Background

      - `gap: optional number`

        Gap (px)

      - `layout: optional "auto" or "horizontal-2" or "horizontal-3" or 3 more`

        Layout

        - `"auto"`

        - `"horizontal-2"`

        - `"horizontal-3"`

        - `"vertical-2"`

        - `"vertical-3"`

        - `"grid-2x2"`

      - `normalize: optional "match-shortest" or "match-largest" or "pad-to-largest"`

        Size Match

        - `"match-shortest"`

        - `"match-largest"`

        - `"pad-to-largest"`

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "add-shape-to-image-browser"`

      - `"add-shape-to-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { background, center, fill_color, 9 more }`

      Action parameters

      - `background: optional string`

        Background Color

      - `center: optional object { x, y }`

        Center

        - `x: number`

        - `y: number`

      - `fill_color: optional string`

        Fill Color

      - `fill_opacity: optional number`

        Fill Opacity

      - `height: optional number`

        Height (px)

      - `rotation: optional number`

        Rotation (deg)

      - `shape: optional "rectangle" or "ellipse" or "triangle" or 2 more`

        Shape

        - `"rectangle"`

        - `"ellipse"`

        - `"triangle"`

        - `"star"`

        - `"hexagon"`

      - `show_background: optional boolean`

        Include Background

      - `size: optional object { x, y }`

        Size

        - `x: number`

        - `y: number`

      - `stroke_color: optional string`

        Stroke Color

      - `stroke_width: optional number`

        Stroke Width (px)

      - `width: optional number`

        Width (px)

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "add-text-to-image-browser"`

      - `"add-text-to-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { background, center, color, 9 more }`

      Action parameters

      - `background: optional string`

        Background Color

      - `center: optional object { x, y }`

        Center

        - `x: number`

        - `y: number`

      - `color: optional string`

        Text Color

      - `dimensions: optional object { x, y }`

        Dimensions (px)

        - `x: number`

        - `y: number`

      - `font_family: optional "sans" or "sans-bold" or "sans-italic" or 4 more`

        Font

        - `"sans"`

        - `"sans-bold"`

        - `"sans-italic"`

        - `"serif"`

        - `"serif-bold"`

        - `"mono"`

        - `"mono-bold"`

      - `font_size: optional number`

        Font Size (px)

      - `max_width: optional number`

        Max Width (px)

      - `opacity: optional number`

        Opacity

      - `rotation: optional number`

        Rotation (deg)

      - `shadow: optional boolean`

        Shadow

      - `show_background: optional boolean`

        Include Background

      - `text: optional string`

        Text

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "qr-code-generator-browser"`

      - `"qr-code-generator-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { bg_color, border, error_correction, 2 more }`

      Action parameters

      - `bg_color: optional string`

        Background Color

      - `border: optional number`

        Quiet-Zone Border (modules)

      - `error_correction: optional "L" or "M" or "Q" or "H"`

        Error Correction

        - `"L"`

        - `"M"`

        - `"Q"`

        - `"H"`

      - `fg_color: optional string`

        Foreground Color

      - `size: optional number`

        Size (px)

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "resize-image-browser"`

      - `"resize-image-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { bg_color, fit, height, 4 more }`

      Action parameters

      - `bg_color: optional string`

        Letterbox Color

      - `fit: optional "contain" or "cover" or "stretch"`

        Fit

        - `"contain"`

        - `"cover"`

        - `"stretch"`

      - `height: optional number`

        Height (px)

      - `longest: optional number`

        Longest Side (px)

      - `mode: optional "exact" or "percent" or "longest"`

        Resize by

        - `"exact"`

        - `"percent"`

        - `"longest"`

      - `percent: optional number`

        Scale (%)

      - `width: optional number`

        Width (px)

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "shader-effect-browser"`

      - `"shader-effect-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { bloom_strength, bloom_threshold, edge_thickness, 8 more }`

      Action parameters

      - `bloom_strength: optional number`

        Strength

      - `bloom_threshold: optional number`

        Threshold

      - `edge_thickness: optional number`

        Thickness

      - `effect: optional "chromatic" or "glitch" or "edges" or 5 more`

        Effect

        - `"chromatic"`

        - `"glitch"`

        - `"edges"`

        - `"crt"`

        - `"ripple"`

        - `"kaleidoscope"`

        - `"bloom"`

        - `"pixelate"`

      - `glitch_amount: optional number`

        Glitch

      - `intensity: optional number`

        Intensity

      - `ripple_amp: optional number`

        Amplitude

      - `ripple_freq: optional number`

        Frequency

      - `scanline_strength: optional number`

        Scanlines

      - `segments: optional number`

        Segments

      - `shift: optional number`

        Shift (px)

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "split-text-browser"`

      - `"split-text-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { chars_per_part, lines_per_part, max_parts, 4 more }`

      Action parameters

      - `chars_per_part: optional number`

        Characters per Part

      - `lines_per_part: optional number`

        Lines per Part

      - `max_parts: optional number`

        Max Parts

      - `separator: optional string`

        Separator

      - `skip_empty: optional boolean`

        Skip Empty Parts

      - `split_mode: optional "separator" or "paragraph" or "lines" or "charCount"`

        Split Mode

        - `"separator"`

        - `"paragraph"`

        - `"lines"`

        - `"charCount"`

      - `trim_parts: optional boolean`

        Trim Whitespace

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "find-and-replace-text-browser"`

      - `"find-and-replace-text-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { case_sensitive, find, replace, 2 more }`

      Action parameters

      - `case_sensitive: optional boolean`

        Case Sensitive

      - `find: optional string`

        Find

      - `replace: optional string`

        Replace With

      - `replace_all: optional boolean`

        Replace All Occurrences

      - `whole_word: optional boolean`

        Whole Word Only

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "concat-text-browser"`

      - `"concat-text-browser"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { add_headers, prefix, separator, 4 more }`

      Action parameters

      - `add_headers: optional boolean`

        Add Input Name Headers

      - `prefix: optional string`

        Prefix

      - `separator: optional string`

        Separator

      - `skip_empty: optional boolean`

        Skip Empty Parts

      - `suffix: optional string`

        Suffix

      - `trim_parts: optional boolean`

        Trim Each Part

      - `wrap_each_part: optional boolean`

        Wrap Each Part

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "ken-burns-video"`

      - `"ken-burns-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { duration, easing, fps, 3 more }`

      Action parameters

      - `duration: optional number`

        Duration (s)

      - `easing: optional "linear" or "ease-in" or "ease-out" or "ease-in-out"`

        Easing

        - `"linear"`

        - `"ease-in"`

        - `"ease-out"`

        - `"ease-in-out"`

      - `fps: optional "24" or "30" or "60"`

        FPS

        - `"24"`

        - `"30"`

        - `"60"`

      - `pan_direction: optional "none" or "left" or "right" or 2 more`

        Pan

        - `"none"`

        - `"left"`

        - `"right"`

        - `"up"`

        - `"down"`

      - `zoom: optional number`

        Zoom Level

      - `zoom_direction: optional "none" or "in" or "out"`

        Zoom Direction

        - `"none"`

        - `"in"`

        - `"out"`

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "stitch-videos"`

      - `"stitch-videos"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { aspect_ratio, background_color, background_mode, 4 more }`

      Action parameters

      - `aspect_ratio: optional "auto" or "21:9" or "16:9" or 9 more`

        Output Aspect Ratio

        - `"auto"`

        - `"21:9"`

        - `"16:9"`

        - `"3:2"`

        - `"4:3"`

        - `"5:4"`

        - `"1:1"`

        - `"4:5"`

        - `"3:4"`

        - `"2:3"`

        - `"9:16"`

        - `"9:21"`

      - `background_color: optional string`

        Background Color

      - `background_mode: optional "solid" or "blur"`

        Background Mode

        - `"solid"`

        - `"blur"`

      - `blur_amount: optional number`

        Blur Amount

      - `fit_mode: optional "contain" or "cover"`

        Fit Mode

        - `"contain"`

        - `"cover"`

      - `transition: optional "none" or "fade" or "wipeleft" or "wiperight"`

        Transition

        - `"none"`

        - `"fade"`

        - `"wipeleft"`

        - `"wiperight"`

      - `transition_duration: optional number`

        Transition Duration (s)

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "split-video"`

      - `"split-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { scene_sensitivity, segment_duration, segments, 3 more }`

      Action parameters

      - `scene_sensitivity: optional number`

        Scene Sensitivity

      - `segment_duration: optional number`

        Segment Duration (s)

      - `segments: optional number`

        Number of Segments

      - `split_mode: optional "equal" or "duration" or "scene"`

        Split Mode

        - `"equal"`

        - `"duration"`

        - `"scene"`

      - `strip_audio: optional boolean`

        Strip Audio

      - `trim_handles: optional number`

        Trim Handles (s)

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "extract-video-frames"`

      - `"extract-video-frames"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { every_seconds, frame_count, mode, 3 more }`

      Action parameters

      - `every_seconds: optional number`

        Every (s)

      - `frame_count: optional number`

        Frame Count

      - `mode: optional "single" or "evenly" or "interval" or "scene"`

        Frames

        - `"single"`

        - `"evenly"`

        - `"interval"`

        - `"scene"`

      - `range: optional object { max, min }`

        Video Range (%)

        - `max: number`

        - `min: number`

      - `scene_sensitivity: optional number`

        Scene Sensitivity

      - `time_percent: optional number`

        Time (%)

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "color-grade-video"`

      - `"color-grade-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { brightness, contrast, gamma, saturation }`

      Action parameters

      - `brightness: optional number`

        Brightness

      - `contrast: optional number`

        Contrast

      - `gamma: optional number`

        Gamma

      - `saturation: optional number`

        Saturation

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "video-to-frame-grid"`

      - `"video-to-frame-grid"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { background, cell_width, cols, 2 more }`

      Action parameters

      - `background: optional string`

        Background Color

      - `cell_width: optional number`

        Cell Width (px)

      - `cols: optional number`

        Columns

      - `gap: optional number`

        Gap Between Cells (px)

      - `rows: optional number`

        Rows

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "boomerang-video"`

      - `"boomerang-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { include_audio, speed }`

      Action parameters

      - `include_audio: optional boolean`

        Include Audio

      - `speed: optional number`

        Speed

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "reverse-video"`

      - `"reverse-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { audio_mode }`

      Action parameters

      - `audio_mode: optional "strip" or "reverse" or "keep"`

        Audio

        - `"strip"`

        - `"reverse"`

        - `"keep"`

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "video-to-long-exposure"`

      - `"video-to-long-exposure"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { blend_mode, frame_stride, max_frames }`

      Action parameters

      - `blend_mode: optional "average" or "lighten" or "darken"`

        Blend Mode

        - `"average"`

        - `"lighten"`

        - `"darken"`

      - `frame_stride: optional number`

        Frame Stride (sample every N frames)

      - `max_frames: optional number`

        Max Frames to Sample

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "video-effect"`

      - `"video-effect"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { chromatic_offset, effect, grain_strength, 3 more }`

      Action parameters

      - `chromatic_offset: optional number`

        Channel Offset (px)

      - `effect: optional "vignette" or "grain" or "pixelate" or 3 more`

        Effect

        - `"vignette"`

        - `"grain"`

        - `"pixelate"`

        - `"shake"`

        - `"chromatic"`

        - `"vhs"`

      - `grain_strength: optional number`

        Grain Strength

      - `pixel_block_size: optional number`

        Block Size (px)

      - `shake_amount: optional number`

        Shake Amount (px)

      - `vignette_angle: optional number`

        Vignette Falloff

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "color-filter-video"`

      - `"color-filter-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { bw_threshold, filter, grain, 2 more }`

      Action parameters

      - `bw_threshold: optional number`

        B&W Threshold

      - `filter: optional "grayscale" or "sepia" or "invert" or 9 more`

        Filter

        - `"grayscale"`

        - `"sepia"`

        - `"invert"`

        - `"bw"`

        - `"posterize"`

        - `"solarize"`

        - `"clarendon"`

        - `"moon"`

        - `"nashville"`

        - `"noir"`

        - `"fade"`

        - `"crossprocess"`

      - `grain: optional number`

        Grain

      - `posterize_bits: optional number`

        Posterize Bits

      - `solarize_threshold: optional number`

        Solarize Threshold

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "speed-up-video"`

      - `"speed-up-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { factor, keep_audio }`

      Action parameters

      - `factor: optional number`

        Speed Factor (x)

      - `keep_audio: optional boolean`

        Keep Audio (pitch-preserved)

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "slow-down-video"`

      - `"slow-down-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { factor, keep_audio, smoothing }`

      Action parameters

      - `factor: optional number`

        Slow Factor (x)

      - `keep_audio: optional boolean`

        Keep Audio (pitch-preserved)

      - `smoothing: optional "off" or "blend" or "motion"`

        Smoothing

        - `"off"`

        - `"blend"`

        - `"motion"`

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "duplicate-video"`

      - `"duplicate-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { count }`

      Action parameters

      - `count: optional number`

        Copies

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "greenscreen-video"`

      - `"greenscreen-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { blend, color_preset, custom_color, 2 more }`

      Action parameters

      - `blend: optional number`

        Edge Blend (softness)

      - `color_preset: optional "green" or "blue" or "custom"`

        Background Preset

        - `"green"`

        - `"blue"`

        - `"custom"`

      - `custom_color: optional string`

        Custom Background Color

      - `similarity: optional number`

        Similarity (how close to key color counts)

      - `spill: optional boolean`

        Spill Suppression

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "resize-video"`

      - `"resize-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { custom_resolution, resolution }`

      Action parameters

      - `custom_resolution: optional number`

        Custom Resolution (px)

      - `resolution: optional "240" or "360" or "480" or 6 more`

        Resolution

        - `"240"`

        - `"360"`

        - `"480"`

        - `"540"`

        - `"720"`

        - `"1080"`

        - `"1440"`

        - `"2160"`

        - `"custom"`

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "change-video-ar"`

      - `"change-video-ar"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { aspect_ratio, background_mode, blur_amount, 2 more }`

      Action parameters

      - `aspect_ratio: optional "1:1" or "16:9" or "9:16" or 5 more`

        Aspect Ratio

        - `"1:1"`

        - `"16:9"`

        - `"9:16"`

        - `"4:3"`

        - `"3:4"`

        - `"3:2"`

        - `"2:3"`

        - `"21:9"`

      - `background_mode: optional "solid" or "blur"`

        Background

        - `"solid"`

        - `"blur"`

      - `blur_amount: optional number`

        Blur Amount

      - `fit: optional "crop" or "pad"`

        Fit

        - `"crop"`

        - `"pad"`

      - `pad_color: optional string`

        Pad Color

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "split-audio-from-video"`

      - `"split-audio-from-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { audio_format }`

      Action parameters

      - `audio_format: optional "auto" or "m4a" or "mp3" or "wav"`

        Audio Format

        - `"auto"`

        - `"m4a"`

        - `"mp3"`

        - `"wav"`

  - `object { action_id, inputs, project_id, 2 more }`

    - `action_id: "merge-audio-into-video"`

      - `"merge-audio-into-video"`

    - `inputs: array of object { type, name, text, url }`

      Action inputs. Direct action runs are headless and read inputs from URLs/text rather than canvas edges.

      - `type: "image" or "video" or "audio" or "text"`

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name: optional string`

        Optional input name

      - `text: optional string`

        Input text value

      - `url: optional string`

        Input media URL

    - `project_id: string`

      Project identifier. Use the public API ID returned by list projects; it must start with prj_. Used for ownership, billing, and run history. Direct action runs do not mutate the project canvas.

    - `workspace_id: string`

      Workspace identifier. Use the public API ID returned by list workspaces; it must start with ws_.

    - `params: optional object { duration }`

      Action parameters

      - `duration: optional "shortest" or "video" or "audio"`

        Duration

        - `"shortest"`

        - `"video"`

        - `"audio"`

### Returns

- `charged_cost: number`

  Cost charged in USD

- `estimated_seconds: number`

- `run_id: string`

  Run identifier

- `type: "generation" or "technique" or "action"`

  Run type

  - `"generation"`

  - `"technique"`

  - `"action"`

- `action: optional object { action_id }`

  - `action_id: "color-grade-image-browser" or "overlay-image-browser" or "draw-image-browser" or 37 more`

    Action identifier

    - `"color-grade-image-browser"`

    - `"overlay-image-browser"`

    - `"draw-image-browser"`

    - `"crop-image-browser"`

    - `"scene-3d-image-browser"`

    - `"blur-image-browser"`

    - `"change-image-ar-browser"`

    - `"rotate-image-browser"`

    - `"color-filter-image-browser"`

    - `"color-tint-image-browser"`

    - `"filter-color-image-browser"`

    - `"duplicate-image-browser"`

    - `"side-by-side-composite-browser"`

    - `"add-shape-to-image-browser"`

    - `"add-text-to-image-browser"`

    - `"qr-code-generator-browser"`

    - `"resize-image-browser"`

    - `"shader-effect-browser"`

    - `"split-text-browser"`

    - `"find-and-replace-text-browser"`

    - `"concat-text-browser"`

    - `"ken-burns-video"`

    - `"stitch-videos"`

    - `"split-video"`

    - `"extract-video-frames"`

    - `"color-grade-video"`

    - `"video-to-frame-grid"`

    - `"boomerang-video"`

    - `"reverse-video"`

    - `"video-to-long-exposure"`

    - `"video-effect"`

    - `"color-filter-video"`

    - `"speed-up-video"`

    - `"slow-down-video"`

    - `"duplicate-video"`

    - `"greenscreen-video"`

    - `"resize-video"`

    - `"change-video-ar"`

    - `"split-audio-from-video"`

    - `"merge-audio-into-video"`

- `model: optional object { model_id }`

  - `model_id: string`

    Model identifier

- `poll_url: optional string`

  URL to poll pending/running runs or fetch completed/failed run details.

- `project_id: optional string`

  Project identifier

- `technique: optional object { name, technique_id }`

  - `name: string`

    Technique name

  - `technique_id: string`

    Technique identifier

### Example

```http
curl https://app.flora.ai/api/v1/runs/action \
    -H 'Content-Type: application/json' \
    -H "Authorization: Bearer $FLORA_API_KEY" \
    -d '{
          "action_id": "color-grade-image-browser",
          "inputs": [
            {
              "type": "image"
            }
          ],
          "project_id": "prj_abc123",
          "workspace_id": "ws_abc123"
        }'
```

#### Response

```json
{
  "charged_cost": 0,
  "estimated_seconds": 0,
  "run_id": "run_abc123",
  "type": "generation",
  "action": {
    "action_id": "color-grade-image-browser"
  },
  "model": {
    "model_id": "t2i-flux-2-pro"
  },
  "poll_url": "https://example.com",
  "project_id": "prj_abc123",
  "technique": {
    "name": "name",
    "technique_id": "tech_abcd1234"
  }
}
```

## Domain Types

### Action List Response

- `ActionListResponse object { actions }`

  - `actions: array of object { action_id, charged_cost, description, 5 more }`

    - `action_id: "color-grade-image-browser" or "overlay-image-browser" or "draw-image-browser" or 37 more`

      Action identifier

      - `"color-grade-image-browser"`

      - `"overlay-image-browser"`

      - `"draw-image-browser"`

      - `"crop-image-browser"`

      - `"scene-3d-image-browser"`

      - `"blur-image-browser"`

      - `"change-image-ar-browser"`

      - `"rotate-image-browser"`

      - `"color-filter-image-browser"`

      - `"color-tint-image-browser"`

      - `"filter-color-image-browser"`

      - `"duplicate-image-browser"`

      - `"side-by-side-composite-browser"`

      - `"add-shape-to-image-browser"`

      - `"add-text-to-image-browser"`

      - `"qr-code-generator-browser"`

      - `"resize-image-browser"`

      - `"shader-effect-browser"`

      - `"split-text-browser"`

      - `"find-and-replace-text-browser"`

      - `"concat-text-browser"`

      - `"ken-burns-video"`

      - `"stitch-videos"`

      - `"split-video"`

      - `"extract-video-frames"`

      - `"color-grade-video"`

      - `"video-to-frame-grid"`

      - `"boomerang-video"`

      - `"reverse-video"`

      - `"video-to-long-exposure"`

      - `"video-effect"`

      - `"color-filter-video"`

      - `"speed-up-video"`

      - `"slow-down-video"`

      - `"duplicate-video"`

      - `"greenscreen-video"`

      - `"resize-video"`

      - `"change-video-ar"`

      - `"split-audio-from-video"`

      - `"merge-audio-into-video"`

    - `charged_cost: number`

      Cost per execution in USD

    - `description: string`

      Action description

    - `inputs: array of object { name, type, dynamic, 2 more }`

      Action input slots

      - `name: string`

        Action input or output name

      - `type: "image" or "video" or "text" or "audio"`

        Action input or output media type

        - `"image"`

        - `"video"`

        - `"text"`

        - `"audio"`

      - `dynamic: optional boolean`

        Deprecated alias for `multiple: true`. Mirrors `multiple` for back-compat.

      - `multiple: optional true or object { max, min }`

        Many-connections form. `true` is unbounded shorthand; the object form sets explicit min/max bounds.

        - `true`

          - `true`

        - `object { max, min }`

          - `max: optional number`

          - `min: optional number`

      - `optional: optional boolean`

        Whether the slot allows zero connections in single-input mode. Ignored when `multiple` is the object form (use `min: 0` there instead).

    - `language: "javascript" or "python"`

      Action runtime language

      - `"javascript"`

      - `"python"`

    - `name: string`

      Action name

    - `outputs: array of object { name, type, dynamic, 2 more }`

      Action output slots

      - `name: string`

        Action input or output name

      - `type: "image" or "video" or "text" or "audio"`

        Action input or output media type

        - `"image"`

        - `"video"`

        - `"text"`

        - `"audio"`

      - `dynamic: optional boolean`

        Deprecated alias for `multiple: true`. Mirrors `multiple` for back-compat.

      - `multiple: optional true or object { max, min }`

        Many-connections form. `true` is unbounded shorthand; the object form sets explicit min/max bounds.

        - `true`

          - `true`

        - `object { max, min }`

          - `max: optional number`

          - `min: optional number`

      - `optional: optional boolean`

        Whether the slot allows zero connections in single-input mode. Ignored when `multiple` is the object form (use `min: 0` there instead).

    - `params: array of object { key, type, available_values, 6 more }`

      Action parameters

      - `key: string`

        Action parameter key

      - `type: string`

        Action parameter control type

      - `available_values: optional array of object { label, value, description }`

        Allowed parameter values

        - `label: string`

        - `value: string`

        - `description: optional string`

      - `default_value: optional unknown`

        Default parameter value

      - `info_tooltip: optional string`

        Action parameter description

      - `label: optional string`

        Action parameter label

      - `max_number_value: optional number`

      - `min_number_value: optional number`

      - `number_step: optional number`

### Action Retrieve Response

- `ActionRetrieveResponse object { action_id, charged_cost, description, 5 more }`

  - `action_id: "color-grade-image-browser" or "overlay-image-browser" or "draw-image-browser" or 37 more`

    Action identifier

    - `"color-grade-image-browser"`

    - `"overlay-image-browser"`

    - `"draw-image-browser"`

    - `"crop-image-browser"`

    - `"scene-3d-image-browser"`

    - `"blur-image-browser"`

    - `"change-image-ar-browser"`

    - `"rotate-image-browser"`

    - `"color-filter-image-browser"`

    - `"color-tint-image-browser"`

    - `"filter-color-image-browser"`

    - `"duplicate-image-browser"`

    - `"side-by-side-composite-browser"`

    - `"add-shape-to-image-browser"`

    - `"add-text-to-image-browser"`

    - `"qr-code-generator-browser"`

    - `"resize-image-browser"`

    - `"shader-effect-browser"`

    - `"split-text-browser"`

    - `"find-and-replace-text-browser"`

    - `"concat-text-browser"`

    - `"ken-burns-video"`

    - `"stitch-videos"`

    - `"split-video"`

    - `"extract-video-frames"`

    - `"color-grade-video"`

    - `"video-to-frame-grid"`

    - `"boomerang-video"`

    - `"reverse-video"`

    - `"video-to-long-exposure"`

    - `"video-effect"`

    - `"color-filter-video"`

    - `"speed-up-video"`

    - `"slow-down-video"`

    - `"duplicate-video"`

    - `"greenscreen-video"`

    - `"resize-video"`

    - `"change-video-ar"`

    - `"split-audio-from-video"`

    - `"merge-audio-into-video"`

  - `charged_cost: number`

    Cost per execution in USD

  - `description: string`

    Action description

  - `inputs: array of object { name, type, dynamic, 2 more }`

    Action input slots

    - `name: string`

      Action input or output name

    - `type: "image" or "video" or "text" or "audio"`

      Action input or output media type

      - `"image"`

      - `"video"`

      - `"text"`

      - `"audio"`

    - `dynamic: optional boolean`

      Deprecated alias for `multiple: true`. Mirrors `multiple` for back-compat.

    - `multiple: optional true or object { max, min }`

      Many-connections form. `true` is unbounded shorthand; the object form sets explicit min/max bounds.

      - `true`

        - `true`

      - `object { max, min }`

        - `max: optional number`

        - `min: optional number`

    - `optional: optional boolean`

      Whether the slot allows zero connections in single-input mode. Ignored when `multiple` is the object form (use `min: 0` there instead).

  - `language: "javascript" or "python"`

    Action runtime language

    - `"javascript"`

    - `"python"`

  - `name: string`

    Action name

  - `outputs: array of object { name, type, dynamic, 2 more }`

    Action output slots

    - `name: string`

      Action input or output name

    - `type: "image" or "video" or "text" or "audio"`

      Action input or output media type

      - `"image"`

      - `"video"`

      - `"text"`

      - `"audio"`

    - `dynamic: optional boolean`

      Deprecated alias for `multiple: true`. Mirrors `multiple` for back-compat.

    - `multiple: optional true or object { max, min }`

      Many-connections form. `true` is unbounded shorthand; the object form sets explicit min/max bounds.

      - `true`

        - `true`

      - `object { max, min }`

        - `max: optional number`

        - `min: optional number`

    - `optional: optional boolean`

      Whether the slot allows zero connections in single-input mode. Ignored when `multiple` is the object form (use `min: 0` there instead).

  - `params: array of object { key, type, available_values, 6 more }`

    Action parameters

    - `key: string`

      Action parameter key

    - `type: string`

      Action parameter control type

    - `available_values: optional array of object { label, value, description }`

      Allowed parameter values

      - `label: string`

      - `value: string`

      - `description: optional string`

    - `default_value: optional unknown`

      Default parameter value

    - `info_tooltip: optional string`

      Action parameter description

    - `label: optional string`

      Action parameter label

    - `max_number_value: optional number`

    - `min_number_value: optional number`

    - `number_step: optional number`

### Action Run Response

- `ActionRunResponse object { charged_cost, estimated_seconds, run_id, 6 more }`

  - `charged_cost: number`

    Cost charged in USD

  - `estimated_seconds: number`

  - `run_id: string`

    Run identifier

  - `type: "generation" or "technique" or "action"`

    Run type

    - `"generation"`

    - `"technique"`

    - `"action"`

  - `action: optional object { action_id }`

    - `action_id: "color-grade-image-browser" or "overlay-image-browser" or "draw-image-browser" or 37 more`

      Action identifier

      - `"color-grade-image-browser"`

      - `"overlay-image-browser"`

      - `"draw-image-browser"`

      - `"crop-image-browser"`

      - `"scene-3d-image-browser"`

      - `"blur-image-browser"`

      - `"change-image-ar-browser"`

      - `"rotate-image-browser"`

      - `"color-filter-image-browser"`

      - `"color-tint-image-browser"`

      - `"filter-color-image-browser"`

      - `"duplicate-image-browser"`

      - `"side-by-side-composite-browser"`

      - `"add-shape-to-image-browser"`

      - `"add-text-to-image-browser"`

      - `"qr-code-generator-browser"`

      - `"resize-image-browser"`

      - `"shader-effect-browser"`

      - `"split-text-browser"`

      - `"find-and-replace-text-browser"`

      - `"concat-text-browser"`

      - `"ken-burns-video"`

      - `"stitch-videos"`

      - `"split-video"`

      - `"extract-video-frames"`

      - `"color-grade-video"`

      - `"video-to-frame-grid"`

      - `"boomerang-video"`

      - `"reverse-video"`

      - `"video-to-long-exposure"`

      - `"video-effect"`

      - `"color-filter-video"`

      - `"speed-up-video"`

      - `"slow-down-video"`

      - `"duplicate-video"`

      - `"greenscreen-video"`

      - `"resize-video"`

      - `"change-video-ar"`

      - `"split-audio-from-video"`

      - `"merge-audio-into-video"`

  - `model: optional object { model_id }`

    - `model_id: string`

      Model identifier

  - `poll_url: optional string`

    URL to poll pending/running runs or fetch completed/failed run details.

  - `project_id: optional string`

    Project identifier

  - `technique: optional object { name, technique_id }`

    - `name: string`

      Technique name

    - `technique_id: string`

      Technique identifier
