# List imports — API reference

> Lists monitor import history.

Source: https://upfour.io/docs/api/monitors/list-imports

[Developers](https://upfour.io/docs/api.md)/[Monitors](https://upfour.io/docs/api/monitors.md)

Lists monitor import history.

GET https://app.upfour.io/v1/monitors/batch/history

scope monitor.write stable returns 200

## Returns

A successful request returns `200` with application/json.

Response fields 2 top-level fields

| Field | Type | Description |
| --- | --- | --- |
| `data` | MonitorBatchHistoryEntry[]  · nullable | |
| Each item · 156 fields FieldTypeDescription `created_at` string (date-time) `id` string `receipt` BatchMonitorResponse BatchMonitorResponse · 153 fields FieldTypeDescription `dry_run_id` string `rows` BatchMonitorRowResult[]  · nullable Each item · 141 fields FieldTypeDescription `errors` BatchMonitorRowIssue[]  · nullable Each item · 3 fields FieldTypeDescription `code` string `message` string `details` object free-form keys `index` integer `line` integer `normalized_input` ResolvedMonitorInput ResolvedMonitorInput · 56 fields FieldTypeDescription `alert_type` string one of`""` `status` `keyword` `keyword_absence` `expected_status_code` `auth_password` string Basic-auth password. Write-only: responses carry has_auth_password instead. `auth_password_action` string one of`""` `keep` `replace` `clear` `auth_username` string `confirmation_period` integer `degraded_alert_enabled` boolean `degraded_threshold_ms` integer  · nullable `dns_expected` string `dns_query` string `dns_server` string `dns_type` string one of`""` `A` `AAAA` `MX` `CNAME` `TXT` `NS` `domain_expiry_alert_days` integer  · nullable `expected_status_code` integer  · nullable `follow_redirects` boolean  · nullable `http_method` string `interval_seconds` integer `ip_version` string one of`""` `4` `6` `keep_cookies` boolean `keyword` string `keyword_case_insensitive` boolean  · nullable `maintenance_from` string  · nullable `maintenance_timezone` string `maintenance_to` string  · nullable `maintenance_weekdays` string[]  · nullable one of`mon` `tue` `wed` `thu` `fri` `sat` `sun` `monitor_type` string one of`http` `tcp` `ping` `dns` `name` string `pronounceable_name` string `proxy_host` string `proxy_port` integer  · nullable `recovery_period` integer `regions` string[]  · nullable one of`eu` `us` `asia` `au` `default` `request_body` string `request_headers` ResolvedRequestHeader[]  · nullable Custom request headers, at most 20 and 8 KB in total. On update they are kept unless request_headers_action is replace or clear. `request_timeout_s` integer `ssl_expiry_alert_days` integer  · nullable `ssl_verification` boolean  · nullable `state` string one of`""` `UP` `DOWN` `PAUSED` UP, DOWN or PAUSED (any case); empty creates the monitor running. `tcp_host` string `tcp_port` integer  · nullable `url` string `alert_channel_names` string[] `alert_plan_name` string `capture_on_incident_open` boolean `client_id` uuid `client_name` string `creation_key` uuid `default_alert_plan` boolean `escalation_policy_id` uuid `metadata` map of string max 100 keys each value max length 4096 On update, omitted or null leaves the stored metadata unchanged, {} removes all keys and any other object replaces them. `monitor_group_id` uuid `monitor_group_name` string `notification_channel_ids` uuid[] `notification_mode` string one of`quiet` `immediate` `notify_recovery` boolean `public_name` string `request_headers_action` string one of`keep` `replace` `clear` `raw` string `status` string one of`ready` `duplicate` `error` `created` `warnings` BatchMonitorRowIssue[]  · nullable Each item · 3 fields FieldTypeDescription `code` string `message` string `details` object free-form keys `created_monitor` Monitor Monitor · 65 fields FieldTypeDescription `alert_type` string one of`status` `keyword` `keyword_absence` `expected_status_code` `auth_username` string `capture_on_incident_open` boolean `confirmation_period` integer `created_at` string (date-time) `degraded_alert_enabled` boolean `degraded_threshold_ms` integer  · nullable `domain_expiry_alert_days` integer  · nullable `escalation_policy_id` uuid  · nullable `expected_status_code` integer  · nullable `feature_pause_reasons` string[]  · nullable `follow_redirects` boolean `has_auth_password` boolean `has_request_headers` boolean `http_method` string `id` uuid `interval_seconds` integer `ip_version` string one of`""` `4` `6` `is_degraded` boolean `is_pending` boolean `keep_cookies` boolean `keyword` string `keyword_case_insensitive` boolean `maintenance_from` string  · nullable `maintenance_timezone` string `maintenance_to` string  · nullable `maintenance_weekdays` string[]  · nullable one of`mon` `tue` `wed` `thu` `fri` `sat` `sun` `monitor_type` string one of`http` `tcp` `ping` `dns` `name` string `next_check_at` string (date-time)  · nullable `notification_mode` string one of`quiet` `immediate` `notify_recovery` boolean `pronounceable_name` string `proxy_host` string `proxy_port` integer  · nullable `public_name` string `recovery_period` integer `regions` string[]  · nullable one of`eu` `us` `asia` `au` `default` `request_body` string `request_headers` any[]  · nullable Always empty: header values are never returned. has_request_headers says whether the monitor sends any. `request_timeout_s` integer `ssl_expiry_alert_days` integer  · nullable `ssl_verification` boolean `state` string one of`UP` `DOWN` `PAUSED` `url` string `user_id` uuid `badge_token` string `client_id` uuid `dns_expected` string `dns_query` string `dns_server` string `dns_type` string one of`A` `AAAA` `MX` `CNAME` `TXT` `NS` `freshness_timeout_seconds` integer `last_checked_at` string (date-time) `last_result_at` string (date-time) `last_state_change_at` string (date-time) `latency_p50_ms` integer `latency_p95_ms` integer `latency_samples_24h` integer `latest_result_successful` boolean `monitor_group_id` uuid `paused_until` string (date-time) `recent_incidents` MonitorRecentIncident[] `tcp_host` string `tcp_port` integer `duplicate_match` MonitorBatchMatch MonitorBatchMatch · 5 fields FieldTypeDescription `id` uuid `monitor_type` string `name` string `url` string `client_id` uuid `summary` BatchMonitorSummary BatchMonitorSummary · 5 fields FieldTypeDescription `duplicates` integer `errors` integer `ready` integer `total` integer `warnings` integer `capacity` MonitorCapacity MonitorCapacity · 2 fields FieldTypeDescription `current` integer `limit` integer `import_id` uuid | | |
| `pagination` | Pagination | |
| Pagination · 5 fields FieldTypeDescription `cursor` string  · nullable `has_more` boolean `limit` integer 1–250 `next_cursor` string  · nullable `prev_cursor` string  · nullable | | |

## Errors

Only the errors this operation can return. Every error uses the [same envelope](https://upfour.io/docs/api/responses.md).

| Status | Code | Meaning |
| --- | --- | --- |
| 400 | [bad_request](https://upfour.io/docs/api/errors#code-bad_request) | The request is malformed or fails validation. |
| 403 | [permission_denied](https://upfour.io/docs/api/errors#code-permission_denied) | The credentials do not permit this action. |

Every call can also return `unauthorized` (401), `rate_limit_exceeded` (429) or `internal_error` (500 / 502). See [Responses and errors](https://upfour.io/docs/api/responses.md).

[PreviousPreview an import](https://upfour.io/docs/api/monitors/preview-an-import.md) [NextChange several monitors](https://upfour.io/docs/api/monitors/change-several-monitors.md)

## Request

### cURL

```bash
curl -s "https://app.upfour.io/v1/monitors/batch/history" \
  -H "Authorization: Bearer $UP4_API_KEY"
```

### JavaScript

```javascript
const res = await fetch("https://app.upfour.io/v1/monitors/batch/history", {
  headers: {
    Authorization: `Bearer ${process.env.UP4_API_KEY}`,
  },
});
console.log(res.status, await res.json());
```

### Python

```python
import os
import requests

res = requests.get(
    "https://app.upfour.io/v1/monitors/batch/history",
    headers={"Authorization": f"Bearer {os.environ['UP4_API_KEY']}"},
)
print(res.status_code, res.json())
```

### Go

```go
package main

import (
	"fmt"
	"io"
	"net/http"
	"os"
)

func main() {
	req, _ := http.NewRequest("GET", "https://app.upfour.io/v1/monitors/batch/history", nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("UP4_API_KEY"))
	res, err := http.DefaultClient.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	out, _ := io.ReadAll(res.Body)
	fmt.Println(res.StatusCode, string(out))
}
```

### PHP

```php
<?php
$ch = curl_init("https://app.upfour.io/v1/monitors/batch/history");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer " . getenv("UP4_API_KEY"),
    ],
]);
$response = curl_exec($ch);
echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), " ", $response, "\n";
curl_close($ch);
```

## Response

### 200

```json
{
  "data": [
    {
      "created_at": "2026-10-27T09:00:00Z",
      "id": "00000000-0000-4000-8000-000000000001",
      "receipt": {
        "capacity": {
          "current": 2,
          "limit": 500
        },
        "dry_run_id": "721378bc96ef2ddece4a66b447ba60d6a1266860d9cb23f4e0e6c152f30279cb",
        "import_id": "00000000-0000-4000-8000-000000000001",
        "rows": [
          {
            "created_monitor": {
              "alert_type": "status",
              "auth_username": "",
              "capture_on_incident_open": false,
              "confirmation_period": 0,
              "created_at": "2026-10-27T09:00:00Z",
              "degraded_alert_enabled": false,
              "degraded_threshold_ms": null,
              "dns_type": "A",
              "domain_expiry_alert_days": null,
              "escalation_policy_id": null,
              "expected_status_code": null,
              "feature_pause_reasons": null,
              "follow_redirects": true,
              "freshness_timeout_seconds": 120,
              "has_auth_password": false,
              "has_request_headers": false,
              "http_method": "HEAD",
              "id": "00000000-0000-4000-8000-000000000002",
              "interval_seconds": 60,
              "ip_version": "",
              "is_degraded": false,
              "is_pending": true,
              "keep_cookies": false,
              "keyword": "",
              "keyword_case_insensitive": true,
              "maintenance_from": null,
              "maintenance_timezone": "UTC",
              "maintenance_to": null,
              "maintenance_weekdays": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ],
              "monitor_type": "http",
              "name": "Docs site",
              "next_check_at": "2026-10-27T09:00:00Z",
              "notification_mode": "immediate",
              "notify_recovery": true,
              "pronounceable_name": "",
              "proxy_host": "",
              "proxy_port": null,
              "public_name": "",
              "recovery_period": 0,
              "regions": [
                "eu"
              ],
              "request_body": "",
              "request_headers": [],
              "request_timeout_s": 30,
              "ssl_expiry_alert_days": null,
              "ssl_verification": true,
              "state": "UP",
              "url": "https://example.com",
              "user_id": "00000000-0000-4000-8000-000000000003"
            },
            "errors": null,
            "index": 0,
            "line": 1,
            "normalized_input": {
              "alert_type": "status",
              "auth_password": "",
              "auth_password_action": "",
              "auth_username": "",
              "capture_on_incident_open": false,
              "confirmation_period": 0,
              "degraded_alert_enabled": false,
              "degraded_threshold_ms": null,
              "dns_expected": "",
              "dns_query": "",
              "dns_server": "",
              "dns_type": "A",
              "domain_expiry_alert_days": null,
              "expected_status_code": null,
              "follow_redirects": true,
              "http_method": "HEAD",
              "interval_seconds": 60,
              "ip_version": "",
              "keep_cookies": false,
              "keyword": "",
              "keyword_case_insensitive": true,
              "maintenance_from": null,
              "maintenance_timezone": "UTC",
              "maintenance_to": null,
              "maintenance_weekdays": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ],
              "monitor_type": "http",
              "name": "Docs site",
              "notification_mode": "immediate",
              "notify_recovery": true,
              "pronounceable_name": "",
              "proxy_host": "",
              "proxy_port": null,
              "recovery_period": 0,
              "regions": [
                "eu"
              ],
              "request_body": "",
              "request_headers": [],
              "request_timeout_s": 30,
              "ssl_expiry_alert_days": null,
              "ssl_verification": true,
              "state": "UP",
              "tcp_host": "",
              "tcp_port": null,
              "url": "https://example.com"
            },
            "raw": "",
            "status": "created",
            "warnings": null
          },
          {
            "created_monitor": {
              "alert_type": "status",
              "auth_username": "",
              "capture_on_incident_open": false,
              "confirmation_period": 0,
              "created_at": "2026-10-27T09:00:00Z",
              "degraded_alert_enabled": false,
              "degraded_threshold_ms": null,
              "dns_type": "A",
              "domain_expiry_alert_days": null,
              "escalation_policy_id": null,
              "expected_status_code": null,
              "feature_pause_reasons": null,
              "follow_redirects": true,
              "freshness_timeout_seconds": 120,
              "has_auth_password": false,
              "has_request_headers": false,
              "http_method": "HEAD",
              "id": "00000000-0000-4000-8000-000000000004",
              "interval_seconds": 60,
              "ip_version": "",
              "is_degraded": false,
              "is_pending": true,
              "keep_cookies": false,
              "keyword": "",
              "keyword_case_insensitive": true,
              "maintenance_from": null,
              "maintenance_timezone": "UTC",
              "maintenance_to": null,
              "maintenance_weekdays": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ],
              "monitor_type": "http",
              "name": "Status page",
              "next_check_at": "2026-10-27T09:00:00Z",
              "notification_mode": "immediate",
              "notify_recovery": true,
              "pronounceable_name": "",
              "proxy_host": "",
              "proxy_port": null,
              "public_name": "",
              "recovery_period": 0,
              "regions": [
                "eu"
              ],
              "request_body": "",
              "request_headers": [],
              "request_timeout_s": 30,
              "ssl_expiry_alert_days": null,
              "ssl_verification": true,
              "state": "UP",
              "url": "https://example.org",
              "user_id": "00000000-0000-4000-8000-000000000003"
            },
            "errors": null,
            "index": 1,
            "line": 2,
            "normalized_input": {
              "alert_type": "status",
              "auth_password": "",
              "auth_password_action": "",
              "auth_username": "",
              "capture_on_incident_open": false,
              "confirmation_period": 0,
              "degraded_alert_enabled": false,
              "degraded_threshold_ms": null,
              "dns_expected": "",
              "dns_query": "",
              "dns_server": "",
              "dns_type": "A",
              "domain_expiry_alert_days": null,
              "expected_status_code": null,
              "follow_redirects": true,
              "http_method": "HEAD",
              "interval_seconds": 60,
              "ip_version": "",
              "keep_cookies": false,
              "keyword": "",
              "keyword_case_insensitive": true,
              "maintenance_from": null,
              "maintenance_timezone": "UTC",
              "maintenance_to": null,
              "maintenance_weekdays": [
                "mon",
                "tue",
                "wed",
                "thu",
                "fri",
                "sat",
                "sun"
              ],
              "monitor_type": "http",
              "name": "Status page",
              "notification_mode": "immediate",
              "notify_recovery": true,
              "pronounceable_name": "",
              "proxy_host": "",
              "proxy_port": null,
              "recovery_period": 0,
              "regions": [
                "eu"
              ],
              "request_body": "",
              "request_headers": [],
              "request_timeout_s": 30,
              "ssl_expiry_alert_days": null,
              "ssl_verification": true,
              "state": "UP",
              "tcp_host": "",
              "tcp_port": null,
              "url": "https://example.org"
            },
            "raw": "",
            "status": "created",
            "warnings": null
          }
        ],
        "summary": {
          "duplicates": 0,
          "errors": 0,
          "ready": 2,
          "total": 2,
          "warnings": 0
        }
      }
    }
  ],
  "pagination": {
    "cursor": null,
    "has_more": false,
    "limit": 50,
    "next_cursor": null,
    "prev_cursor": null
  }
}
```

### 400

```json
{
  "error": {
    "code": "bad_request",
    "message": "The request is malformed or fails validation.",
    "request_id": "req_…"
  }
}
```

### 403

```json
{
  "error": {
    "code": "permission_denied",
    "message": "The credentials do not permit this action.",
    "request_id": "req_…"
  }
}
```
