Skip to content
Uptizm
Start free
Sign in

Language

Menu
View as Markdown

API reference

Monitors

HTTP and TCP monitors, their readings, uptime and the AI-assisted create flow.

POST /monitors/analyze monitors:write #

Start an AI analysis of a URL

Probes the URL from several regions and queues an AI analysis that proposes monitor settings and metrics. Answers 202 with data.run_id and the run state; poll GET /monitors/analyze/{run} until status is completed or failed. A second analysis while one is running for the team answers 409. Counts against the plan's AI setup allowance; an unclaimed anonymous workspace has none.

Parameters

NameInTypeRequiredDescription
Idempotency-KeyheaderstringNoAny unique string per logical request.

Request body application/json

  • url string, uri, max length 2048 required
  • region MonitorRegion: string, one of "us-east", "us-west", "eu-west", "eu-central", "ap"

    A region a check is probed from.

  • intent string or null, max length 500

    What the operator wants from this monitor, in their own words.

  • auth_config object or null
    • type HttpAuthType: string, one of "none", "basic", "bearer", "api_key"

      Authentication scheme applied to outbound monitor check requests.

    • username string or null, max length 255
    • password string or null, max length 255
    • token string or null, max length 2048
    • key string or null, max length 2048
    • header string or null, max length 255

Response 202 application/json

  • data object required
    • run_id string required
    • status any required
    • step any required
    • steps any required
    • probe any required
    • probes any required
    • reason any required
    • result any required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 409 Conflict
  • 422 Validation error
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X POST "https://api.uptizm.com/v1/monitors/analyze" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "url": "https://example.com"
}'
const payload = {
    "url": "https://example.com"
};

const response = await fetch('https://api.uptizm.com/v1/monitors/analyze', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
  body: JSON.stringify(payload),
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/analyze');

$payload = <<<'JSON'
{
    "url": "https://example.com"
}
JSON;

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
        'Content-Type: application/json',
        'Idempotency-Key: '.uniqid('', true),
    ],
    CURLOPT_POSTFIELDS => $payload,
]);

$response = curl_exec($curl);
import os
import uuid

import requests

response = requests.post(
    "https://api.uptizm.com/v1/monitors/analyze",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    data=r'''{
    "url": "https://example.com"
}''',
)

print(response.json())
GET /monitors/analyze/{run} monitors:read #

Poll an AI analysis run

Returns the run state: status is queued, analyzing, completed or failed. On completed, result.data holds the proposed monitor (name, url, suggestion settings, suggested_metrics); on failed, reason says why. Poll every 2.5 seconds for up to about 150 seconds. A 404 means the run expired or belongs to another team: start a new analysis.

Parameters

NameInTypeRequiredDescription
runpathstringYes

Response 200 application/json

  • data object required
    • run_id string required
    • status any required
    • step any required
    • steps any required
    • probe any required
    • probes any required
    • reason any required
    • result any required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 An error
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/analyze/RUN" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/analyze/RUN', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/analyze/RUN');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/analyze/RUN",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
GET /monitors monitors:read #

List monitors

The team's monitors, newest first, cursor-paginated. Filter by status. Monitors read through a key never include request_headers or request_body, and credentials are stripped from url.

Parameters

NameInTypeRequiredDescription
statusquerystringNo
per_pagequeryinteger, min 1, max 200NoPage size, clamped to 1 and the endpoint's maximum (200 on most lists).
cursorquerystringNoThe meta.next_cursor of the previous page.

