---
title: "Export Status Page Subscribers"
description: "Downloads every subscriber of a status page as CSV. Requires admin or editor role."
---

`GET /api/status-pages/:id/subscribers/export`

Unlike [List Status Page Subscribers](./list-subscribers), the export is not capped, it returns every row for the page. Each export is recorded in the organization's audit log (page ID and row count only, never the addresses themselves), since this is a bulk download of your subscribers' personal data.

## Path Parameter

| Parameter | Description |
|-----------|-------------|
| `id` | Status page ID or `publicId` (UUID) |

## Example (cURL)

```bash
curl "$BASE_URL/api/status-pages/db58058e-4b58-4d97-a314-3bb8e279a182/subscribers/export" \
  -H "Authorization: Bearer $TOKEN" \
  -o subscribers.csv
```

## Response

`Content-Type: text/csv; charset=utf-8`, `Content-Disposition: attachment; filename="status-page-<id>-subscribers.csv"` (`<id>` is the status page's numeric ID, not its `publicId`).

```csv
"email","status","locale","created_at","confirmed_at"
"reader@example.com","confirmed","en","2026-08-01T12:00:00.000Z","2026-08-01T12:05:00.000Z"
"other@example.com","pending","de","2026-08-02T09:30:00.000Z",""
```

Rows are ordered newest-first by `created_at`. Every field is quoted and embedded quotes are doubled per RFC 4180. A value that would otherwise start with `=`, `+`, `-`, or `@`, or with these characters when preceded by whitespace (tab, space, or carriage return), is prefixed with a single quote so it renders as inert text instead of being evaluated. Subscriber emails are visitor-supplied, so this guards against CSV/formula injection when the file is opened in Excel or Sheets.

## Common errors

- `401 Unauthorized` when you are not authenticated
- `400 User must belong to an organization` (`data.code: userMustBelongToOrg`) when no organization can be derived from the session or token
- `403 Forbidden` when your role is not admin or editor, or your customer scope does not include this status page
- `400 Invalid Status page identifier` when `id` is not a valid numeric ID or UUID (no `data.code`)
- `404 Status page not found` when `id` is well-formed but no status page has that ID (no `data.code`)
- `404 Status page not found` (`data.code: statusPageNotFound`) when `id` resolves to a real status page, but it belongs to a different organization, or is outside your customer scope

