API

API: monitors

List, create, update, pause and delete monitors.

List monitors

GET /monitors?clientWorkspaceId=&type=&status=

Create a monitor

curl -X POST https://app.tenium.app/api/v1/monitors \
  -H "Authorization: Bearer tn_live_3f9a..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Client A shop",
    "type": "http",
    "url": "https://shop.clienta.com",
    "intervalSec": 30,
    "timeoutSec": 10,
    "regions": ["fra", "lon", "ams", "nyc", "sfo", "sgp"],
    "expectedStatus": ["2xx", "3xx"],
    "keyword": { "mode": "contains", "value": "Add to cart" },
    "headers": { "x-tenium-secret": "YOUR_SECRET" },
    "contactIds": ["6d2c9f1e-0b7a-4b5e-9d3c-5a1f2e8b7c4d"],
    "clientWorkspaceId": null,
    "tags": ["woocommerce", "client-a"]
  }'

Response 201 Created:

{
  "id": "a3f1c2d4-9e8b-4f6a-b7c5-1d2e3f4a5b6c",
  "accountId": "0f8e7d6c-5b4a-4392-8172-6f5e4d3c2b1a",
  "clientWorkspaceId": null,
  "name": "Client A shop",
  "type": "http",
  "url": "https://shop.clienta.com",
  "intervalSec": 30,
  "timeoutSec": 10,
  "regions": ["fra", "lon", "ams", "nyc", "sfo", "sgp"],
  "expectedStatus": ["2xx", "3xx"],
  "keyword": { "mode": "contains", "value": "Add to cart" },
  "headers": { "x-tenium-secret": "••••" },
  "status": "pending",
  "paused": false,
  "contactIds": ["6d2c9f1e-0b7a-4b5e-9d3c-5a1f2e8b7c4d"],
  "tags": ["woocommerce", "client-a"],
  "lastCheckAt": null,
  "nextCheckAt": "2026-01-20T10:15:03Z",
  "createdAt": "2026-01-20T10:15:00Z",
  "updatedAt": "2026-01-20T10:15:00Z"
}

intervalSec below the plan minimum returns 422 with plan_limit. Secret header values are masked in every response.

Fields by type

TypeRequiredOptional
http, keyword, jsonurlmethod, body, headers, expectedStatus, keyword, assertions
pinghostpackets, lossThreshold
porthost, portprotocol (tcp/udp), send, expect
dnshost, recordTypeexpected, resolver
sslhostport, warnDays
domainhostwarnDays
heartbeatperiodSec or crongraceSec, timezone

Update

PATCH /monitors/{id}

Send only the fields to change.

Pause and resume

POST /monitors/{id}/pause
POST /monitors/{id}/resume

Check now

POST /monitors/{id}/check

Queues an immediate check from every region. Rate-limited to one per monitor per 10 seconds.

Delete

DELETE /monitors/{id}

Returns 204. History is kept for 30 days for undo, then purged.

Checks history

GET /monitors/{id}/checks?from=&to=&region=

Returns individual check results with timings. Retention follows the plan (90 to 730 days).