Response 200 application/json

  • data array of MonitorResource required
    • id string required
    • team_id string required
    • name string required
    • url string or null required
    • type string required
    • method string, one of "get", "post", "head" required
    • status string required
    • paused_by_plan boolean required

      Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.

    • paused_for_downtime boolean required

      True when a month of nothing but down readings paused a Free monitor.

    • last_status string or null, one of "up", "down", "degraded", "paused", "maintenance", null required
    • check_interval_sec integer required
    • effective_check_interval_sec integer required

      What the loop actually spends, which is the stored value clamped up to the plan's floor.

    • timeout_sec integer required
    • regions array of any required
    • expected_status_code integer required
    • request_headers array of any

      Both emitted so the edit form can prefill what the operator configured.

    • request_body string or null
    • ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • effective_ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • ai_auto_updates boolean required

      Read back by the monitor form's own switch.

    • auth_config array of any or null required
    • slo_target number or null required
    • escalation_policy_id string or null required

      The pinned paging ladder, or null to fall back to the team default.

    • uptime_24h string required

      Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").

    • slo_down_minutes_7d string required
    • slo_observed_minutes_7d string required
    • slo_gap_minutes_7d string required
    • slo_measured_minutes_7d string required
    • slo_down_minutes_30d string required
    • slo_observed_minutes_30d string required
    • slo_gap_minutes_30d string required
    • slo_measured_minutes_30d string required
    • tags array of any required
    • show_on_status_page boolean required
    • only_show_if_degraded boolean required
    • follow_redirects boolean required
    • alert_on_down boolean required
    • alert_on_recover boolean required
    • ssl_tracking boolean required
    • anomaly_detection boolean required
    • response_anomaly_sensitivity string, one of "low", "medium", "high" required
    • ssl_expires_at string or null required
    • ssl_last_checked_at string or null required
    • ssl_last_error string or null required
    • ssl_alert_threshold_days integer required
    • is_group boolean required
    • parent_id string or null required
    • last_checked_at string or null required
    • last_response_ms integer or null required
    • last_probe_error string or null required

      Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.

    • last_probe_error_at string or null required
    • next_check_at string or null required
    • consecutive_fails integer required
    • incident_threshold integer required
    • assertion_rules array of any or null required

      Null for both means off: no rules asserted, no degraded threshold.

    • degraded_after_ms integer or null required
    • maintenance_tolerance_sec integer required
    • description string or null required
    • description_source string or null, one of "ai_draft", "user", null required
    • site_kind string or null, one of "ecommerce", "saas", "api", "content", "corporate", "other", null required
    • intent string or null required
    • created_at string or null required
    • updated_at string or null required
  • links object required
    • first string or null required
    • last string or null required
    • prev string or null required
    • next string or null required
  • meta object required
    • path string or null required

      Base path for paginator generated URLs.

    • per_page integer, min 0 required

      Number of items shown per page.

    • next_cursor string or null required

      The "cursor" that points to the next set of items.

    • prev_cursor string or null required

      The "cursor" that points to the previous set of items.

    • total number required
    • counts array, max items 2 required
    • avg_response_ms integer or null required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
POST /monitors monitors:write #

Create a monitor

Creates a monitor, plus any metrics sent with it in the same write, and queues its first check. Send an Idempotency-Key so a retry cannot create it twice. The plan caps the monitor count and the shortest check_interval_sec.

Parameters

NameInTypeRequiredDescription
Idempotency-KeyheaderstringNoAny unique string per logical request.

Request body application/json

  • name string, max length 200 required
  • url string, uri, max length 2048 required
  • type MonitorType: string, one of "http" required

    Supported check protocol for a monitor.

  • method HttpMethod: string, one of "get", "post", "head" required

    HTTP verb used when issuing a monitor check request.

  • check_interval_sec integer, min 30, max 86400 required
  • timeout_sec integer, min 1, max 30 required
  • regions array of MonitorRegion: string, one of "us-east", "us-west", "eu-west", "eu-central", "ap" required
  • expected_status_code integer or null, min 100, max 599
  • ai_mode AiMode: string, one of "off", "suggest", "auto"

    How much authority the AI has for a given monitor or workspace.

  • anomaly_detection boolean

    Absent means the model default (true).

  • response_anomaly_sensitivity AnomalySensitivity: string, one of "low", "medium", "high"

    How far from its baseline a metric has to move before the sweep reports it.

  • ai_auto_updates boolean

    Whether AI may publish incident updates to the public status page for this monitor.

  • escalation_policy_id string or null, uuid

    The team's escalation policy that pages for this monitor's incidents.

  • request_headers array of string or null
  • request_body string or null
  • slo_target number or null, min 0, max 100
  • tags array of string or null
  • show_on_status_page boolean
  • follow_redirects boolean

    Whether a 3xx is the answer or a step on the way to it.

  • only_show_if_degraded boolean
  • alert_on_down boolean
  • alert_on_recover boolean
  • ssl_tracking boolean
  • ssl_alert_threshold_days integer or null, min 1, max 365
  • maintenance_tolerance_sec integer, one of "0", "60", "120", "180", "300", "600", "900"

    Maintenance tolerance in seconds; omit it for the default of 0.

  • metrics array of object, max items 40

    Metrics to create together with the monitor, in the same write.

    • group_name string or null, max length 80
    • label string, max length 120 required
    • type MetricType: string, one of "numeric", "status", "string" required

      Classification of a custom monitor metric.

    • source MetricSource: string, one of "json_path", "regex", "xpath", "header", "http_status" or null
    • extraction_path string or null, max length 500
    • unit MetricUnit: string, one of "bytes_auto", "byte", "kilobyte", "megabyte", "gigabyte", "terabyte", "duration_auto", "millisecond", "second", "minute", "hour", "percent", "ratio", "count", "count_short", "custom" or null
    • threshold_direction ThresholdDirection: string, one of "high_bad", "low_bad" or null
    • warn_bound number or null
    • critical_bound number or null
    • display_order integer or null, min 0
    • anomaly_enabled boolean
    • anomaly_direction MetricAnomalyDirection: string, one of "high_bad", "low_bad", "both"

      Which side of a baseline counts as an anomaly: high_bad, low_bad or both.

    • anomaly_kind MetricKind: string, one of "gauge", "counter", "count_per_period"

      What a numeric metric's readings measure, which decides how the sweep reads them.

    • anomaly_sensitivity AnomalySensitivity: string, one of "low", "medium", "high"

      How far from its baseline a metric has to move before the sweep reports it.

    • ok_values array of string, min length 1, max length 120, max items 50
    • warn_values array of string, min length 1, max length 120, max items 50
    • critical_values array of string, min length 1, max length 120, max items 50
    • unmatched_band MetricBand: string, one of "ok", "warn", "critical" or null
    • key string, max length 40 required
  • auth_config object or null
    • type HttpAuthType: string, one of "none", "basic", "bearer", "api_key"

      Authentication scheme applied to outbound monitor check requests.

    • username string or null, max length 255
    • password string or null, max length 255
    • token string or null, max length 2048
    • key string or null, max length 2048
    • header string or null, max length 255
  • assertion_rules array of string or null, max items 20
  • incident_threshold integer, min 1, max 10

    How many consecutive failed checks open an incident, from 1 to 10.

  • degraded_after_ms integer or null, min 100, max 30000

    Null is "off" in both engines.

  • description string or null, max length 1000

    Context the AI reads as unverified and source-labelled, never a probe input.

  • description_source DescriptionSource: string, one of "ai_draft", "user" or null
  • site_kind SiteKind: string, one of "ecommerce", "saas", "api", "content", "corporate", "other" or null
  • intent string or null, max length 500

    What the operator says matters about this monitor, in their own words.

