API reference

Everything the interface does, the API does.

One REST API at https://app.upfour.io/v1 — 233 endpoints, the same ones the product itself runs on. This page is the contract: how requests are shaped, how they fail, and what we promise not to break. Every reference page has a “Try it” panel that runs real requests from your browser with your own key.

Authentication

Create an API key in the app under Settings → API tokens and send it as a Bearer token. Live keys start with pls_live_, test keys with pls_test_ — test keys operate on your sandbox organization, so you can experiment without touching production monitors. Keys carry fine-grained scopes such as monitor.read, monitor.write, incident.write and webhook.write; each endpoint below names the scope it needs.

curl -s https://app.upfour.io/v1/me \
  -H "Authorization: Bearer $UP4_API_KEY"

Response envelope

Successful responses wrap their payload in a flat envelope; lists add cursor metadata:

{ "data": { "id": "…" } }

{
  "data": [ … ],
  "pagination": {
    "cursor": null,
    "next_cursor": null,
    "prev_cursor": null,
    "limit": 50,
    "has_more": false
  }
}

Errors

One shape across all 4xx and 5xx responses — sanitized, with a request id you can send us:

{
  "error": {
    "code": "permission_denied",
    "message": "API token does not have the required scope",
    "request_id": "req_…"
  }
}

Pagination

List endpoints use signed keyset cursors, not page numbers. Pass limit (max 250) and follow pagination.next_cursor. Cursors expire after 24 hours and are bound to their sort and filters; the errors are stable: cursor_invalid, cursor_expired, cursor_parameters_changed.

Idempotency

Send Idempotency-Key on mutating requests. Replaying the same key with the same body returns the stored response with Idempotency-Status: replayed; the same key with a different body returns 409 idempotency_key_conflict. Stored for 24 hours.

Versioning

The URL version is /v1 and additive changes land there. Breaking changes would require /v2, 12 months of parallel support and Sunset/Deprecation headers. X-API-Version pins compatible behavior; keys remember their default version.

Rate limits

Every response tells you where you stand:

HeaderMeaning
X-RateLimit-LimitRequests allowed in the current window
X-RateLimit-RemainingRequests left
X-RateLimit-ResetWhen the window resets
Retry-AfterSent with 429 — wait this long

Buckets are per token for authenticated calls, per IP for unauthenticated ones, per slug for heartbeat pings.

Conventions

IDs are UUIDs. Timestamps are RFC 3339 in UTC. Boolean query values are a strict true or false. Browser API calls use Authorization, Idempotency-Key and X-API-Version. Documentation and marketing origins are bearer-only CORS origins and never receive credentialed session access; only the exact app origin may send the product's HttpOnly session cookie.

Machine-readable

The whole contract as files — generated from the same route inventory that gates our releases, so they cannot drift from production: OpenAPI 3.1 (YAML) · OpenAPI 3.1 (JSON) · Postman collection. For AI tooling there is an llms.txt index of every docs page.

Reference

Monitoring
Monitors The heart of the API: create, list, pause, resume and delete the things we check every ten seconds. 23 endpoints
Monitor groups Folders for monitors — group fleets per project or per customer. 6 endpoints
Scheduled jobs (heartbeats) Cron jobs and backups that must call in before a deadline. Silence becomes an incident. 12 endpoints
Scheduled job groups Folders for scheduled jobs. 6 endpoints
Resource metadata Free-form key/value metadata on monitors and scheduled jobs — owner, playbook link, cost center. 2 endpoints
Alerting & response
Incidents Open, acknowledge, comment, escalate, resolve. Everything the incident timeline shows, writable. 26 endpoints
Severities Your incident severity ladder (SEV1…), fully customizable. 1 endpoints
Severity groups Group severities into reusable sets. 1 endpoints
Alert channels Where alerts go: email, Slack, Telegram, PagerDuty and friends. 6 endpoints
Alert plans (escalation policies) Who is told, in what order, after how long. 6 endpoints
On-call rotations Rotations, overrides, and "who is on call right now". 12 endpoints
Playbooks (runbooks) The steps you take when something breaks, attached to monitors, with shared progress. 7 endpoints
Pages & reporting
Status pages Public and client-facing uptime pages: structure, updates, subscribers, translations. 39 endpoints
Reports Availability and SLA reporting: summaries, trends, exports, schedules, share links. 21 endpoints
SLA policies Targets and business-hours masks that reports measure against. 5 endpoints
Share links Read-only client views — no accounts, no seats. 1 endpoints
Organization
Organization Company-level settings. 16 endpoints
Teams Teams and membership. 14 endpoints
Invites Invite colleagues — seats are unlimited everywhere. 4 endpoints
Clients (agency mode) The agency partition: clients, client teams, share links, archive/unarchive. 12 endpoints
Client templates Materialize monitors, pages and alert plans for a new client in one step. 5 endpoints
Platform
Token introspection Who am I? What can this key do? The first call to make. 1 endpoints
Webhook subscriptions Outbound, signed webhooks — subscribe, test, inspect deliveries, redeliver. 7 endpoints