PagerDuty Add-Ons API

Developers can write their own functionality to insert into PagerDuty's UI.

Operations 5

GET /addons PagerDuty List installed Add-ons #
POST /addons PagerDuty Install an Add-on #
GET /addons/{id} PagerDuty Get an Add-on #
DELETE /addons/{id} PagerDuty Delete an Add-on #
PUT /addons/{id} PagerDuty Update an Add-on #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/pagerduty-add-ons-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

pagerduty-add-ons-api-openapi.yml Raw ↑
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>`