My On-Call Status
Your own on-call duty across all teams: whether you are on call now, upcoming shifts, overrides, and your on-call hours.
GET /api/im/me/on-call · GET /api/im/me/on-call-stats
The personal view of on-call: whether you are on call right now, in which teams, what is coming up, and how many hours you were on call. To see who is on call in general, use Who Is On Call.
Authentication
Any IM-eligible role (admin, editor, responder) with a user session. Incident Management must be enabled for the organization. These endpoints describe a person, so an organization-wide API token receives 403 (imUserSessionRequired): a token has no shift and no pager.
My current duty
GET /api/im/me/on-call
Resolved the same way the paging engine resolves it, including team-level overrides. upcomingShifts looks two weeks ahead.
Example (cURL)
curl -X GET "$BASE_URL/api/im/me/on-call" \
-b "$SESSION_COOKIE" \
-H "Accept: application/json"Response
{
"currentlyOnCall": true,
"currentTeams": [
{ "teamId": 7, "teamName": "Platform", "tierOrder": 1 }
],
"currentShift": {
"teamId": 7,
"teamName": "Platform",
"tierOrder": 1,
"startsAt": "2026-10-10T07:00:00.000Z",
"endsAt": "2026-10-11T07:00:00.000Z",
"scheduleName": "Platform primary"
},
"upcomingShifts": [
{
"teamId": 7,
"teamName": "Platform",
"scheduleId": 12,
"scheduleName": "Platform primary",
"startsAt": "2026-10-17T07:00:00.000Z",
"endsAt": "2026-10-18T07:00:00.000Z",
"isOverride": false
}
],
"myOverrides": [
{
"id": 91,
"teamId": 7,
"teamName": "Platform",
"scheduleId": 12,
"type": "offline",
"startsAt": "2026-10-12T18:00:00.000Z",
"endsAt": "2026-10-12T22:00:00.000Z",
"coveredBy": [{ "userId": "u_8f2", "name": "Mara" }]
}
],
"degraded": false
}| Field | Description |
|---|---|
currentlyOnCall | Whether you are paged for new incidents right now in at least one team. |
currentTeams | Teams you are on call in now. tierOrder is the lowest tier you are in, the one that is paged first. |
currentShift | The running duty with its real start and end, across back-to-back shifts and overrides. When you are on call in several teams, the one that runs longest. startsAt is null when the duty began more than two weeks ago, endsAt is null when it does not end within two weeks. scheduleName is null when the duty comes only from a team-level override. null when you are not on call. |
upcomingShifts | Your shifts starting within the next two weeks. isOverride marks shifts that come from an override. |
myOverrides | Your own overrides that are running or still ahead (type online = you take duty, offline = you hand it off). For an offline override, coveredBy lists who holds the pager meanwhile, the last entry is the one paged; it is empty for online overrides and for an offline override left as a gap. |
degraded | true when the status of at least one team could not be resolved. currentlyOnCall is then a lower bound: treat it as "status incomplete", not as "off duty". |
My on-call hours
GET /api/im/me/on-call-stats
Your on-call time this week, this month and in the last 30 days, each with the previous period of the same kind.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
tz | string | No | IANA time zone, e.g. Europe/Berlin. Decides where a week (Monday 00:00) and a month (1st, 00:00) begin. Unknown or missing: UTC. |
Example (cURL)
curl -X GET "$BASE_URL/api/im/me/on-call-stats?tz=Europe/Berlin" \
-b "$SESSION_COOKIE" \
-H "Accept: application/json"Response
{
"timeZone": "Europe/Berlin",
"week": { "seconds": 25200, "previousSeconds": 23700 },
"month": { "seconds": 90000, "previousSeconds": 0 },
"last30": { "seconds": 309600, "previousSeconds": 174600 }
}Current periods run up to now, previous periods are the whole period before. timeZone is the zone actually used.
Common errors
401 Unauthorizedwhen not authenticated403 Forbidden(customerScopedTokenForbidden) when using a customer-scoped token403 Forbidden(imUserSessionRequired) when calling with an organization-wide API token403 Forbidden(imAccessDenied) when the caller has no IM-eligible role or no organization403 Forbidden(imNotEnabled) when Incident Management is not enabled for the organization