Create an API key
- Go to API keys → Create key.
- Name it and tick only the Scopes it needs:
pages:read,pages:write,components:write,incidents:write,monitors:write,probes:write,subscribers:readorsubscribers:write. - Copy the key. It starts with sk_ and is shown once.
Keys are created and revoked by an admin signed in to the admin; a key can’t create another key.
Make a request
Send the key as a bearer token. Management endpoints are under /api/v1/admin/; public endpoints are under /api/v1/pages/ and need no key.
curl https://app.upstreamr.com/api/v1/admin/pages \
-H "Authorization: Bearer sk_…"
{"data":[…]}Answers come as { "data": … }; errors as { "error": { "code", "message" } }.
Rate limits
The management API allows 300 requests a minute per key or signed-in user, and public reads 300 a minute per address. Over the limit, the answer is 429 with a Retry-After header saying when to try again.
Statuspage-compatible API on your page
Every page answers Atlassian Statuspage’s public read API on its own address (your domain or <page>.upstreamr.page), with Statuspage’s fields, nesting and values, so tools built for Statuspage read your page as they are. No key, CORS open, cached for up to 30 seconds:
/api/v2/summary.json
/api/v2/status.json
/api/v2/components.json
/api/v2/incidents/unresolved.json
/api/v2/incidents.json
/api/v2/scheduled-maintenances/upcoming.json
/api/v2/scheduled-maintenances/active.json
/api/v2/scheduled-maintenances.jsonGroups are entries with "group": true and their components’ ids; showcase is the component’s Show uptime. Texts come in the page’s language, or add ?lang=ro. What Upstreamr doesn’t have stays empty, as on a Statuspage page that doesn’t use it: no postmortem state, no affected_components per update, and a cancelled maintenance isn’t listed.
Your page’s /api lists these with its live answers, the feeds and the badge, for people who build on your status. Its /api/openapi.json describes only the public endpoints; this reference, with the management API, is on the admin’s address.
Feeds, calendar and badges
Every public page also has, with no key, a feed, a calendar and a badge. On the page’s own address they’re short: /feed.atom, /feed.rss and /maintenance.ics (plus /history.atom and /history.rss, the addresses Atlassian Statuspage uses, so feed readers keep working after a move). Through the API:
https://app.upstreamr.com/api/v1/pages/<page>/feed.atom
https://app.upstreamr.com/api/v1/pages/<page>/feed.rss
https://app.upstreamr.com/api/v1/pages/<page>/maintenance.ics
https://app.upstreamr.com/api/v1/pages/<page>/badge.svg
https://app.upstreamr.com/api/v1/pages/<page>/og.png
https://app.upstreamr.com/api/v1/pages/<page>/incidents/<id>/og.pngThe two og.png paths are the link-preview pictures (1200 × 630), also at /og.png and /incidents/<id>/og.png on the page’s address. They redirect to the current picture’s own address, which changes with the page’s state; private pages have none.
A push monitor’s URL is https://app.upstreamr.com/api/v1/push/<token>; the admin shows it once, when you create the monitor.