PagerDuty Add-Ons API
Developers can write their own functionality to insert into PagerDuty's UI.
Developers can write their own functionality to insert into PagerDuty's UI.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/pagerduty-add-ons-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: 'This document describes the PagerDuty REST APIs.
For guides and examples please visit our Documentation.
Our REST APIs are defined in OpenAPI v3.x. You can view the schema at github.com/PagerDuty/api-schema.
Note that properties in some schemas have fields not shown by default such as `readOnly`, `format`, and `default`. Hover your cursor over the right column that looks like `optional+1` to see the full list of fields.'
contact:
name: PagerDuty Support
url: http://www.pagerduty.com/support
email: support@pagerduty.com
title: PagerDuty Add Ons API
version: 2.0.0
servers:
- url: https://api.pagerduty.com
description: PagerDuty V2 API.
security:
- api_key: []
tags:
- name: Add Ons
description: Developers can write their own functionality to insert into PagerDuty's UI.
paths:
/addons:
description: List and add Add-ons to your account.
get:
x-pd-requires-scope: addons.read
tags:
- Add Ons
operationId: listAddon
description: 'List all of the Add-ons installed on your account.
Addon''s are pieces of functionality that developers can write to insert new functionality into PagerDuty''s UI.
For more information see the API Concepts Document
Scoped OAuth requires: `addons.read`'
summary: PagerDuty List installed Add-ons
parameters:
- $ref: '#/components/parameters/offset_limit'
- $ref: '#/components/parameters/offset_offset'
- $ref: '#/components/parameters/offset_total'
- $ref: '#/components/parameters/header_Accept'
- $ref: '#/components/parameters/header_Content-Type'
- $ref: '#/components/parameters/include_addon'
- $ref: '#/components/parameters/addon_services'
- $ref: '#/components/parameters/addon_filter'
responses:
'200':
description: A paginated array of installed Add-ons.
content:
application/json:
schema:
allOf:
- $ref: '#/components/schemas/Pagination'
- type: object
properties:
addons:
type: array
items:
$ref: '#/components/schemas/AddonReference'
required:
- addons
examples:
response:
summary: Example Response
value:
addons:
- id: PKX7619
type: full_page_addon_reference
summary: Internal Status Page
self: https://api.pagerduty.com/addons/PKX7619
html_url: null
name: Internal Status Page
src: https://intranet.example.com/status
limit: 25
offset: 0
more: false
total: null
'400':
$ref: '#/components/responses/ArgumentError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
post:
x-pd-requires-scope: addons.write
tags:
- Add Ons
operationId: createAddon
description: 'Install an Add-on for your account.
Addon''s are pieces of functionality that developers can write to insert new functionality into PagerDuty''s UI.
Given a configuration containing a `src` parameter, that URL will be embedded in an `iframe` on a page that''s available to users from a drop-down menu.
For more information see the API Concepts Document
Scoped OAuth requires: `addons.write`'
summary: PagerDuty Install an Add-on
parameters:
- $ref: '#/components/parameters/header_Accept'
- $ref: '#/components/parameters/header_Content-Type'
requestBody:
content:
application/json:
schema:
type: object
properties:
addon:
$ref: '#/components/schemas/Addon'
required:
- addon
examples:
request:
summary: Request Example
value:
addon:
type: full_page_addon
name: Internal Status Page
src: https://intranet.example.com/status
description: The Add-on to be installed.
responses:
'201':
description: The Add-on that was installed.
content:
application/json:
schema:
type: object
properties:
addon:
$ref: '#/components/schemas/AddonReference'
required:
- addon
examples:
response:
summary: Response Example
value:
addon:
id: PKX7619
type: full_page_addon_reference
summary: Internal Status Page
self: https://api.pagerduty.com/addons/PKX7619
html_url: null
name: Internal Status Page
src: https://intranet.example.com/status
'400':
$ref: '#/components/responses/ArgumentError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
/addons/{id}:
description: Perform actions on the specified Add-on.
get:
x-pd-requires-scope: addons.read
tags:
- Add Ons
operationId: getAddon
description: 'Get details about an existing Add-on.
Addon''s are pieces of functionality that developers can write to insert new functionality into PagerDuty''s UI.
For more information see the API Concepts Document
Scoped OAuth requires: `addons.read`'
summary: PagerDuty Get an Add-on
parameters:
- $ref: '#/components/parameters/header_Accept'
- $ref: '#/components/parameters/header_Content-Type'
- $ref: '#/components/parameters/id'
responses:
'200':
description: The requested Add-on.
content:
application/json:
schema:
type: object
properties:
addon:
$ref: '#/components/schemas/Addon'
required:
- addon
examples:
response:
summary: Example Response
value:
addon:
id: PKX7F81
type: incident_show_addon
name: Service Runbook
src: https://intranet.example.com/runbook.html
services:
- id: PIJ90N7
type: service
summary: My Application Service
self: https://api.pagerduty.com/services/PIJ90N7
html_url: https://subdomain.pagerduty.com/service-directory/PIJ90N7
'400':
$ref: '#/components/responses/ArgumentError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
delete:
x-pd-requires-scope: addons.write
tags:
- Add Ons
operationId: deleteAddon
description: 'Remove an existing Add-on.
Addon''s are pieces of functionality that developers can write to insert new functionality into PagerDuty''s UI.
For more information see the API Concepts Document
Scoped OAuth requires: `addons.write`'
summary: PagerDuty Delete an Add-on
parameters:
- $ref: '#/components/parameters/header_Accept'
- $ref: '#/components/parameters/header_Content-Type'
- $ref: '#/components/parameters/id'
responses:
'204':
description: The Add-on was deleted successfully.
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
put:
x-pd-requires-scope: addons.write
tags:
- Add Ons
operationId: updateAddon
description: 'Update an existing Add-on.
Addon''s are pieces of functionality that developers can write to insert new functionality into PagerDuty''s UI.
Given a configuration containing a `src` parameter, that URL will be embedded in an `iframe` on a page that''s available to users from a drop-down menu.
For more information see the API Concepts Document
Scoped OAuth requires: `addons.write`'
summary: PagerDuty Update an Add-on
parameters:
- $ref: '#/components/parameters/header_Accept'
- $ref: '#/components/parameters/header_Content-Type'
- $ref: '#/components/parameters/id'
requestBody:
content:
application/json:
schema:
type: object
properties:
addon:
$ref: '#/components/schemas/Addon'
required:
- addon
examples:
request:
summary: Request Example
value:
addon:
type: full_page_addon
name: Internal Status Page
src: https://intranet.example.com/status
description: The Add-on to be updated.
responses:
'200':
description: The Add-on that was updated.
content:
application/json:
schema:
type: object
properties:
addon:
$ref: '#/components/schemas/Addon'
required:
- addon
examples:
response:
summary: Response Example
value:
addon:
id: PKX7F81
type: incident_show_addon
name: Service Runbook
src: https://intranet.example.com/runbook.html
services:
- id: PIJ90N7
type: service
summary: My Application Service
self: https://api.pagerduty.com/services/PIJ90N7
html_url: https://subdomain.pagerduty.com/service-directory/PIJ90N7
'400':
$ref: '#/components/responses/ArgumentError'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'429':
$ref: '#/components/responses/TooManyRequests'
components:
parameters:
header_Accept:
name: Accept
description: The `Accept` header is used as a versioning header.
in: header
required: true
schema:
type: string
default: application/vnd.pagerduty+json;version=2
addon_filter:
name: filter
in: query
description: Filters the results, showing only Add-ons of the given type
schema:
type: string
enum:
- full_page_addon
- incident_show_addon
offset_limit:
name: limit
in: query
required: false
description: The number of results per page.
schema:
type: integer
offset_total:
name: total
in: query
required: false
description: 'By default the `total` field in pagination responses is set to `null` to provide the fastest possible response times. Set `total` to `true` for this field to be populated.
See our [Pagination Docs](https://developer.pagerduty.com/docs/rest-api-v2/pagination/) for more information.
'
schema:
default: false
type: boolean
include_addon:
name: include[]
in: query
description: Array of additional Models to include in response.
explode: true
schema:
type: string
enum:
- services
uniqueItems: true
id:
name: id
description: The ID of the resource.
in: path
required: true
schema:
type: string
offset_offset:
name: offset
in: query
required: false
description: Offset to start pagination search results.
schema:
type: integer
header_Content-Type:
name: Content-Type
in: header
required: true
schema:
type: string
default: application/json
enum:
- application/json
addon_services:
name: service_ids[]
in: query
description: Filters the results, showing only Add-ons for the given services
explode: true
schema:
type: array
items:
type: string
uniqueItems: true
responses:
TooManyRequests:
description: Too many requests have been made, the rate limit has been reached.
content:
application/json:
schema:
$ref: '#/components/responses/Conflict/content/application~1json/schema'
Forbidden:
description: 'Caller is not authorized to view the requested resource.
While your authentication is valid, the authenticated user or token does not have permission to perform this action.
'
content:
application/json:
schema:
$ref: '#/components/responses/Conflict/content/application~1json/schema'
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/responses/Conflict/content/application~1json/schema'
Unauthorized:
description: 'Caller did not supply credentials or did not provide the correct credentials.
If you are using an API key, it may be invalid or your Authorization header may be malformed.
'
content:
application/json:
schema:
$ref: '#/components/responses/Conflict/content/application~1json/schema'
Conflict:
description: The request conflicts with the current state of the server.
content:
application/json:
schema:
type: object
properties:
error:
type: object
properties:
code:
type: integer
readOnly: true
message:
type: string
readOnly: true
description: Error message string
errors:
type: array
readOnly: true
items:
type: string
readOnly: true
description: Human-readable error details
example:
message: Not Found
code: 2100
ArgumentError:
description: Caller provided invalid arguments. Please review the response for error details. Retrying with the same arguments will *not* work.
content:
application/json:
schema:
$ref: '#/components/responses/Conflict/content/application~1json/schema'
schemas:
Addon:
allOf:
- $ref: '#/components/schemas/Tag/allOf/0'
- type: object
properties:
type:
type: string
description: The type of Add-on.
enum:
- full_page_addon
- incident_show_addon
name:
type: string
description: The name of the Add-on.
maxLength: 100
src:
type: string
format: url
description: The source URL to display in a frame in the PagerDuty UI. HTTPS is required.
required:
- type
- name
- src
example:
type: full_page_addon
name: Internal Status Page
src: https://intranet.example.com/status
Pagination:
type: object
properties:
offset:
type: integer
description: Echoes offset pagination property.
readOnly: true
limit:
type: integer
description: Echoes limit pagination property.
readOnly: true
more:
type: boolean
description: Indicates if there are additional records to return
readOnly: true
total:
type:
- integer
- 'null'
description: The total number of records matching the given query.
readOnly: true
Reference:
allOf:
- $ref: '#/components/schemas/Tag/allOf/0'
- type: object
required:
- type
- id
AddonReference:
allOf:
- $ref: '#/components/schemas/Reference'
- type: object
properties:
src:
type: string
format: url
description: The URL source of the Addon
name:
type: string
description: The user entered name of the Addon.
type:
type: string
enum:
- full_page_addon_reference
- incident_show_addon_reference
Tag:
allOf:
- type: object
properties:
id:
type: string
readOnly: true
summary:
type:
- string
- 'null'
readOnly: true
description: A short-form, server-generated string that provides succinct, important information about an object suitable for primary labeling of an entity in a client. In many cases, this will be identical to `name`, though it is not intended to be an identifier.
type:
type: string
readOnly: true
description: A string that determines the schema of the object. This must be the standard name for the entity, suffixed by `_reference` if the object is a reference.
self:
type:
- string
- 'null'
readOnly: true
format: url
description: the API show URL at which the object is accessible
html_url:
type:
- string
- 'null'
readOnly: true
format: url
description: a URL at which the entity is uniquely displayed in the Web app
- type: object
properties:
type:
type: string
description: The type of object being created.
default: tag
enum:
- tag
label:
type: string
description: The label of the tag.
maxLength: 191
required:
- label
- type
example:
type: tag
label: Batman
securitySchemes:
api_key:
type: apiKey
name: Authorization
in: header
description: The API Key with format `Token token=<API_KEY>`