Integrations
Create, read and archive integrations. An integration is referenced by its token, never its _id.
Create a new integration for a team. You can find more details on /integrations/available route. Learn more about integrations here.
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
The integration reference used by POST /incidents/create (as integrationWebhook) and by GET|DELETE /integrations/{token}. Never use the _id.
Bad request
Unauthorized
POST /integrations/create HTTP/1.1
Host: api.spike.sh
x-api-key: text
x-team-id: text
Content-Type: application/json
Accept: */*
Content-Length: 135
{
"customName": "string",
"desc": "string",
"slug": "string",
"escalation": "string",
"service": "string",
"repeatEscalation": true,
"ackTimeout": 0
}{
"_id": "62a1b2c3d4e5f60718293a4b",
"name": "AWS CloudWatch",
"slug": "aws",
"token": "a1b2c3d4e5f6a7b8c9d0",
"webhookUrl": "https://hooks.spike.sh/a1b2c3d4e5f6a7b8c9d0/push-events",
"service": "61d2c3b4a5968778695a4b3c",
"escalation": "63c9a1b2d4e5f60718293a4b",
"teams": [
"5f2b1c4d9e8a7b6c5d4e3f21"
],
"createdAt": "2026-03-13T09:41:00.000Z"
}Get Details of a integration
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.
token 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. integration.webhookUrl is synthesised from the token on read.
Unauthorized
Not found
GET /integrations/{token} HTTP/1.1
Host: api.spike.sh
x-api-key: text
x-team-id: text
Accept: */*
{
"integration": {
"_id": "62a1b2c3d4e5f60718293a4b",
"name": "AWS CloudWatch",
"slug": "aws",
"token": "a1b2c3d4e5f6a7b8c9d0",
"webhookUrl": "https://hooks.spike.sh/a1b2c3d4e5f6a7b8c9d0/push-events",
"service": "61d2c3b4a5968778695a4b3c",
"escalation": "63c9a1b2d4e5f60718293a4b",
"teams": [
"5f2b1c4d9e8a7b6c5d4e3f21"
],
"createdAt": "2026-03-13T09:41:00.000Z"
},
"incidents": [
{
"_id": "65a1f4c8e9b2d3a4f5c6b7a8",
"counterId": "eng-116",
"message": "High CPU on api-prod-3",
"status": "NACK",
"priority": "p1",
"severity": "sev1",
"counter": 116,
"org": "5f72e289b17d1656e0115098",
"teams": [
"5f2b1c4d9e8a7b6c5d4e3f21"
],
"integration": {
"_id": "62a1b2c3d4e5f60718293a4b",
"name": "AWS CloudWatch",
"token": "a1b2c3d4e5f6a7b8c9d0"
},
"service": {
"_id": "61d2c3b4a5968778695a4b3c",
"name": "API",
"counterId": 4
},
"escalation": {
"_id": "63c9a1b2d4e5f60718293a4b",
"name": "Engineering primary"
},
"responders": [],
"createdAt": "2026-03-13T09:41:00.000Z",
"NACK_at": "2026-03-13T09:41:00.000Z"
}
],
"totalIncidents": 116,
"totalOpenIncidents": 3,
"currentPage": 1,
"perPage": 20,
"total": 116
}Archive an integration. Archive integrations will not be shown in the UI
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.
token 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
DELETE /integrations/{token}/archive HTTP/1.1
Host: api.spike.sh
x-api-key: text
x-team-id: text
Accept: */*
{
"integration_archive": true
}Gets a list of integrations available on Spike
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 the integration types you can create.
Unauthorized
GET /integrations/available HTTP/1.1
Host: api.spike.sh
x-api-key: text
x-team-id: text
Accept: */*
[
{
"name": "AWS CloudWatch",
"slug": "aws",
"category": "Cloud"
},
{
"name": "Datadog",
"slug": "datadog",
"category": "Monitoring"
}
]Get a list of all the integrations for a specific team.
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
GET /integrations HTTP/1.1
Host: api.spike.sh
x-api-key: text
x-team-id: text
Accept: */*
{
"integrations": [
{
"_id": "62a1b2c3d4e5f60718293a4b",
"name": "AWS CloudWatch",
"slug": "aws",
"token": "a1b2c3d4e5f6a7b8c9d0",
"webhookUrl": "https://hooks.spike.sh/a1b2c3d4e5f6a7b8c9d0/push-events",
"service": "61d2c3b4a5968778695a4b3c",
"escalation": "63c9a1b2d4e5f60718293a4b",
"teams": [
"5f2b1c4d9e8a7b6c5d4e3f21"
],
"createdAt": "2026-03-13T09:41:00.000Z"
}
],
"totalIntegrations": 1,
"currentPage": 1,
"perPage": 20,
"total": 1
}Last updated
Was this helpful?