Skip to content

Import monitors from UptimeRobot, Pingdom, StatusCake or Better Stack with an API key for that tool. HTTP, keyword, TCP port, ping, heartbeat and DNS monitors come across with their settings; paused ones stay paused. Intervals the plan does not allow are slowed, and each row says what changed. Monitors already here are skipped, so running the import again is safe. A long list takes several calls: repeat the request with `next_offset` until it is null. `dry_run` reports without creating anything.

POST
/monitors/import
curl --request POST \
--url https://api.siteqwality.com/monitors/import \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "source": "uptimerobot", "api_key": "example", "dry_run": true, "offset": 1, "previewed": 1 }'
Media type application/json
object
source
required

The tool to import from.

string
Allowed values: uptimerobot pingdom statuscake betterstack
api_key
required

An API key or token for that tool; a read-only one is enough. It is used for this request only and never stored.

string
dry_run

Check every monitor and report what would happen without creating anything.

boolean
offset

Continue from this place in the tool’s list: the previous answer’s next_offset.

integer | null
previewed

For a dry run continued with offset: how many monitors other than DNS monitors the earlier answers would create, so the preview counts them against the plan’s limit.

integer

Each monitor’s outcome

Media type application/json
object
dry_run
required
boolean
created
required
integer
would_create
required
integer
skipped
required
integer
failed
required
integer
not_attempted
required

Rows left when time ran out; importing the same file again adds them.

integer
errors
required

line N: reason for each failed row.

Array<string>
rows
required
Array<object>
object
line
required

The row’s line in the file.

integer
status
required
string
Allowed values: created would_create skipped failed not_attempted
check_type

http, tcp, ping, heartbeat or dns; null when the row did not parse.

string | null
name
string | null
target

The url, the heartbeat’s name or the DNS zone.

string | null
id

The new monitor’s id.

string | null format: uuid
message

Why the row was skipped, failed or not attempted.

string | null
source_id

The other tool’s id for the monitor; null for a CSV row.

string | null
warnings
required

What changes on the way in, such as a slower interval on your plan.

Array<string>
source
required

The tool to import from.

string
Allowed values: uptimerobot pingdom statuscake betterstack
total
required

Monitors the tool listed.

integer
offset
required

Where in the tool’s list this answer starts.

integer
next_offset

More remain: send the same request with this offset. Null when every monitor has been through.

integer | null
retry_after_seconds

The tool is rate limiting the key: wait this many seconds before continuing.

integer | null format: int64
Example
{
"rows": [
{
"status": "created"
}
],
"source": "uptimerobot"
}

No API key

Missing or invalid authentication

The tool refused the API key; the message has its reason

The tool could not be reached or sent an unreadable answer