Response 201 application/json

  • data MonitorResource required
    • id string required
    • team_id string required
    • name string required
    • url string or null required
    • type string required
    • method string, one of "get", "post", "head" required
    • status string required
    • paused_by_plan boolean required

      Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.

    • paused_for_downtime boolean required

      True when a month of nothing but down readings paused a Free monitor.

    • last_status string or null, one of "up", "down", "degraded", "paused", "maintenance", null required
    • check_interval_sec integer required
    • effective_check_interval_sec integer required

      What the loop actually spends, which is the stored value clamped up to the plan's floor.

    • timeout_sec integer required
    • regions array of any required
    • expected_status_code integer required
    • request_headers array of any

      Both emitted so the edit form can prefill what the operator configured.

    • request_body string or null
    • ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • effective_ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • ai_auto_updates boolean required

      Read back by the monitor form's own switch.

    • auth_config array of any or null required
    • slo_target number or null required
    • escalation_policy_id string or null required

      The pinned paging ladder, or null to fall back to the team default.

    • uptime_24h string required

      Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").

    • slo_down_minutes_7d string required
    • slo_observed_minutes_7d string required
    • slo_gap_minutes_7d string required
    • slo_measured_minutes_7d string required
    • slo_down_minutes_30d string required
    • slo_observed_minutes_30d string required
    • slo_gap_minutes_30d string required
    • slo_measured_minutes_30d string required
    • tags array of any required
    • show_on_status_page boolean required
    • only_show_if_degraded boolean required
    • follow_redirects boolean required
    • alert_on_down boolean required
    • alert_on_recover boolean required
    • ssl_tracking boolean required
    • anomaly_detection boolean required
    • response_anomaly_sensitivity string, one of "low", "medium", "high" required
    • ssl_expires_at string or null required
    • ssl_last_checked_at string or null required
    • ssl_last_error string or null required
    • ssl_alert_threshold_days integer required
    • is_group boolean required
    • parent_id string or null required
    • last_checked_at string or null required
    • last_response_ms integer or null required
    • last_probe_error string or null required

      Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.

    • last_probe_error_at string or null required
    • next_check_at string or null required
    • consecutive_fails integer required
    • incident_threshold integer required
    • assertion_rules array of any or null required

      Null for both means off: no rules asserted, no degraded threshold.

    • degraded_after_ms integer or null required
    • maintenance_tolerance_sec integer required
    • description string or null required
    • description_source string or null, one of "ai_draft", "user", null required
    • site_kind string or null, one of "ecommerce", "saas", "api", "content", "corporate", "other", null required
    • intent string or null required
    • created_at string or null required
    • updated_at string or null required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 422 Validation error
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X POST "https://api.uptizm.com/v1/monitors" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "name": "string",
    "url": "https://example.com",
    "type": "http",
    "method": "get",
    "check_interval_sec": 30,
    "timeout_sec": 1,
    "regions": [
        "us-east"
    ]
}'
const payload = {
    "name": "string",
    "url": "https://example.com",
    "type": "http",
    "method": "get",
    "check_interval_sec": 30,
    "timeout_sec": 1,
    "regions": [
        "us-east"
    ]
};

