> ## Documentation Index
> Fetch the complete documentation index at: https://snowseo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Reports

> Create, read, update, and delete client-ready reports built in the Report Builder.

Manage the reports built with **Report Builder** — the drag-and-drop canvas for client-ready SEO, traffic, audit, and AI-visibility reports. Every route is scoped to the selected team (brand) and requires at least the `member` role.

<Note>
  Listing reports omits the heavy `content` document to keep payloads light. Fetch a single report to get its full `content`.
</Note>

### Report fields

| Field          | Description                                                                                   |
| -------------- | --------------------------------------------------------------------------------------------- |
| `id`           | Report identifier                                                                             |
| `name`         | Report name                                                                                   |
| `templateSlug` | Slug of the template it was created from, or `null` for a blank report                        |
| `content`      | The full report document (pages, widgets, theme). Returned only when fetching a single report |
| `createdAt`    | ISO timestamp of creation                                                                     |
| `updatedAt`    | ISO timestamp of the last edit (autosave target)                                              |

***

## List Reports

`GET /reports`

List every report for the selected team, newest edit first. Returns `{ reports }` with `content` omitted from each row.

***

## List Templates

`GET /reports/templates`

Return the visible prebuilt report templates (managed by SnowSEO admins). Each template exposes `slug`, `name`, `description`, `icon`, `accent`, and `content`, ordered by sort order.

***

## Get a Report

`GET /reports/{id}`

Fetch one report including its full `content` document. Returns `404` if the report doesn't belong to the team.

***

## Create a Report

`POST /reports`

Create a report from a name and an initial document. Body fields:

| Field          | Description                                                             |
| -------------- | ----------------------------------------------------------------------- |
| `name`         | Required. Report name (trimmed, must be non-empty)                      |
| `content`      | Required. The initial report document                                   |
| `templateSlug` | Optional slug of a template to associate. An unknown slug returns `400` |

Responds `201` with `{ report }` (full detail).

***

## Update a Report

`PATCH /reports/{id}`

Update a report's `name`, `content`, and/or `templateSlug` — this is the debounced-autosave target. At least one of the three fields must be present, otherwise `400`. Returns the updated `{ report }`.

***

## Delete a Report

`DELETE /reports/{id}`

Delete a report. Returns `{ success: true }`, or `404` if not found for the team.
