Monitoring, status pages and incidents, over REST.
One REST API at https://app.upfour.io/v1 with 271 routes for
monitors, scheduled jobs, incidents, status pages, alerting, on-call, playbooks, clients, teams,
webhooks, reports and company settings. Managing API keys, billing and personal account
settings stays in the signed-in app. This page summarizes how requests are shaped, how they fail
and how changes are announced; each topic has its own page. 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. Every key starts with
pls_ and carries scopes such as monitor.read or
incident.write; each endpoint names the scope it needs. A key cannot create or manage other keys.
API keys and scopes has the details and the errors.
curl -s https://app.upfour.io/v1/me \
-H "Authorization: Bearer $UP4_API_KEY"Response envelope
Successful calls made with an API key return their payload as { "data": … }; lists add a
pagination object. See responses and errors.
Errors
Every 4xx and 5xx response is { "error": { "code", "message", "request_id" } }, with
details when there is more to say. Branch on the code. The
error catalogue lists every code with its cause and fix.
Pagination
GET /monitors pages with signed cursors (limit up to 250,
pagination.next_cursor); the incident lists use page and
per_page, and most other lists return everything at once.
Pagination has the parameters and the cursor errors.
Idempotency
Send Idempotency-Key on POST and
PATCH requests. The same key with the same body returns the stored response for 24 hours; the same key with a
different body is 409 idempotency_key_conflict.
Idempotency lists what is and is not stored.
Versioning
Every operation is served under /v1; there is no /v2, and the API sends no
Deprecation or Sunset header. The
changelog records every change, with a filter for breaking ones, and
versioning says what X-API-Version does today.
Rate limits
Authenticated calls are limited per key (1,200 requests per minute, bursts of 300) and per IP address (3,000 per minute). A
429 carries Retry-After.
Rate limits explains the headers and how to back off.
Client scope
In agency mode, pass client_id or all_clients=true on list calls and
client_id in request bodies. See client scope.
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
Every route as files, generated from the router’s route inventory: OpenAPI 3.1 (YAML) · OpenAPI 3.1 (JSON) · Postman collection. Parameters are typed; most request bodies are open objects, and the field tables on the reference pages cover monitors, scheduled jobs and alert channels so far. 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, as often as every ten seconds. | 28 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 |
| Incidents | Open, acknowledge, comment, escalate, resolve. | 27 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. | 8 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 |
| Health advisor | Findings about your setup, such as monitors that alert nobody, and one call to apply a suggested fix. | 2 endpoints |
| Status pages | Public and client-facing uptime pages: structure, updates, subscribers, translations. | 53 endpoints |
| Status page update templates | Saved wording for status page updates: title, status and message to reuse. | 4 endpoints |
| Status page design templates | Reusable status page designs: save the look of a page once and apply it to other pages. | 6 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 |
| Organization | Company-level settings. | 18 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. | 13 endpoints |
| Client templates | Materialize monitors, pages and alert plans for a new client in one step. | 6 endpoints |
| 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. | 8 endpoints |
Was this page helpful?