const response = await fetch('https://api.uptizm.com/v1/monitors', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
  body: JSON.stringify(payload),
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors');

$payload = <<<'JSON'
{
    "name": "string",
    "url": "https://example.com",
    "type": "http",
    "method": "get",
    "check_interval_sec": 30,
    "timeout_sec": 1,
    "regions": [
        "us-east"
    ]
}
JSON;

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
        'Content-Type: application/json',
        'Idempotency-Key: '.uniqid('', true),
    ],
    CURLOPT_POSTFIELDS => $payload,
]);

$response = curl_exec($curl);
import os
import uuid

import requests

response = requests.post(
    "https://api.uptizm.com/v1/monitors",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
        "Content-Type": "application/json",
        "Idempotency-Key": str(uuid.uuid4()),
    },
    data=r'''{
    "name": "string",
    "url": "https://example.com",
    "type": "http",
    "method": "get",
    "check_interval_sec": 30,
    "timeout_sec": 1,
    "regions": [
        "us-east"
    ]
}''',
)

print(response.json())
GET /monitors/{monitor} monitors:read #

Get a monitor

One monitor of the team. A monitor of another team answers 404. Credentials are masked as in the list.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID

Response 200 application/json

  • data MonitorResource required
    • id string required
    • team_id string required
    • name string required
    • url string or null required
    • type string required
    • method string, one of "get", "post", "head" required
    • status string required
    • paused_by_plan boolean required

      Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.

    • paused_for_downtime boolean required

      True when a month of nothing but down readings paused a Free monitor.

    • last_status string or null, one of "up", "down", "degraded", "paused", "maintenance", null required
    • check_interval_sec integer required
    • effective_check_interval_sec integer required

      What the loop actually spends, which is the stored value clamped up to the plan's floor.

    • timeout_sec integer required
    • regions array of any required
    • expected_status_code integer required
    • request_headers array of any

      Both emitted so the edit form can prefill what the operator configured.

    • request_body string or null
    • ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • effective_ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • ai_auto_updates boolean required

      Read back by the monitor form's own switch.

    • auth_config array of any or null required
    • slo_target number or null required
    • escalation_policy_id string or null required

      The pinned paging ladder, or null to fall back to the team default.

    • uptime_24h string required

      Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").

    • slo_down_minutes_7d string required
    • slo_observed_minutes_7d string required
    • slo_gap_minutes_7d string required
    • slo_measured_minutes_7d string required
    • slo_down_minutes_30d string required
    • slo_observed_minutes_30d string required
    • slo_gap_minutes_30d string required
    • slo_measured_minutes_30d string required
    • tags array of any required
    • show_on_status_page boolean required
    • only_show_if_degraded boolean required
    • follow_redirects boolean required
    • alert_on_down boolean required
    • alert_on_recover boolean required
    • ssl_tracking boolean required
    • anomaly_detection boolean required
    • response_anomaly_sensitivity string, one of "low", "medium", "high" required
    • ssl_expires_at string or null required
    • ssl_last_checked_at string or null required
    • ssl_last_error string or null required
    • ssl_alert_threshold_days integer required
    • is_group boolean required
    • parent_id string or null required
    • last_checked_at string or null required
    • last_response_ms integer or null required
    • last_probe_error string or null required

      Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.

    • last_probe_error_at string or null required
    • next_check_at string or null required
    • consecutive_fails integer required
    • incident_threshold integer required
    • assertion_rules array of any or null required

      Null for both means off: no rules asserted, no degraded threshold.

    • degraded_after_ms integer or null required
    • maintenance_tolerance_sec integer required
    • description string or null required
    • description_source string or null, one of "ai_draft", "user", null required
    • site_kind string or null, one of "ecommerce", "saas", "api", "content", "corporate", "other", null required
    • intent string or null required
    • created_at string or null required
    • updated_at string or null required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
PUT /monitors/{monitor} monitors:write #

Update a monitor

Replaces the monitor's settings with the validated body. The same plan limits as on create apply.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID

