Everything an AI agent can do with the PagerDuty API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints28
API versionv2
Last updated23 June 2026
Orientation

How the PagerDuty API works.

The PagerDuty API is how an app or AI agent works with an on-call account: listing and creating incidents, acknowledging or resolving them, adding notes, and reading who is on call across schedules and escalation policies. Access is granted through an API token or an OAuth token, and a scoped OAuth token carries per-resource read or write scopes that set which resources a call can touch. A separate events route opens and closes incidents using a per-service key, and a state change can be pushed to a registered subscription.

28Endpoints
8Capability groups
15Read
13Write
14Permissions
Authentication
PagerDuty's REST API authenticates with either an API token or an OAuth 2.0 token, sent as Authorization: Token token= or as a Bearer token. An API key can be account-level (acts for the whole account, read-write or read-only) or user-level (inherits that user's permissions). Writes that act for a person, like creating an incident, also require a From header naming a valid user. The Events API is separate and authenticates with a per-service routing key.
Permissions
Scoped OAuth issues tokens carrying granular per-resource scopes, like incidents.read and incidents.write, where a GET needs the read scope and a write method needs the write scope. A call missing the required scope returns 403. Account API keys instead come in read-write or read-only form, and a user key is bounded by that user's own abilities.
Versioning
The REST API is pinned to version 2 through the Accept header application/vnd.pagerduty+json;version=2 rather than a path segment. Changes are mostly additive and published in a dated changelog, so sending the versioned Accept header keeps responses stable as fields are added.
Data model
PagerDuty is resource-oriented REST returning JSON. A service triggers incidents, an escalation policy decides who is paged, and a schedule plus overrides decides who is on call at a given moment. Incidents are opened and closed either through the REST API or by sending events with a routing key to the separate Events API, and a state change can be delivered to a V3 webhook subscription.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to PagerDuty determines what it can reach. There is a route for reading and changing accounts, a separate route for sending events that open and close incidents, and a hosted server that exposes PagerDuty tools to agents, and each is governed by the token behind it and the scopes that token carries.

Ways to connect

REST API v2

The REST API takes and returns JSON at https://api.pagerduty.com, and pins the response shape with the Accept header application/vnd.pagerduty+json;version=2. A call authenticates with an account API token or a user OAuth token sent as Authorization: Token token=... or Bearer. Writes that act on a user's behalf, like creating an incident, also need a From header naming a valid user. Lists page with limit and offset by default, and some endpoints use a cursor.

Best forReading and changing accounts: incidents, services, schedules, users, and teams.
Governed byThe token and the OAuth scopes it carries.
Docs ↗

Events API v2

The Events API opens, acknowledges, and resolves incidents by POSTing a JSON event to https://events.pagerduty.com/v2/enqueue, and records deploys at /v2/change/enqueue. It authenticates with a 32-character integration routing key tied to one service, not an account token, so a sender can only affect that service. The event_action field is trigger, acknowledge, or resolve, and a dedup_key correlates the three for the same alert.

Best forLetting monitoring systems and agents open and close incidents.
Governed byThe integration routing key for a single service.
Docs ↗

MCP server

PagerDuty publishes a first-party Model Context Protocol server that exposes PagerDuty tools to AI agents and clients like Claude Desktop, Cursor, and VS Code. A hosted, OAuth-based remote server runs at mcp.pagerduty.com/mcp with no local install, and an open-source build runs locally via uvx or Docker with a user API token. It exposes tools for incidents, services, schedules, on-calls, escalation policies, teams, users, and event orchestrations. By default only read tools are available; write tools are off unless the server is started with the --enable-write-tools flag.

Best forConnecting an AI agent to PagerDuty through MCP.
Governed byThe OAuth grant or API token, and whether write tools are enabled.
Docs ↗

V3 webhook subscriptions

PagerDuty POSTs event payloads to an HTTPS endpoint registered as a V3 webhook subscription, created in the web app or via POST /webhook_subscriptions. A subscription is filtered to a service, team, or the whole account and lists the exact event types it wants. The receiver verifies the X-PagerDuty-Signature header against the subscription's signing secret to confirm the request came from PagerDuty.

Best forReceiving PagerDuty events at an app or AI agent without polling.
Governed byThe signing secret on the subscription.
Docs ↗
Authentication

Account API token (full access)

