---
title: "Get TCP Monitor Incident History"
description: "Returns paginated incidents for a single TCP monitor, including a computed duration."
---

`GET /api/tcp-monitors/:tcpMonitorPublicId/incident-history`

## Authentication

Requires a valid session.

- Header: `Authorization: Bearer <token>`

## Parameters

- `tcpMonitorPublicId` (Path, required): TCP monitor public UUID.

## Query Parameters

- `page` (number, optional): Page number (default: `1`).
- `limit` (number, optional): Items per page (default: `25`; max `100`). Ignored in favor of export defaults when `format=csv` or `download=1` (default `10000`, max `50000`).
- `status` (string, optional): `open`, `acknowledged`, or `resolved`.
- `type` (string, optional): `downtime`, `http_status`, `ssl_expiry`, `ssl_critical`, `ssl_warning`, `response_time`, `dnsbl`, `domain_expiry_warning`, `critical`, or `inconclusive`.
- `from` / `to` (ISO date string, optional): Filter by `startedAt` range.
- `format` (string, optional): `json` (default) or `csv`.
- `download` (string, optional): `1` to force an attachment download.

## Example (cURL)

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

curl -X GET "$BASE_URL/api/tcp-monitors/11111111-1111-4111-8111-111111111111/incident-history" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Accept: application/json"
```

## Example Response

```json
{
  "data": [
    {
      "id": 123,
      "publicId": "55555555-5555-4555-8555-555555555555",
      "type": "downtime",
      "status": "resolved",
      "startedAt": "2026-02-26T12:10:00.000Z",
      "endedAt": "2026-02-26T12:12:30.000Z",
      "durationMs": 150000,
      "duration": "2m 30s",
      "statusCode": null,
      "errorMessage": "connect ETIMEDOUT",
      "details": "connect ETIMEDOUT",
      "isOngoing": false
    }
  ],
  "total": 1,
  "page": 1,
  "pageCount": 1
}
```

`status` is `open`, `acknowledged`, or `resolved`. Ongoing incidents have a `null` `endedAt` and `isOngoing: true`.

When `format=csv` (or `download=1`), the response is a `text/csv` (or `application/json` for `format=json&download=1`) attachment instead of the paginated JSON envelope above.

## Common Errors

- `400 TCP monitor public ID (UUID) required` if `:tcpMonitorPublicId` is invalid
- `401 Unauthorized` if you are not authenticated
- `403 Forbidden` if you do not have access to the monitor