Request body application/json

  • name string, max length 200
  • url string, uri, max length 2048
  • type MonitorType: string, one of "http"

    Supported check protocol for a monitor.

  • method HttpMethod: string, one of "get", "post", "head"

    HTTP verb used when issuing a monitor check request.

  • check_interval_sec integer, min 30, max 86400
  • timeout_sec integer, min 1, max 30
  • regions array of MonitorRegion: string, one of "us-east", "us-west", "eu-west", "eu-central", "ap"
  • expected_status_code integer or null, min 100, max 599
  • ai_mode AiMode: string, one of "off", "suggest", "auto"

    How much authority the AI has for a given monitor or workspace.

  • ai_auto_updates boolean
  • escalation_policy_id string or null, uuid
  • request_headers array of string or null
  • request_body string or null
  • slo_target number or null, min 0, max 100
  • tags array of string or null
  • show_on_status_page boolean
  • follow_redirects boolean
  • only_show_if_degraded boolean
  • alert_on_down boolean
  • alert_on_recover boolean
  • ssl_tracking boolean
  • anomaly_detection boolean
  • response_anomaly_sensitivity AnomalySensitivity: string, one of "low", "medium", "high"

    How far from its baseline a metric has to move before the sweep reports it.

  • ssl_alert_threshold_days integer or null, min 1, max 365
  • maintenance_tolerance_sec integer, one of "0", "60", "120", "180", "300", "600", "900"
  • auth_config object or null
    • type HttpAuthType: string, one of "none", "basic", "bearer", "api_key"

      Authentication scheme applied to outbound monitor check requests.

    • username string or null, max length 255
    • password string or null, max length 255
    • token string or null, max length 2048
    • key string or null, max length 2048
    • header string or null, max length 255
  • assertion_rules array of string or null, max items 20
  • incident_threshold integer, min 1, max 10
  • degraded_after_ms integer or null, min 100, max 30000
  • description string or null, max length 1000
  • site_kind SiteKind: string, one of "ecommerce", "saas", "api", "content", "corporate", "other" or null
  • intent string or null, max length 500
  • description_source DescriptionSource: string, one of "ai_draft", "user" or null

Response 200 application/json

  • data MonitorResource required
    • id string required
    • team_id string required
    • name string required
    • url string or null required
    • type string required
    • method string, one of "get", "post", "head" required
    • status string required
    • paused_by_plan boolean required

      Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.

    • paused_for_downtime boolean required

      True when a month of nothing but down readings paused a Free monitor.

    • last_status string or null, one of "up", "down", "degraded", "paused", "maintenance", null required
    • check_interval_sec integer required
    • effective_check_interval_sec integer required

      What the loop actually spends, which is the stored value clamped up to the plan's floor.

    • timeout_sec integer required
    • regions array of any required
    • expected_status_code integer required
    • request_headers array of any

      Both emitted so the edit form can prefill what the operator configured.

    • request_body string or null
    • ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • effective_ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • ai_auto_updates boolean required

      Read back by the monitor form's own switch.

    • auth_config array of any or null required
    • slo_target number or null required
    • escalation_policy_id string or null required

      The pinned paging ladder, or null to fall back to the team default.

    • uptime_24h string required

      Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").

    • slo_down_minutes_7d string required
    • slo_observed_minutes_7d string required
    • slo_gap_minutes_7d string required
    • slo_measured_minutes_7d string required
    • slo_down_minutes_30d string required
    • slo_observed_minutes_30d string required
    • slo_gap_minutes_30d string required
    • slo_measured_minutes_30d string required
    • tags array of any required
    • show_on_status_page boolean required
    • only_show_if_degraded boolean required
    • follow_redirects boolean required
    • alert_on_down boolean required
    • alert_on_recover boolean required
    • ssl_tracking boolean required
    • anomaly_detection boolean required
    • response_anomaly_sensitivity string, one of "low", "medium", "high" required
    • ssl_expires_at string or null required
    • ssl_last_checked_at string or null required
    • ssl_last_error string or null required
    • ssl_alert_threshold_days integer required
    • is_group boolean required
    • parent_id string or null required
    • last_checked_at string or null required
    • last_response_ms integer or null required
    • last_probe_error string or null required

      Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.

    • last_probe_error_at string or null required
    • next_check_at string or null required
    • consecutive_fails integer required
    • incident_threshold integer required
    • assertion_rules array of any or null required

      Null for both means off: no rules asserted, no degraded threshold.

    • degraded_after_ms integer or null required
    • maintenance_tolerance_sec integer required
    • description string or null required
    • description_source string or null, one of "ai_draft", "user", null required
    • site_kind string or null, one of "ecommerce", "saas", "api", "content", "corporate", "other", null required
    • intent string or null required
    • created_at string or null required
    • updated_at string or null required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 422 Validation error
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X PUT "https://api.uptizm.com/v1/monitors/MONITOR" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{}'
const payload = {};

const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR', {
  method: 'PUT',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify(payload),
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR');

$payload = <<<'JSON'
{}
JSON;

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'PUT',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => $payload,
]);

$response = curl_exec($curl);
import os

import requests

response = requests.put(
    "https://api.uptizm.com/v1/monitors/MONITOR",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
        "Content-Type": "application/json",
    },
    data=r'''{}''',
)

print(response.json())
DELETE /monitors/{monitor} monitors:write #

Delete a monitor

Deletes the monitor and stops its checks.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID

Response 204

No body.

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X DELETE "https://api.uptizm.com/v1/monitors/MONITOR" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR', {
  method: 'DELETE',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

console.log(response.status);
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'DELETE',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.delete(
    "https://api.uptizm.com/v1/monitors/MONITOR",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.status_code)
POST /monitors/{monitor}/pause monitors:write #

Pause a monitor

