## Start an action run

`client.actions.run(ActionRunParamsbody, RequestOptionsoptions?): ActionRunResponse`

**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.

### Parameters

- `ActionRunParams = Variant0 | Variant1 | Variant2 | 37 more`

  - `ActionRunParamsBase`

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

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

    - `inputs: Array<Input>`

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

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

        Action input type

        - `"image"`

        - `"video"`

        - `"audio"`

        - `"text"`

      - `name?: string`

        Optional input name

      - `text?: string`

        Input text value

      - `url?: 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?: Params`

      Action parameters

      - `advanced?: boolean`

        Show additional controls

      - `brightness?: number`

        Brightness

      - `contrast?: number`

        Contrast

      - `highlights?: number`

        Highlights

      - `hue_shift?: number`

        Hue Shift (deg)

      - `saturation?: number`

        Saturation

      - `shadows?: number`

        Shadows

      - `show_scope?: boolean`

        Show Color Scope in preview

      - `tint?: number`

        Tint (Green-Magenta)

      - `warmth?: number`

        Warmth

  - `Variant0 extends ActionRunParamsBase`

  - `Variant1 extends ActionRunParamsBase`

  - `Variant2 extends ActionRunParamsBase`

  - `Variant3 extends ActionRunParamsBase`

  - `Variant4 extends ActionRunParamsBase`

  - `Variant5 extends ActionRunParamsBase`

  - `Variant6 extends ActionRunParamsBase`

  - `Variant7 extends ActionRunParamsBase`

  - `Variant8 extends ActionRunParamsBase`

  - `Variant9 extends ActionRunParamsBase`

  - `Variant10 extends ActionRunParamsBase`

  - `Variant11 extends ActionRunParamsBase`

  - `Variant12 extends ActionRunParamsBase`

  - `Variant13 extends ActionRunParamsBase`

  - `Variant14 extends ActionRunParamsBase`

  - `Variant15 extends ActionRunParamsBase`

  - `Variant16 extends ActionRunParamsBase`

  - `Variant17 extends ActionRunParamsBase`

  - `Variant18 extends ActionRunParamsBase`

  - `Variant19 extends ActionRunParamsBase`

  - `Variant20 extends ActionRunParamsBase`

  - `Variant21 extends ActionRunParamsBase`

  - `Variant22 extends ActionRunParamsBase`

  - `Variant23 extends ActionRunParamsBase`

  - `Variant24 extends ActionRunParamsBase`

  - `Variant25 extends ActionRunParamsBase`

  - `Variant26 extends ActionRunParamsBase`

  - `Variant27 extends ActionRunParamsBase`

  - `Variant28 extends ActionRunParamsBase`

  - `Variant29 extends ActionRunParamsBase`

  - `Variant30 extends ActionRunParamsBase`

  - `Variant31 extends ActionRunParamsBase`

  - `Variant32 extends ActionRunParamsBase`

  - `Variant33 extends ActionRunParamsBase`

  - `Variant34 extends ActionRunParamsBase`

  - `Variant35 extends ActionRunParamsBase`

  - `Variant36 extends ActionRunParamsBase`

  - `Variant37 extends ActionRunParamsBase`

  - `Variant38 extends ActionRunParamsBase`

  - `Variant39 extends ActionRunParamsBase`

### Returns

- `ActionRunResponse`

  - `charged_cost: number`

    Cost charged in USD

  - `estimated_seconds: number | null`

  - `run_id: string`

    Run identifier

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

    Run type

    - `"generation"`

    - `"technique"`

    - `"action"`

  - `action?: Action | null`

    - `action_id: "color-grade-image-browser" | "overlay-image-browser" | "draw-image-browser" | 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?: Model | null`

    - `model_id: string`

      Model identifier

  - `poll_url?: string | null`

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

  - `project_id?: string | null`

    Project identifier

  - `technique?: Technique | null`

    - `name: string`

      Technique name

    - `technique_id: string`

      Technique identifier

### Example

```typescript
import FLORA from '@flora-ai/flora';

const client = new FLORA({
  apiKey: process.env['FLORA_API_KEY'], // This is the default and can be omitted
});

const response = await client.actions.run({
  action_id: 'color-grade-image-browser',
  inputs: [{ type: 'image' }],
  project_id: 'prj_abc123',
  workspace_id: 'ws_abc123',
});

console.log(response.run_id);
```

#### 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"
  }
}
```
