Spike.sh On-Call Schedules API

On-call schedule management endpoints

Operations 10

GET /on-calls Fetch on-calls #
POST /on-calls Create an on-call schedule #
GET /on-calls/{oncallId} Fetch an on-call schedule #
PUT /on-calls/{oncallId} Edit an on-call schedule #
POST /on-calls/{oncallId}/layers Add a layer #
PUT /on-calls/{oncallId}/layers/{layerId} Edit a layer #
DELETE /on-calls/{oncallId}/layers/{layerId} Delete a layer #
GET /oncalls/am-i-on-call Is a user on-call? #
GET /oncalls/upcoming-shifts Fetch upcoming shifts from multiple schedules #
GET /oncalls/all-active-on-call-shifts Fetch all currently active on-call shifts #

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/spike-sh-on-call-schedules-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

spike-sh-on-call-schedules-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Spike.sh Alert Rules On-Call Schedules API
  description: 'REST API for managing incidents, on-call schedules, escalation policies, services, integrations, and alerting rules within the Spike.sh incident management platform. Spike.sh provides phone, SMS, WhatsApp, Telegram, Slack, and Microsoft Teams notifications, along with status pages, war rooms, and 80+ integrations.

    '
  version: 1.0.0
  contact:
    name: Spike.sh Support
    url: https://docs.spike.sh
  termsOfService: https://spike.sh/terms
servers:
- url: https://api.spike.sh
  description: Main API server
- url: https://statuspage.spike.sh
  description: Status page API server
security:
- ApiKeyAuth: []
tags:
- name: On-Call Schedules
  description: On-call schedule management endpoints
paths:
  /on-calls:
    get:
      tags:
      - On-Call Schedules
      summary: Fetch on-calls
      description: Get all on-call schedules for the team.
      operationId: getOnCalls
      parameters:
      - $ref: '#/components/parameters/TeamIdHeader'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    post:
      tags:
      - On-Call Schedules
      summary: Create an on-call schedule
      description: Create a new on-call schedule.
      operationId: createOnCall
      parameters:
      - $ref: '#/components/parameters/TeamIdHeader'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - name
              - users
              - rotation
              properties:
                name:
                  type: string
                users:
                  type: array
                  items:
                    type: string
                rotation:
                  type: object
                  properties:
                    length:
                      type: integer
                    unit:
                      type: string
                      enum:
                      - hours
                      - days
                      - weeks
                timezone:
                  type: string
                description:
                  type: string
                layers:
                  type: array
                  items:
                    type: object
      responses:
        '201':
          description: On-call schedule created
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Validation error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /on-calls/{oncallId}:
    get:
      tags:
      - On-Call Schedules
      summary: Fetch an on-call schedule
      description: Get details for a specific on-call schedule.
      operationId: getOnCall
      parameters:
      - name: oncallId
        in: path
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/TeamIdHeader'
      - name: from
        in: query
        required: true
        schema:
          type: string
          format: date-time
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OnCallSchedule'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    put:
      tags:
      - On-Call Schedules
      summary: Edit an on-call schedule
      description: Update an existing on-call schedule.
      operationId: updateOnCall
      parameters:
      - name: oncallId
        in: path
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/TeamIdHeaderOptional'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                teamId:
                  type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /on-calls/{oncallId}/layers:
    post:
      tags:
      - On-Call Schedules
      summary: Add a layer
      description: Add a new layer to an on-call schedule.
      operationId: addOnCallLayer
      parameters:
      - name: oncallId
        in: path
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/TeamIdHeaderOptional'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - users
              - rotation
              properties:
                users:
                  type: array
                  items:
                    type: string
                rotation:
                  type: object
                description:
                  type: string
      responses:
        '201':
          description: Layer added
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /on-calls/{oncallId}/layers/{layerId}:
    put:
      tags:
      - On-Call Schedules
      summary: Edit a layer
      description: Update an existing layer in an on-call schedule.
      operationId: updateOnCallLayer
      parameters:
      - name: oncallId
        in: path
        required: true
        schema:
          type: string
      - name: layerId
        in: path
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/TeamIdHeaderOptional'
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                users:
                  type: array
                  items:
                    type: string
                rotation:
                  type: object
                description:
                  type: string
      responses:
        '200':
          description: Layer updated
          content:
            application/json:
              schema:
                type: object
        '400':
          description: Bad request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    delete:
      tags:
      - On-Call Schedules
      summary: Delete a layer
      description: Delete a layer from an on-call schedule.
      operationId: deleteOnCallLayer
      parameters:
      - name: oncallId
        in: path
        required: true
        schema:
          type: string
      - name: layerId
        in: path
        required: true
        schema:
          type: string
      - $ref: '#/components/parameters/TeamIdHeaderOptional'
      responses:
        '200':
          description: Layer deleted
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Cannot delete only layer
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /oncalls/am-i-on-call:
    get:
      tags:
      - On-Call Schedules
      summary: Is a user on-call?
      description: Check if a specific user is currently on-call.
      operationId: isUserOnCall
      parameters:
      - $ref: '#/components/parameters/TeamIdHeader'
      - name: id
        in: query
        required: true
        schema:
          type: string
        description: User ID to check
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /oncalls/upcoming-shifts:
    get:
      tags:
      - On-Call Schedules
      summary: Fetch upcoming shifts from multiple schedules
      description: Get upcoming on-call shifts from one or more schedules.
      operationId: getUpcomingShifts
      parameters:
      - $ref: '#/components/parameters/TeamIdHeader'
      - name: id
        in: query
        required: true
        schema:
          type: string
        description: Schedule ID(s)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
  /oncalls/all-active-on-call-shifts:
    get:
      tags:
      - On-Call Schedules
      summary: Fetch all currently active on-call shifts
      description: Get all currently active on-call shifts for the team.
      operationId: getActiveOnCallShifts
      parameters:
      - $ref: '#/components/parameters/TeamIdHeader'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  parameters:
    TeamIdHeaderOptional:
      name: x-team-id
      in: header
      required: false
      schema:
        type: string
      description: Team identifier (optional for some endpoints).
    TeamIdHeader:
      name: x-team-id
      in: header
      required: true
      schema:
        type: string
      description: Team identifier. Use GET /teams to retrieve your team ID.
  schemas:
    OnCallSchedule:
      type: object
      properties:
        _id:
          type: string
        name:
          type: string
        description:
          type: string
        timezone:
          type: string
        layers:
          type: array
          items:
            type: object
        createdAt:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        message:
          type: string
          description: Error message describing the problem
        error:
          type: string
          description: Error type or code
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key generated from https://app.spike.sh/api