Stops scheduling checks for the monitor until it is resumed. A paused monitor keeps its history.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID
Idempotency-KeyheaderstringNoAny unique string per logical request.

Response 200 application/json

  • data MonitorResource required
    • id string required
    • team_id string required
    • name string required
    • url string or null required
    • type string required
    • method string, one of "get", "post", "head" required
    • status string required
    • paused_by_plan boolean required

      Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.

    • paused_for_downtime boolean required

      True when a month of nothing but down readings paused a Free monitor.

    • last_status string or null, one of "up", "down", "degraded", "paused", "maintenance", null required
    • check_interval_sec integer required
    • effective_check_interval_sec integer required

      What the loop actually spends, which is the stored value clamped up to the plan's floor.

    • timeout_sec integer required
    • regions array of any required
    • expected_status_code integer required
    • request_headers array of any

      Both emitted so the edit form can prefill what the operator configured.

    • request_body string or null
    • ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • effective_ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • ai_auto_updates boolean required

      Read back by the monitor form's own switch.

    • auth_config array of any or null required
    • slo_target number or null required
    • escalation_policy_id string or null required

      The pinned paging ladder, or null to fall back to the team default.

    • uptime_24h string required

      Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").

    • slo_down_minutes_7d string required
    • slo_observed_minutes_7d string required
    • slo_gap_minutes_7d string required
    • slo_measured_minutes_7d string required
    • slo_down_minutes_30d string required
    • slo_observed_minutes_30d string required
    • slo_gap_minutes_30d string required
    • slo_measured_minutes_30d string required
    • tags array of any required
    • show_on_status_page boolean required
    • only_show_if_degraded boolean required
    • follow_redirects boolean required
    • alert_on_down boolean required
    • alert_on_recover boolean required
    • ssl_tracking boolean required
    • anomaly_detection boolean required
    • response_anomaly_sensitivity string, one of "low", "medium", "high" required
    • ssl_expires_at string or null required
    • ssl_last_checked_at string or null required
    • ssl_last_error string or null required
    • ssl_alert_threshold_days integer required
    • is_group boolean required
    • parent_id string or null required
    • last_checked_at string or null required
    • last_response_ms integer or null required
    • last_probe_error string or null required

      Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.

    • last_probe_error_at string or null required
    • next_check_at string or null required
    • consecutive_fails integer required
    • incident_threshold integer required
    • assertion_rules array of any or null required

      Null for both means off: no rules asserted, no degraded threshold.

    • degraded_after_ms integer or null required
    • maintenance_tolerance_sec integer required
    • description string or null required
    • description_source string or null, one of "ai_draft", "user", null required
    • site_kind string or null, one of "ecommerce", "saas", "api", "content", "corporate", "other", null required
    • intent string or null required
    • created_at string or null required
    • updated_at string or null required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X POST "https://api.uptizm.com/v1/monitors/MONITOR/pause" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: $(uuidgen)"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/pause', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/pause');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
        'Idempotency-Key: '.uniqid('', true),
    ],
]);

$response = curl_exec($curl);
import os
import uuid

import requests

response = requests.post(
    "https://api.uptizm.com/v1/monitors/MONITOR/pause",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
        "Idempotency-Key": str(uuid.uuid4()),
    },
)

print(response.json())
POST /monitors/{monitor}/resume monitors:write #

Resume a monitor

Schedules checks for a paused monitor again, starting with the next tick.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID
Idempotency-KeyheaderstringNoAny unique string per logical request.

