---
title: "List Status Page Subscribers"
description: "Returns the email and RSS subscribers of a status page, plus exact counts by status. Requires admin or editor role."
---

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

## 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" \
  -H "Authorization: Bearer $TOKEN"
```

## Response

```json
{
  "total": 12,
  "confirmed": 9,
  "pending": 2,
  "unsubscribed": 1,
  "subscribers": [
    {
      "id": 42,
      "email": "reader@example.com",
      "status": "confirmed",
      "locale": "en",
      "createdAt": "2026-08-01T12:00:00.000Z",
      "confirmedAt": "2026-08-01T12:05:00.000Z"
    }
  ]
}
```

`status` is one of `pending`, `confirmed`, or `unsubscribed`. `confirmedAt` is `null` until the subscriber confirms their address. `total`, `confirmed`, `pending`, and `unsubscribed` are exact counts computed independently of the `subscribers` array; `subscribers` itself is capped at 5000 rows, newest first, use [Export Status Page Subscribers](./export-subscribers) to retrieve every row on a larger page.

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

The last two rows share the same message but differ in `data.code`: a malformed or entirely unknown `id` never carries a `data.code`; only an `id` that resolves to a row you may not see does.