An account-level REST API key acts for the whole account and is not tied to a person. A read-write key can call every endpoint; a read-only key is limited to GET requests. Writes that act on a user's behalf still require a From header naming a valid user. The key is sent as Authorization: Token token=.

TokenAPI key (Token token=...)
Best forServer-side automation that acts for the whole account.
Docs ↗

User API token

A user-level REST API key inherits that user's permissions and abilities, so its reach matches what the person can do. It is sent the same way as an account key and is the token used to call user-specific endpoints like the current user.

TokenAPI key (Token token=...)
Best forActing as a specific person with that person's permissions.
Docs ↗

Scoped OAuth 2.0

Scoped OAuth issues a token that carries granular read or write scopes per resource, like incidents.read or incidents.write. A GET needs the resource's read scope and a PUT, POST, or DELETE needs its write scope; a call missing the required scope returns 403. This is the route for an app to reach only the resources it was granted.

TokenOAuth 2.0 bearer token with resource scopes
Best forLeast-privilege app access scoped to specific resources.
Docs ↗

Events API routing key

The Events API authenticates with a 32-character integration routing key tied to a single service, not an account token. A holder can only open and close incidents on that one service, which keeps a leaked key contained to one service rather than the whole account.

TokenIntegration key (routing_key)
Best forMonitoring tools and agents that only need to open and close incidents.
Docs ↗
Capability map

What an AI agent can do in PagerDuty.

The PagerDuty API is split into areas an agent can act on, like incidents, services, schedules, escalation policies, users, teams, and on-calls. Each area has its own methods, and writes in some areas change who gets paged and when.

Endpoint reference

Every PagerDuty API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Incidents

Methods for listing, getting, creating, and managing incidents and their notes.8

Read-only. Scoped OAuth requires incidents.read.

Acts onincident
Permission (capability)incidents.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onincident
Permission (capability)incidents.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Requires a From header set to a valid user's email. Pages the on-call responder.

Acts onincident
Permission (capability)incidents.write
VersionAvailable since the API’s base version
Webhook eventincident.triggered
Rate limitStandard limits apply

Requires a From header. Setting status to acknowledged or resolved fires the matching webhook.

Acts onincident
Permission (capability)incidents.write
VersionAvailable since the API’s base version
Webhook eventincident.acknowledged
Rate limitStandard limits apply

Requires a From header. Bulk status changes across up to a set number of incidents per call.

Acts onincident
Permission (capability)incidents.write
VersionAvailable since the API’s base version
Webhook eventincident.resolved
Rate limitStandard limits apply

Read-only.

Acts onincident_note
Permission (capability)incidents.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Requires a From header set to a valid user's email.

Acts onincident_note
Permission (capability)incidents.write
VersionAvailable since the API’s base version
Webhook eventincident.annotated
Rate limitStandard limits apply

Read-only.

Acts onalert
Permission (capability)incidents.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Services

Methods for working with services, the things PagerDuty monitors.4

Read-only.

Acts onservice
Permission (capability)services.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onservice
Permission (capability)services.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A core configuration write.

Acts onservice
Permission (capability)services.write
VersionAvailable since the API’s base version
Webhook eventservice.created
Rate limitStandard limits apply

Changes how the service triggers and routes incidents.

Acts onservice
Permission (capability)services.write
VersionAvailable since the API’s base version
Webhook eventservice.updated
Rate limitStandard limits apply

Schedules

Methods for working with on-call schedules and overrides.3

Read-only.

Acts onschedule
Permission (capability)schedules.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onschedule
Permission (capability)schedules.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes who is paged during the override window.

Acts onoverride
Permission (capability)schedules.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Escalation Policies

Methods for working with escalation policies, the rules for who gets paged next.3

Read-only.

Acts onescalation_policy
Permission (capability)escalation_policies.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onescalation_policy
Permission (capability)escalation_policies.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Defines the chain of responders an incident escalates through.

Acts onescalation_policy
Permission (capability)escalation_policies.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Users

Methods for working with the people in an account.4

Read-only.

Acts onuser
Permission (capability)users.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only.

Acts onuser
Permission (capability)users.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Read-only. Only works with a user-level OAuth token, not an account API key.

Acts onuser
Permission (capability)users.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Requires a From header set to an admin user's email.

Acts onuser
Permission (capability)users.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Teams

