---
title: "Dry Run Definition"
method: POST
path: "/v1/journeys/dry-run"
tags: ["journeys"]
---

# Dry Run Definition

`POST /v1/journeys/dry-run`

## Request

- Base URL: `https://api.cybret.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.cybret.ai/v1/journeys/dry-run`
- Auth: HTTP bearer

## Request body

- DryRunJourneyRequest
  - `definition` JourneyDefinition: Persisted journey body: metadata only, never live credentials.
    - `steps` union[], required
      - union
        - DeclaredNavigateStep
          - `action` 'navigate'
          - `url` string, nullable
          - `wait_until` 'commit' | 'domcontentloaded' | 'load' | 'networkidle'
        - DeclaredClickStep
          - `action` 'click'
          - `selector` string, required
          - `fallback_selectors` string[]
        - DeclaredFillStep: Fill either a non-secret value or a secret reference — never both.
          - `action` 'fill'
          - `selector` string, required
          - `value` string, nullable
          - `secret_ref` string, nullable
          - `is_secret` boolean
          - `fallback_selectors` string[]
        - DeclaredPressStep
          - `action` 'press'
          - `selector` string, required
          - `key` string, required
          - `fallback_selectors` string[]
        - DeclaredWaitForSelectorStep
          - `action` 'wait_for_selector'
          - `selector` string, required
          - `timeout_ms` number
          - `fallback_selectors` string[]
        - DeclaredWaitForUrlStep
          - `action` 'wait_for_url'
          - `url` string, required
          - `timeout_ms` number
        - DeclaredPauseStep
          - `action` 'pause'
          - `milliseconds` number, required
    - `allowed_domains` string[]
    - `max_duration_ms` integer
    - `login_success` LoginSuccessCriteria: Independent post-login checks (no credential material).
      - `expected_url_substring` string, nullable
      - `success_selector` string, nullable
      - `login_form_absent_selector` string, nullable
    - `allows_state_changing` boolean

## Response `200`

Successful Response

- DryRunResponse
  - `read_only` boolean, required
  - `ok` boolean, required
  - `steps_exercised` integer, required
  - `max_steps` integer, required
  - `max_duration_ms` integer, required
  - `estimated_duration_ms` number, required
  - `errors` string[], required
  - `previews` StepPreviewResponse[], required
    - `index` integer, required
    - `action` string, required
    - `summary` string, required
    - `touches_secret` boolean, required
    - `navigates` boolean, required
    - `estimated_timeout_ms` number, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/cybret/apis/api-scanner-control-plane.md) · [All operations](https://skmtc.dev/cybret/apis/api-scanner-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/cybret/apis/api-scanner-control-plane/revisions/4c9b522246af?raw)
