---
title: "List Incidents (Organization)"
description: "Lists incidents for an organization. If organizationId is omitted, the API falls back to the organization from your session."
---

`GET /api/incidents`

Readonly users only see incidents for customers they are assigned to.

## Authentication

Requires a valid session.

- Header: `Authorization: Bearer <token>`

## Query Parameters

- `organizationId` (optional): Organization ID. Defaults to your session organization.
- `source` (optional): Filter by incident source. `manual` returns status-page announcements created by an admin; `monitor` returns incidents generated automatically by the monitoring workers. Any other value is ignored and all sources are returned. Useful because manual incidents can be far older than the newest monitor incidents and would otherwise fall outside the `limit` window.
- `limit` (optional, default: `100`, max: `500`): Maximum number of incidents to return.
- `offset` (optional, default: `0`): Pagination offset.
- `includeTotal` (optional, default: `0`): If set to `1` (or `true`), the response includes `total`, `limit`, and `offset`.

## Example (cURL)

```bash
BASE_URL="https://uptimeify.io"
TOKEN="<your-api-token>"

curl -X GET "$BASE_URL/api/incidents?organizationId=1" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
```

To paginate:

```bash
curl -X GET "$BASE_URL/api/incidents?organizationId=1&limit=100&offset=0" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
```

To list only manually created (status-page) incidents:

```bash
curl -X GET "$BASE_URL/api/incidents?organizationId=1&source=manual" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
```

## Example Response (excerpt)

```json
[
  {
    "id": 123,
    "websiteId": 101,
    "status": "open",
    "severity": "downtime",
    "started_at": "2026-02-26T12:10:00.000Z",
    "resolved_at": null,
    "last_notified_at": "2026-02-26T12:11:00.000Z",
    "error_message": "Timeout",
    "status_code": null,
    "response_time_ms": null,
    "website": {
      "id": 101,
      "name": "Main Marketing Site",
      "url": "https://deinkunde.com",
      "status": "active"
    },
    "customer": {
      "id": 12,
      "email": "ops@deinkunde.com",
      "company": "Acme Corp"
    }
  }
]
```

If `includeTotal=1`, the response shape changes to:

```json
{
  "incidents": [],
  "total": 1234,
  "limit": 100,
  "offset": 0
}
```

## Common Errors

- `400 Organization ID is required` if the API cannot infer an organization
- `401 Unauthorized` if you are not authenticated
- `403 Forbidden` if you do not have access to the organization
- `500 Failed to fetch incidents` on unexpected errors