Methods for working with teams and their membership.3

Read-only.

Acts onteam
Permission (capability)teams.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A core configuration write.

Acts onteam
Permission (capability)teams.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes what the user can see and be paged for.

Acts onteam_membership
Permission (capability)teams.write
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

On-Calls

Methods for reading who is currently on call.1

Read-only. Resolves schedules and overrides into the actual on-call people.

Acts ononcall
Permission (capability)oncalls.read
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Events API

Methods for opening and closing incidents by sending events with a routing key.2

Authenticated by the service's routing key, not an account token. event_action is trigger, acknowledge, or resolve; dedup_key correlates the three.

Acts onevent
Permission (capability)Integration routing key
VersionAvailable since the API’s base version
Webhook eventincident.triggered
Rate limitDynamic per-service limit

Authenticated by the service's routing key. Change events are informational and do not page anyone.

Acts onchange_event
Permission (capability)Integration routing key
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitDynamic per-service limit
No endpoints match those filters.
Webhooks

Webhook events.

PagerDuty can notify an app when something happens in an account, like an incident being triggered, acknowledged, or resolved. A V3 webhook subscription sends the chosen event types to a registered endpoint, so an integration learns about activity without polling.

EventWhat it signalsTriggered by
incident.triggeredAn incident was created and is active, by an event or a create call. The point where the on-call responder is paged./incidents
https://events.pagerduty.com/v2/enqueue
incident.acknowledgedAn incident was acknowledged by a responder, pausing further escalation./incidents/{id}
/incidents
https://events.pagerduty.com/v2/enqueue
incident.resolvedAn incident was resolved and closed./incidents/{id}
/incidents
https://events.pagerduty.com/v2/enqueue
incident.annotatedA note was added to an incident./incidents/{id}/notes
incident.escalatedAn incident escalated to the next level of its escalation policy./incidents/{id}
incident.reassignedAn incident was reassigned to a different responder./incidents/{id}
service.createdA new service was created in the account./services
service.updatedA service was updated, such as its escalation policy or settings./services/{id}
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

PagerDuty limits how fast an app can call. The REST API counts requests per minute against the token making them, and the Events API that opens and closes incidents is metered separately and adjusts dynamically.

Request rate

The REST API allows 960 requests per minute. The count is kept three ways at once: per account API key, per user across all of that user's keys, and per PagerDuty app against each account it can access. Going over returns HTTP 429 with ratelimit-limit, ratelimit-remaining, and ratelimit-reset response headers, where ratelimit-reset is the number of seconds to wait before retrying. The Events API that opens and closes incidents is metered separately and adjusts dynamically based on incoming traffic, so a 429 there should be retried with backoff.

Pagination

Most list endpoints use classic pagination with limit (the page size) and offset (where to start), and a more flag in the response signals whether further pages remain. The sum of limit and offset cannot exceed 10,000, or the call returns a 400. The total count is omitted by default for speed and only returned when total=true is passed. Some endpoints instead use cursor pagination, returning a next_cursor to pass on the following request.

Request size

Classic pagination caps limit at 100 per page and cannot reach beyond the 10,000th record. An Events API routing key is a 32-character string. A V3 webhook subscription is limited to a set number per service, team, or account scope.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
4002001 Invalid Input ProvidedThe request was malformed: a field is missing, an extra or wrong field name was sent, or a value is invalid. Classic pagination also returns 400 when limit plus offset exceeds 10,000.Read the error message and the errors array, fix the request body or parameters, and resend.
4002002 Arguments Caused ErrorThe arguments were understood but produced an error when processed.Inspect the errors array for the specific cause and correct the offending values.
401UnauthorizedThe request could not be authenticated. The token is missing, malformed, or invalid, or the Authorization header format is wrong.Send a valid token as Authorization: Token token= or as a Bearer OAuth token, exactly as documented.
4022012 Account ExpiredThe account is expired or on a plan that cannot use this feature of the API.Resolve the account or plan status before retrying.
4032010 Access DeniedThe token authenticated but lacks the permission, ability, or OAuth scope for this request. Scoped OAuth returns 403 when the token is missing the required read or write scope.Grant the needed scope or ability, or use a token with sufficient access.
4042100 Not FoundThe requested resource does not exist or is not visible to this token.Verify the id and confirm the resource exists in this account and is visible to the token.
429Too Many RequestsA rate limit was hit. The response carries ratelimit-limit, ratelimit-remaining, and ratelimit-reset headers.Wait the number of seconds in ratelimit-reset, then retry with backoff. Smooth the request rate.
Versioning & freshness