Response 200 application/json

  • data MonitorResource required
    • id string required
    • team_id string required
    • name string required
    • url string or null required
    • type string required
    • method string, one of "get", "post", "head" required
    • status string required
    • paused_by_plan boolean required

      Why a paused monitor is paused: true when the plan stopped it, so the client offers an upgrade; false for a pause the customer chose.

    • paused_for_downtime boolean required

      True when a month of nothing but down readings paused a Free monitor.

    • last_status string or null, one of "up", "down", "degraded", "paused", "maintenance", null required
    • check_interval_sec integer required
    • effective_check_interval_sec integer required

      What the loop actually spends, which is the stored value clamped up to the plan's floor.

    • timeout_sec integer required
    • regions array of any required
    • expected_status_code integer required
    • request_headers array of any

      Both emitted so the edit form can prefill what the operator configured.

    • request_body string or null
    • ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • effective_ai_mode AiMode: string, one of "off", "suggest", "auto" required

      How much authority the AI has for a given monitor or workspace.

    • ai_auto_updates boolean required

      Read back by the monitor form's own switch.

    • auth_config array of any or null required
    • slo_target number or null required
    • escalation_policy_id string or null required

      The pinned paging ladder, or null to fall back to the team default.

    • uptime_24h string required

      Measured uptime over the trailing 24h, attached by the show action only (null in list/edit responses and while a monitor has no checks yet, which the client renders as "no data").

    • slo_down_minutes_7d string required
    • slo_observed_minutes_7d string required
    • slo_gap_minutes_7d string required
    • slo_measured_minutes_7d string required
    • slo_down_minutes_30d string required
    • slo_observed_minutes_30d string required
    • slo_gap_minutes_30d string required
    • slo_measured_minutes_30d string required
    • tags array of any required
    • show_on_status_page boolean required
    • only_show_if_degraded boolean required
    • follow_redirects boolean required
    • alert_on_down boolean required
    • alert_on_recover boolean required
    • ssl_tracking boolean required
    • anomaly_detection boolean required
    • response_anomaly_sensitivity string, one of "low", "medium", "high" required
    • ssl_expires_at string or null required
    • ssl_last_checked_at string or null required
    • ssl_last_error string or null required
    • ssl_alert_threshold_days integer required
    • is_group boolean required
    • parent_id string or null required
    • last_checked_at string or null required
    • last_response_ms integer or null required
    • last_probe_error string or null required

      Set when the EDGE refused to run a probe, which is a configuration problem on this monitor rather than an outage of its target.

    • last_probe_error_at string or null required
    • next_check_at string or null required
    • consecutive_fails integer required
    • incident_threshold integer required
    • assertion_rules array of any or null required

      Null for both means off: no rules asserted, no degraded threshold.

    • degraded_after_ms integer or null required
    • maintenance_tolerance_sec integer required
    • description string or null required
    • description_source string or null, one of "ai_draft", "user", null required
    • site_kind string or null, one of "ecommerce", "saas", "api", "content", "corporate", "other", null required
    • intent string or null required
    • created_at string or null required
    • updated_at string or null required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X POST "https://api.uptizm.com/v1/monitors/MONITOR/resume" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: $(uuidgen)"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/resume', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/resume');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
        'Idempotency-Key: '.uniqid('', true),
    ],
]);

$response = curl_exec($curl);
import os
import uuid

import requests

response = requests.post(
    "https://api.uptizm.com/v1/monitors/MONITOR/resume",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
        "Idempotency-Key": str(uuid.uuid4()),
    },
)

print(response.json())
POST /monitors/{monitor}/test monitors:write #

Run a check now

Fires an immediate one-off probe across the monitor's regions, outside its schedule.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID
Idempotency-KeyheaderstringNoAny unique string per logical request.

Response 202

No body.

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X POST "https://api.uptizm.com/v1/monitors/MONITOR/test" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json" \
  -H "Idempotency-Key: $(uuidgen)"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/test', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
});

console.log(response.status);
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/test');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
        'Idempotency-Key: '.uniqid('', true),
    ],
]);

$response = curl_exec($curl);
import os
import uuid

import requests

response = requests.post(
    "https://api.uptizm.com/v1/monitors/MONITOR/test",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
        "Idempotency-Key": str(uuid.uuid4()),
    },
)

print(response.status_code)
GET /monitors/{monitor}/checks monitors:read #

List a monitor's checks

The monitor's recent check readings, newest first, cursor-paginated.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID
per_pagequeryinteger, min 1, max 200NoPage size, clamped to 1 and the endpoint's maximum (200 on most lists).
cursorquerystringNoThe meta.next_cursor of the previous page.

Response 200 application/json

  • data array of MonitorCheckResource required
    • id string required
    • region string required
    • status string, one of "up", "down", "degraded", "paused", "maintenance" required
    • status_code integer or null required
    • response_ms integer or null required
    • timing_dns_ms integer required
    • timing_connect_ms integer required
    • timing_tls_ms integer required
    • timing_ttfb_ms integer required
    • timing_download_ms integer required
    • checked_at string, date-time required
    • error_message string or null required
  • links object required
    • first string or null required
    • last string or null required
    • prev string or null required
    • next string or null required
  • meta object required
    • path string or null required

      Base path for paginator generated URLs.

    • per_page integer, min 0 required

      Number of items shown per page.

    • next_cursor string or null required

      The "cursor" that points to the next set of items.

    • prev_cursor string or null required

      The "cursor" that points to the previous set of items.

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR/checks" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/checks', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/checks');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR/checks",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
GET /monitors/{monitor}/checks/{check} monitors:read #

Get one check

A single check reading of the monitor.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID
checkpathstringYesThe check ID

Response 200 application/json

  • data MonitorCheckResource required
    • id string required
    • region string required
    • status string, one of "up", "down", "degraded", "paused", "maintenance" required
    • status_code integer or null required
    • response_ms integer or null required
    • timing_dns_ms integer required
    • timing_connect_ms integer required
    • timing_tls_ms integer required
    • timing_ttfb_ms integer required
    • timing_download_ms integer required
    • checked_at string, date-time required
    • error_message string or null required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR/checks/CHECK" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/checks/CHECK', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/checks/CHECK');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR/checks/CHECK",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
