---
title: reports.run | Doing Work API
description: Run a saved report now: its date range is worked out on the shop's calendar (or around as_of), and the report operation runs with the caller's own permissi
url: https://doingwork.work/docs/reference/reports-run/
---

# reports.run

Run a saved report now: its date range is worked out on the shop's calendar (or around as_of), and the report operation runs with the caller's own permissions. Returns the exact input used and the operation's result.

|  |  |
|---|---|
| Who | Agents can call this |
| REST | `POST /v1/reports/saved/run` |
| MCP tool | `reports_run` |
| Writes | no |
| Area | [Costs, expenses and reports](https://doingwork.work/docs/reference/#costs-expenses-and-reports) |

## When to use it

Run a saved report now: its date range is worked out on the shop's calendar (or around as_of), and the report operation runs with the caller's own permissions. Returns the exact input used and the operation's result.

## What to tell the owner

Tell them what you found in plain words. Don't read back raw fields.

## Input

| Field | Type | Required |
|---|---|---|
| `report_id` | string (uuid) | yes |
| `as_of` | string | no |

## Example

```http
POST https://doingwork.work/v1/reports/saved/run
content-type: application/json
Idempotency-Key: 3f1c...

{
  "report_id": "00000000-0000-4000-8000-000000000000"
}
```

## Output

| Field | Type | Always there |
|---|---|---|
| `report` | object | yes |
| `report.report_id` | string (uuid) | yes |
| `report.name` | string | yes |
| `report.op_id` | string | yes |
| `report.params` | object | yes |
| `report.date_range` | ['string', 'null'] | yes |
| `report.created_by` | string (uuid) | yes |
| `report.created_at` | string (date-time) | yes |
| `report.updated_at` | string (date-time) | yes |
| `input` | object | yes |
| `result` | object | yes |

```json
{
  "report": {
    "report_id": "00000000-0000-4000-8000-000000000000",
    "name": "Ruiz Plumbing",
    "op_id": "00000000-0000-4000-8000-000000000000",
    "params": {},
    "date_range": "...",
    "created_by": "00000000-0000-4000-8000-000000000000",
    "created_at": "...",
    "updated_at": "..."
  },
  "input": {},
  "result": {}
}
```

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