Version history.

PagerDuty pins the REST API to version 2 through an Accept header rather than a path segment, and ships dated, mostly additive changes through its changelog.

Version history

What changed, and when

Latest versionv2
v2Current version
REST API v2 (current)

The REST API is pinned to version 2 through the Accept header application/vnd.pagerduty+json;version=2 rather than a URL path segment. Changes are mostly additive and shipped through a dated changelog, so an integration that sends the versioned Accept header keeps stable responses as new fields and endpoints are added.

What changed
  • Single, continuously updated v2 surface selected by the versioned Accept header.
  • Additive changes (new endpoints and fields) published in the dated changelog.
  • Events API v2 and V3 webhook subscriptions are the current event and webhook surfaces.
2023-webhooks-v3
V3 webhook subscriptions replace V2 extensions

V3 webhook subscriptions became the way to receive events, letting a subscription choose exact event types and filter by service, team, or account, and verify payloads with the X-PagerDuty-Signature header. Older V2 generic webhook extensions are superseded.

What changed
  • Per-subscription event-type selection (incident.triggered, incident.acknowledged, incident.resolved, and more).
  • Filtering by service, team, or account scope.
  • Signed payloads verified against a per-subscription signing secret.

Send the versioned Accept header on every call so responses stay stable as features are added.

PagerDuty API changelog ↗
Questions

PagerDuty API, answered.

What is the difference between the REST API and the Events API?+
They serve different jobs. The REST API at api.pagerduty.com reads and changes account objects, like incidents, services, schedules, and users, and authenticates with an account or user token. The Events API at events.pagerduty.com opens, acknowledges, and resolves incidents by sending events, and authenticates with a per-service routing key rather than an account token, so a sender can only affect the one service the key belongs to.
Why do some write requests need a From header?+
Actions that act on a user's behalf, like creating an incident, adding a note, or resolving an incident through the REST API, require a From header set to the email address of a valid PagerDuty user. PagerDuty records that user as the actor, and the call fails if the header is missing or names a user without permission for the action.
How do API scopes work with OAuth?+
Scoped OAuth tokens carry granular scopes per resource, like incidents.read or incidents.write. A GET (listing or getting) needs the resource's read scope, and a PUT, POST, or DELETE needs its write scope. Requesting only the scopes an app needs limits its reach, and a request whose token lacks the required scope returns a 403.
What are PagerDuty's rate limits?+
The REST API allows 960 requests per minute, counted per account API key, per user across all of that user's keys, and per app against each account. Over the limit returns a 429 with ratelimit-limit, ratelimit-remaining, and ratelimit-reset headers; ratelimit-reset is the seconds to wait. The Events API is metered separately and adjusts dynamically, so a 429 there should be retried with backoff.
How do I receive incident updates without polling?+
Create a V3 webhook subscription, in the web app or via POST /webhook_subscriptions, filtered to a service, team, or the whole account, and list the event types to receive, like incident.triggered, incident.acknowledged, and incident.resolved. PagerDuty POSTs each matching event to the endpoint, signed with an X-PagerDuty-Signature header that the receiver verifies against the subscription's signing secret.
Does PagerDuty have an official MCP server for AI agents?+
Yes. PagerDuty publishes a first-party Model Context Protocol server. A hosted, OAuth-based remote server runs at mcp.pagerduty.com/mcp with no local install, and an open-source build runs locally via uvx or Docker with a user API token. It exposes tools for incidents, services, schedules, on-calls, escalation policies, teams, and users, and only read tools are available unless the server is started with the --enable-write-tools flag.
Related

More developer API guides for agents

What is Bollard AI?

Control what every AI agent can do in PagerDuty.

Bollard AI sits between a team's AI agents and PagerDuty. Grant each agent exactly the access it needs, read or write, resource by resource, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared PagerDuty API token.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
PagerDuty
On-Call Agent
View incidents ResourceOffReadFull use
Resolve incidents ActionOffReadFull use
Add incident notes ActionOffReadFull use
Schedules ResourceOffReadFull use
Per-agent access, set in Bollard AI, not in PagerDuty