Opsgenie shuts down April 2027 - migrate to Pagerly in one click
PagerlyPagerly

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-APIKEY header. Endpoints that accept a key also accept a dashboard session token in Authorization; 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.