Spike.sh On-Call Schedules API
On-call schedule management endpoints
On-call schedule management endpoints
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/spike-sh-on-call-schedules-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:
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