---
title: "Dry-run a flow"
method: POST
path: "/flows/{flowId}/dry-run"
tags: ["Flows"]
---

# Dry-run a flow

`POST /flows/{flowId}/dry-run`

Simulate this flow firing without storing events, enqueuing jobs, or consuming cooldown/rate-limit slots.

Works for every trigger activation type:
- `event`: validates the payload against the event catalog schema and evaluates the trigger conditions.
- `custom`: validates the payload against the custom payload schema (conditions do not apply).
- `schedule`: ignores the payload and reports the next fire time.

The response reports `wouldFire` — whether the flow would actually run right now — alongside the gates that decide it (enabled, device attached, blocked, cooldown). `rateLimited` is informational and is not folded into `wouldFire`.

## Path parameters

- `flowId` string, uuid, required

## Request body

- DryRunFlowBody
  - `payload` object

## Response `200`

Dry-run result

- object
  - `data` FlowDryRunResult, required
    - `activation` 'event' | 'schedule' | 'custom', required
    - `validation` DryRunValidation, required
      - `valid` boolean, required
      - `errors` object[]
        - `field` string, required
        - `message` string, required
    - `conditionsPassed` boolean, nullable, required
    - `nextFireTime` string, nullable, required
    - `rateLimited` boolean, required
    - `gates` DryRunGates, required
      - `enabled` boolean, required
      - `deviceAttached` boolean, required
      - `deviceIds` string[], required
      - `blocked` boolean, required
      - `cooldownActive` boolean, nullable, required
    - `wouldFire` boolean, required
    - `actions` ResolvedAction[], required
      - `name` string, required
      - `service` 'tasks_api' | 'devices_api' | 'agents_api' | 'webhooks', required
      - `method` string, required
      - `params` object
      - `continueOnError` boolean, required
      - `children` unknown[] — Nested child actions (loop/branch bodies), each the same shape as a ResolvedAction.
        - unknown

## Other responses

- `404` — Not Found
- `422` — Validation Error

---

[API](https://skmtc.net/droidrun/apis/droidrun-cloud.md) · [All operations](https://skmtc.net/droidrun/apis/droidrun-cloud/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/droidrun/droidrun-cloud/versions/7f577998739b/schema)
