Developer docs
REST API
Key-authenticated endpoints for integrations that cannot do OAuth — Zapier, Make, CI jobs and alert routers. Incidents, the on-call directory and who is on call now.
The REST API covers what integrations most often need without a sign-in flow: raising incidents, keeping the on-call directory in sync, and asking who is on call. Configuration (teams, rotations, escalation policies, alert integrations, services, group on-calls) has its own versioned surface below, which the Terraform provider is built on. For overrides and incidents from an agent, use the MCP server.
API keys
- An org admin creates keys in the dashboard: API Keys in the main menu → Generate API key. Names are unique per workspace.
- Send the key in the
X-APIKEYheader. Endpoints that accept a key also accept a dashboard session token inAuthorization; the key wins if both are present. - A key acts as the person who created it, so anything that needs an org admin needs a key created by one.
- Treat a key like a password. Revoke it from the same page the moment it might have leaked.
Check a key:
curl -H "X-APIKEY: $PAGERLY_KEY" https://api.pagerly.io/o/test/apikey
# → { "message": "API validated successfully", "organisation": "<workspace>" }
Endpoints
Base URL https://api.pagerly.io.
| Method | Path | Purpose |
|---|---|---|
POST |
/o/incident |
Create or update an incident. trigger and integration are recorded as Manual. |
GET |
/o/currentusers |
Who is on call right now, every team. |
GET |
/o/zapier/allteams |
[{ id, name }] for every team. |
GET |
/o/oncalluser?email= |
One directory entry. |
POST |
/o/oncalluser |
Create or replace a directory entry: name, email, phoneNumber, countryCode, role, optional originalEmail to rename. Omitted fields are cleared. Org admin. |
POST |
/o/oncalluser/phone |
Merge-update phone and country code. |
POST |
/o/oncalluser/role |
Change a person’s role. Org admin. |
POST |
/o/oncalluser/testcall |
Place a test call to a number. |
DELETE |
/o/oncalluser?email= |
Remove from the directory. Org admin. |
POST |
/o/zapier/subscribe, /o/zapier/unsubscribe |
Zapier REST hooks for on-call changes. |
POST |
/o/make/subscribe, /o/make/unsubscribe/{id} |
Make (Integromat) equivalents. |
Example — raise an incident from a deploy pipeline:
curl -X POST https://api.pagerly.io/o/incident \
-H "X-APIKEY: $PAGERLY_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "Checkout error rate above 5%", "severity": "P2", "description": "Started after deploy 4f2a1c" }'
Inbound alerts
Monitoring tools don’t use this API. Each alert source — Datadog, Grafana, CloudWatch, Prometheus, and the rest — gets its own webhook URL from Integrations in the dashboard, with a payload template per tool.
Configuration API (/api/v1)
The versioned surface behind the Terraform provider (pagerly/pagerly on the Terraform Registry). Same X-APIKEY, base https://api.pagerly.io/api/v1, JSON in and out. Each resource’s GET returns exactly the fields its PUT accepts, with people as email addresses. Errors are { "error": "...", "status": 400 }.
| Path | Methods |
|---|---|
/me |
GET — which workspace the key belongs to and who it acts as |
/oncall?team_id= |
GET — who is on call now |
/teams, /teams/{id} |
GET POST PUT DELETE — a team takes exactly one of rotation or sync |
/escalation-policies, /escalation-policies/{id} |
GET POST PUT DELETE |
/alert-integrations, /alert-integrations/{id} |
GET POST PUT DELETE |
/services, /services/{id} |
GET POST PUT DELETE |
/oncall-groups, /oncall-groups/{name} |
GET POST PUT DELETE |
/users, /users/{email} |
GET POST PUT DELETE |
curl -H "X-APIKEY: $PAGERLY_KEY" https://api.pagerly.io/api/v1/teams
Writes need the permissions of the key’s creator; most need an org admin. Send one write at a time: configuration is stored per workspace, and two overlapping writes can lose one of them.
Updated 20 October 2026
Put your on-call where your team already is.
Install in two minutes. Import your existing schedule. Page someone tonight.