GET /monitors/{monitor}/content monitors:read #

List archived content versions

The archived versions of the monitor's response body, most recently seen first, page-numbered.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID

Response 200 application/json

  • data array of MonitorContentVersionResource required
    • content_hash string required
    • byte_size integer required

      The RAW decoded length, not the size of the gzipped blob on disk.

    • content_type string or null required
    • truncated boolean required
    • first_seen_at string required
    • last_seen_at string required
  • links object required
    • first string or null required
    • last string or null required
    • prev string or null required
    • next string or null required
  • meta object required
    • current_page integer, min 1 required
    • from integer or null, min 1 required
    • last_page integer, min 1 required
    • links array of object required

      Generated paginator links.

      • url string or null required
      • label string required
      • active boolean required
    • path string or null required

      Base path for paginator generated URLs.

    • per_page integer, min 0 required

      Number of items shown per page.

    • to integer or null, min 1 required

      Number of the last item in the slice.

    • total integer, min 0 required

      Total number of items being paginated.

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR/content" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/content', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/content');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR/content",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
GET /monitors/{monitor}/content/candidates monitors:read #

List metric candidates

The values found in the monitor's newest archived body that a metric could extract, with the rule that extracts each.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID

Response 200 application/json

  • data array of any or null required
  • has_sample boolean required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR/content/candidates" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/content/candidates', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/content/candidates');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR/content/candidates",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
GET /monitors/{monitor}/content/{contentHash} monitors:read #

Download an archived version

Downloads one archived body, addressed by its sha256 content hash, with its original bytes.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID
contentHashpathstringYesThe sha256 content hash of the archived version: 64 lowercase hex characters.

Response 200 text/plain; charset=utf-8

No documented fields.

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR/content/CONTENT_HASH" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/content/CONTENT_HASH', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/content/CONTENT_HASH');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR/content/CONTENT_HASH",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
GET /monitors/{monitor}/uptime monitors:read #

Get uptime over a range

Totals of up, down and degraded readings and the uptime ratio for the requested range.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID

Response 200 application/json

  • data string required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR/uptime" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/uptime', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/uptime');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR/uptime",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
GET /monitors/{monitor}/response-times monitors:read #

Get response times over a range

Response times bucketed over the requested range, for charting.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID

Response 200 application/json

  • data array of object required

    The response-time buckets of the requested range, for charting.

    • id null required
    • region null required
    • status string, one of "down", "degraded", "maintenance", "up" required
    • status_code null required
    • response_ms integer required
    • timing_dns_ms null required
    • timing_connect_ms null required
    • timing_tls_ms null required
    • timing_ttfb_ms null required
    • timing_download_ms null required
    • checked_at string, date-time required
    • error_message null required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR/response-times" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/response-times', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/response-times');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR/response-times",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
GET /monitors/{monitor}/anomalies monitors:read #

List anomalies

The monitor's anomaly episodes inside the requested range, newest first.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID

Response 200 application/json

  • data array of string required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR/anomalies" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/anomalies', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/anomalies');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR/anomalies",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())
GET /monitors/{monitor}/status-history monitors:read #

Get the 90-day status history

Status-only daily buckets for the last 90 days. Takes no range.

Parameters

NameInTypeRequiredDescription
monitorpathstringYesThe monitor ID

Response 200 application/json

  • data array of object required
    • checked_at string, date-time required
    • status string, one of "down", "degraded", "maintenance", "up" required

Errors

  • 401 Unauthenticated
  • 403 The key lacks the ability this endpoint requires (required_ability names it), or the action is not allowed for the team.
  • 404 Not found
  • 429 Rate limited. Each key may make 120 reads (GET) and 30 writes per minute; wait for Retry-After seconds.

Code samples

curl -X GET "https://api.uptizm.com/v1/monitors/MONITOR/status-history" \
  -H "Authorization: Bearer $UPTIZM_API_KEY" \
  -H "Accept: application/json"
const response = await fetch('https://api.uptizm.com/v1/monitors/MONITOR/status-history', {
  method: 'GET',
  headers: {
    'Authorization': `Bearer ${process.env.UPTIZM_API_KEY}`,
    'Accept': 'application/json',
  },
});

const data = await response.json();
<?php

$curl = curl_init('https://api.uptizm.com/v1/monitors/MONITOR/status-history');

curl_setopt_array($curl, [
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer '.getenv('UPTIZM_API_KEY'),
        'Accept: application/json',
    ],
]);

$response = curl_exec($curl);
import os

import requests

response = requests.get(
    "https://api.uptizm.com/v1/monitors/MONITOR/status-history",
    headers={
        "Authorization": "Bearer " + os.environ["UPTIZM_API_KEY"],
        "Accept": "application/json",
    },
)

print(response.json())

Type to search the guides, resources and endpoints.