Incidents
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21A paginated envelope — NOT a bare array. The response also carries dashboard-only keys (org, integrations, services, escalations, incidentStatuses, *Filtered, totalFilters, featureFlag, jiraConnected, clickupConnected, linearConnected, taskManagementFlag, videoConferencingFlag, helpdeskFlag, meetConnected, zoomConnected, filtersApplied, userIsAuthorizedToTakeActionOnIncidents) that are not part of the supported contract.
Envelope object — NOT a bare array.
Unauthorized
GET /incidents/all-occurrences?start=2026-01-01T00:00:00Z&end=2026-02-01T23:59:59Z&teams=64a1b2c3d4e5f6789012345a&status=ACK,RES&page=1&perPage=25Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
Start date in ISO 8601 format
2026-01-01T00:00:00ZEnd date in ISO 8601 format
2026-02-01T23:59:59ZComma-separated team IDs (optional)
64a1b2c3d4e5f6789012345a,64a1b2c3d4e5f6789012345bComma-separated status values (optional)
ACK,RES,NACKComma-separated service IDs (optional)
64a1b2c3d4e5f6789012345c,64a1b2c3d4e5f6789012345dIntegration ID (optional)
64a1b2c3d4e5f6789012345ePage number for pagination
1Results per page (default: 25, max: 100)
25Your API key. Find it in your Spike dashboard under Settings > API.
A bare JSON array of incident occurrences — not wrapped in an envelope.
Human-facing id, <teamUid>-<counter>. Accepted anywhere an incident id is taken.
Lifecycle state of the incident. NACK = triggered (nobody has acknowledged it yet). ACK = acknowledged (a responder is on it). RES = resolved. These three literals are the only values the API ever returns or accepts — there is no triggered/acknowledged/resolved spelling.
NACKPossible values: Unauthorized
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
counterId parameter
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21Successful response
Envelope. Additional dashboard-only keys (muteOptions, timeToEndmute, showRepeatedIncidents, featureFlag, *Connected, *FeatureFlag) are also present.
Unauthorized
Not found
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21The handler only reads integrationWebhook; every other field is forwarded verbatim to the integration webhook at https://hooks.spike.sh/{token}/push-events, which turns it into the incident. There is no integration or escalation field on this endpoint — routing is determined by the integration the token belongs to.
REQUIRED. The integration token (from GET /integrations), or the full webhook URL https://hooks.spike.sh/{token}/push-events. A bare token is expanded to the full URL. Omitting this returns 422.
a1b2c3d4e5f6a7b8c9d0Incident title. Becomes the incident message.
High CPU on api-prod-3Alias for title.
High CPU on api-prod-3Arbitrary key/value context attached to the incident.
{"instanceId":"i-0abc123","region":"us-east-1"}p1Possible values: sev1Possible values: The incident as returned by the escalation engine.
Set when the event de-duplicated onto an already-open incident.
Bad request
Invalid or missing API key.
integrationWebhook was missing from the body. The API key itself was valid.
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
counterId parameter
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21Successful response
Unauthorized
Not found
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
counterId parameter
_id parameter
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21Successful response
Unauthorized
Not found
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21ids is an ARRAY of incident counterIds or _ids. Also answers on /incidents/reassign/multi.
["eng-116"]The User _id of the responder. Must belong to your organisation.
6a3c2d5e0f9b8c7d6e5f4a32On success { reassigned: true }. When the user is already a responder the handler still answers 200 but with { reassigned: false, alreadyAssigned: true, message }.
The user was not found in your organisation.
Unauthorized
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
counterId parameter
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21Successful response
Unauthorized
Not found
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
The incident counterId, e.g. eng-116.
eng-116Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21An envelope of { incident, activities } — NOT a bare array of activities.
Unauthorized
Not found
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21ids is an ARRAY of incident counterIds or _ids. Also answers on /incidents/remove-responder/multi.
["eng-116"]The User _id of the responder. Must belong to your organisation.
6a3c2d5e0f9b8c7d6e5f4a32Successful response
Bad request
Unauthorized
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21A bare JSON array of acknowledged incidents.
Human-facing id, <teamUid>-<counter>. Accepted anywhere an incident id is taken.
Lifecycle state of the incident. NACK = triggered (nobody has acknowledged it yet). ACK = acknowledged (a responder is on it). RES = resolved. These three literals are the only values the API ever returns or accepts — there is no triggered/acknowledged/resolved spelling.
NACKPossible values: Unauthorized
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21A bare JSON array of triggered (NACK) incidents.
Human-facing id, <teamUid>-<counter>. Accepted anywhere an incident id is taken.
Lifecycle state of the incident. NACK = triggered (nobody has acknowledged it yet). ACK = acknowledged (a responder is on it). RES = resolved. These three literals are the only values the API ever returns or accepts — there is no triggered/acknowledged/resolved spelling.
NACKPossible values: Unauthorized
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21Successful response
Unauthorized
Your organisation's API key. Create one in the Spike dashboard under Settings > API. Sent on every request as the x-api-key header.
The target team's _id — a 24-character hex ObjectId such as 5f2b1c4d9e8a7b6c5d4e3f21. This is NOT the short uid slug (e.g. eng) shown in dashboard URLs; passing the uid will not resolve a team. Read the _id from GET /teams/get-all-teams or GET /teams/get-my-teams.
REQUIRED for: GET /on-calls (API-key callers get 400 without it), POST /on-calls, and every team-scoped read that declares it — the /incidents/* and /services/* listings, /escalations, /automation/rules and the integration endpoints.
OPTIONAL for: the incident action endpoints (acknowledge, resolve, escalate, unacknowledge), which derive the organisation from the API key itself; PUT /on-calls/{oncallId} and the on-call layer endpoints, which fall back to the organisation's default team; and org-wide reads such as GET /orgs/info and GET /users, which ignore it.
When supplied it must name a team inside the API key's organisation. A team from another organisation is rejected with 403.
Your API key. Find it in your Spike dashboard under Settings > API.
The team's _id — a 24-character hex ObjectId, NOT the short uid slug. Read it from GET /teams/get-all-teams.
5f2b1c4d9e8a7b6c5d4e3f21Successful response
Unauthorized
Last updated