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

# Status Page Public API

> Access status and incident information programmatically through public JSON API endpoints exposed on your status page custom domain.

## Overview

Rootly exposes a public JSON API on your status page's custom domain, allowing you to programmatically retrieve current status and incident data. These endpoints are available at your custom domain (e.g., `status.example.com`) and respect your status page's existing authentication settings — password-protected and SAML-protected pages are not exposed.

<Info>
  These endpoints are only available on status pages with a [custom domain](/configuration/custom-domain-names-for-status-pages) configured.
</Info>

## Endpoints

### Get Current Status

Returns the overall status of your services along with any active incidents.

```
GET /api/v1/status.json
```

**Response**

```json theme={null}
{
  "page": {
    "name": "Acme Status",
    "url": "https://status.example.com",
    "time_zone": "America/Los_Angeles",
    "updated_at": "2026-03-19T12:00:00Z"
  },
  "status": {
    "indicator": "none",
    "description": "All Systems Operational"
  },
  "incidents": []
}
```

The `status.indicator` field can be one of:

| Indicator     | Description                                      |
| ------------- | ------------------------------------------------ |
| `none`        | All systems operational                          |
| `minor`       | Minor service outage or degraded performance     |
| `major`       | Major service outage or critical incident active |
| `maintenance` | Scheduled maintenance in progress                |

### List Incidents

Returns a paginated list of active incidents, ordered by most recent first.

```
GET /api/v1/incidents.json
```

**Query Parameters**

| Parameter  | Type    | Default | Description                            |
| ---------- | ------- | ------- | -------------------------------------- |
| `page`     | integer | 1       | Page number                            |
| `per_page` | integer | 25      | Number of incidents per page (max 100) |

**Response**

```json theme={null}
{
  "page": {
    "name": "Acme Status",
    "url": "https://status.example.com",
    "time_zone": "America/Los_Angeles",
    "updated_at": "2026-03-19T12:00:00Z"
  },
  "incidents": [
    {
      "name": "API Degradation",
      "status": "started",
      "impact": "minor",
      "started_at": "2026-03-19T10:30:00Z",
      "resolved_at": null,
      "url": "https://status.example.com/incidents/abc123",
      "incident_updates": [
        {
          "body": "We are investigating reports of elevated API latency.",
          "status": "investigating",
          "created_at": "2026-03-19T10:35:00Z"
        }
      ]
    }
  ],
  "pagination": {
    "current_page": 1,
    "per_page": 25,
    "total_pages": 1,
    "total_count": 1
  }
}
```

## Incident Impact Levels

The `impact` field on each incident maps from the incident's severity:

| Severity | Impact     |
| -------- | ---------- |
| Critical | `critical` |
| High     | `major`    |
| Medium   | `minor`    |
| Low      | `minor`    |
| None     | `none`     |

## Authentication

These API endpoints respect the same authentication settings as your status page:

* **Public status pages**: Endpoints are accessible without authentication
* **Password-protected pages**: Endpoints require the same password
* **SAML-protected pages**: Endpoints require SAML authentication

## Example Usage

```bash theme={null}
# Get current status
curl https://status.example.com/api/v1/status.json

# List incidents with pagination
curl "https://status.example.com/api/v1/incidents.json?page=1&per_page=10"
```
