Request
- Base URL: /api (relative, and the document was published on a file host, not at the API’s origin)
- URL: /api/projects/{project_id}/workflows/dry-run
- Auth: HTTP bearer
Path parameters
Project ID
Request body
Optional CPU override applied after parsing YAML (clamped server-side). When Some, this takes precedence over cpu_limit inside the YAML — lets the CLI pass --cpu without rewriting the YAML text.
Optional error group to link this dry-run to. When set, the executor's load_error_context path injects {{error_type}} / {{error_message}} / {{stack_trace}} into the prompt — same behaviour as a committed workflow triggered with trigger_source_type = "error_group". Must belong to project_id (handler enforces).
Optional memory override in MB (clamped server-side). Same precedence rule as cpu_limit.
Optional context appended to the prompt (e.g. "test against staging only"). Mirrors TriggerAgentRequest.user_context.
Full WorkflowYamlConfig as YAML text. Server validates and re-serializes before storing on the run row.
Response
Ephemeral run created and queued
Name of the agent that created this run, if available.
Slug of the agent that created this run, if available.
AI provider slug that executed this run (e.g. claude_cli, codex_cli, opencode).
Claude CLI session UUID for resuming conversations via --resume.
Report / analysis text produced by the agent (used for report/notification deliverables).
Optional. NULL for ephemeral CLI runs (source = "cli_ephemeral") and historical autofixer runs that pre-date the agent_id column.
Full WorkflowYamlConfig as YAML text. Populated only when source = "cli_ephemeral". Used by the web UI to show a "View YAML" modal so the user can see exactly what the executor ran.
Autofixer phase: "analyzing", "analyzed", "fixing", "fix_ready", "no_fix", "pr_created", or NULL for non-autofixer runs.
Final assembled prompt the AI CLI actually saw (trigger context block + YAML prompt, with error-group fields interpolated). Captured once per run. None for pre-migration rows.
Legacy field — all runs now execute in a sandbox. Kept for backwards-compatible JSON shape; always true.
committed (the run's config lives in project_agents) or cli_ephemeral (the config was uploaded via the CLI for a one-off dry run; see ephemeral_yaml).
User-provided context for this run (e.g. webhook payload, manual instructions).
Changes
No recorded changes to this operation across all 54 revisions of this API.