> For the complete documentation index, see [llms.txt](https://docs.monolithforensics.com/monolith/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.monolithforensics.com/monolith/monolith-api/notes-api/export-notes.md).

# Export Notes

Render one or more notes to a **PDF** or **DOCX** document. The rendered file is stored in the case's file storage and the response includes a signed URL you can download immediately—from a browser or any HTTP client. No API key is needed for the download itself.

All notes in a single export must belong to the same case.

```http
POST /v1/notes/export
Content-Type: application/json
```

## Request body

| Field         | Type                | Required | Description                                                                                                                 |
| ------------- | ------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------- |
| `uuid`        | string or string\[] | **yes**  | UUID(s) of the notes to export. A single string is accepted and treated as a one-element list.                              |
| `format`      | string              | **yes**  | `pdf` or `docx`.                                                                                                            |
| `font`        | string              | no       | Font family for DOCX output. Ignored for PDF—the PDF template uses its own font stack.                                      |
| `timezone`    | string              | no       | IANA timezone name (e.g. `America/Chicago`) used to render note timestamps. Default `UTC`.                                  |
| `date_format` | string              | no       | Format string for rendered timestamps (moment.js syntax). Default `YYYY-MM-DD HH:mm:ss`. The UTC offset is always appended. |

## Example request

```json
{
  "uuid": [
    "0f8fad5b-d9cb-469f-a165-70867728950e",
    "3d1f2c44-9b0a-4f7e-8c53-6a1e9d20b471"
  ],
  "format": "pdf",
  "timezone": "America/Chicago",
  "date_format": "MMM D, YYYY h:mm A"
}
```

## Response — `200 OK`

```json
{
  "success": true,
  "message": "Notes exported successfully",
  "filename": "notes-export-2026-08-03T16-45-12.pdf",
  "signedUrl": "https://storage.example.com/Cases/2026-0042/...&X-Amz-Signature=...",
  "file_uuid": "b7e4a1c9-55d2-4f0e-8f3a-91c6d2e07a44"
}
```

* `signedUrl` — Time-limited download link for the rendered document. Download promptly; the signature expires.
* `file_uuid` — UUID of the file record created in the case, so the export also appears in the case's files.
* Note images are embedded in the rendered document automatically.

## Examples

### Export a note to PDF and save it locally

```python
import requests

export = session.post(f"{BASE_URL}/notes/export", json={
    "uuid": "0f8fad5b-d9cb-469f-a165-70867728950e",
    "format": "pdf",
}).json()

# The signed URL is downloadable without the API key
download = requests.get(export["signedUrl"])
download.raise_for_status()
with open(export["filename"], "wb") as f:
    f.write(download.content)
print(f"Saved {export['filename']} ({len(download.content)} bytes)")
```

### Export every note in a case to a single DOCX

```python
case_uuid = "9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d"

notes = session.get(f"{BASE_URL}/notes", params={
    "case_uuid": case_uuid,
    "is_folder": "false",
}).json()["data"]

export = session.post(f"{BASE_URL}/notes/export", json={
    "uuid": [n["uuid"] for n in notes],
    "format": "docx",
    "font": "Calibri",
    "timezone": "America/New_York",
}).json()

print("Download:", export["signedUrl"])
```

## Errors

| Status | Body                                                             | Cause                                                          |
| ------ | ---------------------------------------------------------------- | -------------------------------------------------------------- |
| `400`  | `{"message": "Invalid request body", "errors": [...]}`           | Missing `uuid`, `format` not `pdf`/`docx`, invalid `timezone`. |
| `400`  | `{"message": "All exported notes must belong to the same case"}` | The requested notes span multiple cases.                       |
| `404`  | `{"message": "Notes not found"}`                                 | None of the requested UUIDs matched a note.                    |
| `401`  | `Unauthorized`                                                   | Missing or invalid API key.                                    |
