> ## 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.

# Report Sharing & Delivery

> Share reports as public links, email them as PDF, and revoke access — with white-label branding.

Share a Report Builder report outside your team: generate a public viewer link, email the report as a PDF, or revoke a link at any time. All routes are team-scoped and require the `member` role.

<Note>
  On non-Scale plans, generated PDFs carry a small SnowSEO **watermark** and brand-mark. On the **Scale** plan (with white-label configured for the organization), the watermark is suppressed and your own branding is stamped instead.
</Note>

The share and export routes accept the same rendered-page body the editor sends:

| Field         | Description                                                                                                                              |
| ------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `pages`       | Required. Array of rendered pages, each with an `image` (data URL) and optional `branding` box (`x`, `y`, `w`, `h`, `disableWhiteLabel`) |
| `pageWidth`   | Required. Page width in pixels                                                                                                           |
| `pageHeight`  | Required. Page height in pixels                                                                                                          |
| `orientation` | Optional `portrait` or `landscape`                                                                                                       |
| `title`       | Report title used for the PDF filename and metadata                                                                                      |
| `author`      | Optional author metadata                                                                                                                 |

***

## Create a Share Link

`POST /reports/{id}/share/link`

Render the report to a PDF, upload it to storage, and mint a public **shareToken**. Returns `{ url, token }`, where `url` is the public viewer link (`/r/{token}`). Re-generating replaces the previous share object. Body is the rendered-page payload above.

***

## Get the Current Share Link

`GET /reports/{id}/share`

Return the report's active share link as `{ share: { url, token } }`, or `{ share: null }` when no link exists.

***

## Revoke a Share Link

`DELETE /reports/share/{token}`

Revoke a share link by its token: clears the report's `shareToken`, deletes the stored PDF, and returns `{ success: true }`. Returns `404` if the token isn't a live share for the team.

***

## Email a Report

`POST /reports/{id}/share/email`

Render the report to a PDF and email it as an attachment to one or more recipients, using the organization's white-label email branding when configured. Each delivered send is logged to the org **"Reports Sent"** KPI.

In addition to the rendered-page fields above, the body accepts:

| Field        | Description                                                     |
| ------------ | --------------------------------------------------------------- |
| `recipients` | Required. 1–10 valid email addresses (deduplicated, lowercased) |
| `message`    | Optional note included in the email body                        |

Returns `{ sent, failed }` — arrays of the recipient addresses that succeeded or failed.

<Tip>
  This route is rate-limited more tightly than the others (roughly 10 requests/minute per team) to protect email deliverability.
</Tip>

***

## Export a PDF

`POST /reports/{id}/export-pdf`

<Info>
  This endpoint is hidden from the interactive API reference (`hide: true`). It streams a binary PDF response rather than JSON.
</Info>

Generate a server-stamped PDF of the report and return it as a file download (`Content-Type: application/pdf`, `Content-Disposition: attachment`). The watermark / brand-mark is applied server-side based on the organization's white-label status.

### Request body

| Field         | Description                                                            |
| ------------- | ---------------------------------------------------------------------- |
| `pages`       | Required. Array of `{ image, branding? }` — `image` must be a data URL |
| `pageWidth`   | Required. Page width (number)                                          |
| `pageHeight`  | Required. Page height (number)                                         |
| `orientation` | Optional `portrait` or `landscape`                                     |
| `title`       | Optional title (used for the PDF filename)                             |
| `author`      | Optional author metadata                                               |

### Responses

| Status | Body                                              |
| ------ | ------------------------------------------------- |
| `200`  | Binary PDF (`application/pdf`)                    |
| `400`  | `{ error }` — missing/invalid pages or dimensions |
| `403`  | `{ error }` — blocked by plan/usage limits        |
| `404`  | `{ error }` — report not found for the team       |
| `500`  | `{ error }` — PDF generation failed               |


## OpenAPI

````yaml POST /v3/reports/{id}/share/link
openapi: 3.0.0
info:
  title: SnowSEO API
  description: API documentation for SnowSEO
  version: 1.0.0
servers:
  - url: https://api.snowseo.com
    description: Production server
security: []
tags:
  - name: Keywords
    description: Keyword research and suggestion end-points
  - name: Onboarding
    description: Brand onboarding and strategy end-points
  - name: Brands
    description: Brand management end-points
  - name: Organizations
    description: Organization and member end-points
  - name: Integrations
    description: Google Search Console and other integrations
  - name: Utilities
    description: Common utility end-points like screenshots and uploads
externalDocs:
  url: https://snowseo.com/docs
  description: Find more info here
paths: {}

````