Team Overrides
List, add, edit and delete the on-call overrides of a team, both team-level overrides and those attached to one of the team's schedules.
These endpoints manage every override a team owns in one place:
- Team-level overrides (
scheduleId: null) need no schedule. They apply whenever the team's on-call set is resolved (paging, on-call now, the calendar), so a team can be driven by overrides alone. - Schedule overrides (
scheduleIdset) are the same overrides as on Schedule Overrides, addressed through the team.
The fields and their meaning (type, covers, scope, tier, precedence) are described under Override fields. This page adds one field:
| Field | Type | Required | Description |
|---|---|---|---|
scheduleId | integer | null | No | A schedule of this team to attach the override to. Omitted or null = team-level. |
An offline team-level override only removes the subject while they actually have a shift in that tier. For a subject who is not on call there, it has no effect.
Authentication
Base IM access: an IM-eligible role or an organization-wide API token, and Incident Management activated for the organization. Listing is open to any caller with that access. Adding, editing and deleting need the team write bar: organization admin role, or team admin of this team. An API token runs with the role of the user who created it, so only a token created by an organization admin passes.
List overrides
GET /api/im/teams/:id/overrides
Returns all of the team's overrides, team-level and schedule-attached, ordered by id.
Example (cURL)
curl -X GET "$BASE_URL/api/im/teams/3/overrides" \
-H "Authorization: Bearer $TOKEN"Response
200 OK: same item shape as the schedule override list.
[
{
"id": 31,
"scheduleId": null,
"userId": "u_def456",
"userName": "Bob Fixit",
"userImage": null,
"type": "online",
"applyScope": "this_team",
"escalationTierOrder": 1,
"startsAt": "2026-12-24T18:00:00.000Z",
"endsAt": "2026-12-26T08:00:00.000Z",
"createdAt": "2026-10-09T10:00:00.000Z",
"coveredBy": []
}
]Add an override
POST /api/im/teams/:id/overrides
Example (cURL)
Bob takes tier 1 over Christmas:
curl -X POST "$BASE_URL/api/im/teams/3/overrides" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"userId": "u_def456",
"type": "online",
"escalationTierOrder": 1,
"startsAt": "2026-12-24T18:00:00.000Z",
"endsAt": "2026-12-26T08:00:00.000Z"
}'Response
200 OK
{
"id": 31,
"teamId": 3,
"scheduleId": null,
"userId": "u_def456",
"type": "online",
"applyScope": "this_team",
"escalationTierOrder": 1,
"startsAt": "2026-12-24T18:00:00.000Z",
"endsAt": "2026-12-26T08:00:00.000Z",
"createdAt": "2026-10-09T10:00:00.000Z",
"coveredByUserIds": []
}Edit an override
PATCH /api/im/teams/:id/overrides/:overrideId
A full replace: send every field again. This includes scheduleId: leaving it out turns a schedule override into a team-level one. Changing it moves the override between team-level and one of the team's schedules. The override keeps its id and therefore its precedence.
Example (cURL)
curl -X PATCH "$BASE_URL/api/im/teams/3/overrides/31" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"userId": "u_def456",
"type": "online",
"escalationTierOrder": null,
"scheduleId": null,
"startsAt": "2026-12-24T18:00:00.000Z",
"endsAt": "2026-12-27T08:00:00.000Z"
}'Response
200 OK: same shape as when adding.
Delete an override
DELETE /api/im/teams/:id/overrides/:overrideId
Example (cURL)
curl -X DELETE "$BASE_URL/api/im/teams/3/overrides/31" \
-H "Authorization: Bearer $TOKEN"Response
200 OK
{ "success": true }Common errors
401 Unauthorized(unauthorized) when not authenticated403 Forbidden(imAccessDenied) for a customer-scoped token, or a session without an IM-eligible role403 Forbidden(imNotEnabled) when Incident Management is not activated for the organization403 Forbidden(imTeamWriteDenied) on add, edit or delete when you are neither organization admin nor team admin of this team404 Not Found(imTeamNotFound) when the team does not exist or belongs to another organization404 Not Found(imOverrideNotFound) when:overrideIdis not an override of this team404 Not Found(imScheduleNotFound) whenscheduleIdis not a schedule of this team404 Not Found(userNotFound) whenuserIdor a covering user does not exist or belongs to another organization400 Bad Request(invalidRequestBody) when a path id is not a positive integer,scheduleIdis neither a positive integer nornull, or a field fails the checks listed under Schedule Overrides400 Bad Request(imUserNotEligible) when the subject or a covering user is inactive or does not have the organization roleadmin,editororresponder
Escalation Tiers
Read and edit a team's escalation chain: ordered tiers, their auto-escalation and repeat settings, and the schedules under each tier.
Team On-Call and Statistics
Read who is on call for a team right now, the team's on-call calendar for a time window, and the team's incident statistics.