Uptimely

Import monitors from a config document

POST
/v1/monitors/import

Creates monitors from a config document produced by GET /v1/monitors/export (or by a converter from another provider's export). The request body IS that document. Every monitor is created through the same path as the dashboard's create wizard, with the same product-default criteria and the same plan limits. An entry whose name and type already belong to a live monitor is SKIPPED, so re-posting the same document is safe and creates nothing. Send ?dry_run=true first to receive the same per-entry plan without writing anything. If the document would take the project past its plan's monitor limit, nothing is created and the response says so — a partial import that silently stops halfway is worse than a refusal.

Authorization

bearerAuth
AuthorizationBearer <token>

An uptimely_live_ project API key (Settings → API Keys).

In: header

Query Parameters

dry_run?string

When true, nothing is written and the response is the plan an apply would follow. Defaults to false — a POST without it imports.

Default"false"

Value in

  • "true"
  • "false"

Header Parameters

Idempotency-Key?string

Optional client-generated key (1-255 visible ASCII characters; a UUID works) making this POST safely retryable. Retrying with the SAME key and byte-identical body within 24h replays the stored first response. The same key with a different body answers 422 idempotency_key_reused; a retry racing the first execution answers 409 idempotency_in_progress. Omitting the header executes normally with no idempotency guarantee.

Length1 <= length <= 255

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

A project's monitors as portable, versioned configuration. Contains no ids, secrets, incidents or status history.

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/monitors/import" \  -H "Content-Type: application/json" \  -d '{    "version": 1,    "monitors": [      {        "name": "string",        "monitor_type": "string"      }    ]  }'
{  "dry_run": true,  "created_count": -9007199254740991,  "skipped_count": -9007199254740991,  "invalid_count": -9007199254740991,  "failed_count": -9007199254740991,  "unmatched_labels": [    "string"  ],  "entries": [    {      "name": "string",      "monitor_type": "string",      "outcome": "create",      "reason": "string",      "monitor_id": "string"    }  ]}