---
title: "Dry Run"
method: POST
path: "/projects/{project_id}/dashboards/dry-run"
tags: ["dashboards"]
---

# Dry Run

`POST /projects/{project_id}/dashboards/dry-run`

Execute an unsaved recipe once, never touching the cache.

## Path parameters

- `project_id` string, uuid, required

## Request body

- DryRunRequest
  - `config` PlotConfig, required — What a saved plot stores.
    - `plan` Plan, required — The declarative data plan: named steps executed in order.
      - `steps` object, required
      - `caps` Caps — Ceilings a plan may lower but never raise above the server maximums.
        - `max_sources` integer
        - `max_summary_rows` integer
        - `max_series_points` integer
        - `max_list_rows` integer
    - `transform` string, required
    - `params` object
  - `params` object

## Response `200`

Successful Response

- FigureResult
  - `plot_id` string, uuid, nullable
  - `ok` boolean, required
  - `figure` object, nullable
  - `error` string, nullable
  - `warnings` string[]
  - `provenance_summary` object
  - `cached` boolean
  - `cost` Cost
    - `sources` integer
    - `rows` integer
    - `points` integer
    - `ms` integer
  - `summary` FigureSummary — What the agent sees about a rendered figure without the whole payload.
    - `traces` integer, required
    - `points` integer, required
    - `trace_names` string[], required
    - `x_range` number[], nullable
    - `y_range` number[], nullable
  - `datasets_summary` object, nullable
  - `controls` object, nullable

## Other responses

- `422` — Validation Error

## Changes

- **2026-09-26** `8ed5440390f0` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/ionworks/apis/fastapi/changes/projects/:project_id/dashboards/dry-run/post.md)

---

[API](https://skmtc.dev/ionworks/apis/fastapi.md) · [All operations](https://skmtc.dev/ionworks/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc.dev/ionworks/apis/fastapi/revisions/8ed5440390f0?raw)
