Skip to main content
On-call schedules define who is responsible for responding to incidents during any given time window. A schedule contains one or more rotation layers, each with its own rotation type, handoff time, and list of participants. This guide walks you through creating a schedule, adding a rotation layer, and checking who is currently on call over the REST API.
Prefer to work in the dashboard? See Set Up On-call for the UI walkthrough.
1

Create a schedule

Send a POST request to /api/oncall/schedules with a name and IANA timezone identifier.
A successful response returns the new schedule:
Always use IANA timezone identifiers (e.g., America/New_York, Europe/London, Asia/Tokyo) rather than abbreviations like EST or UTC+5. IANA identifiers automatically account for daylight saving time changes. You can find the full list at iana.org/time-zones or use a reference like the tz database.
2

Add a rotation layer

A rotation layer defines when the schedule is active and which participants rotate through it. Send a POST request to /api/oncall/schedules/{scheduleId}/layers, replacing {scheduleId} with the ID returned in the previous step.
The response returns the created layer:
Key fields to know:Participants rotate in the order listed. The first user in participantIds is on call starting at effectiveFrom, then each subsequent user takes over after rotationLengthDays days at handoffTime.
3

Check who is currently on call

Query the schedule to see which participant is currently on call. Send a GET request to /api/oncall/schedules/{scheduleId}/resolve.
The response returns the Schedule Owner (used as the incident Lead), the Paging Targets (full set the schedule would page), and a currentOncallView with per-layer detail:
To check who would be on call at a specific point in time, add an at query parameter with an ISO 8601 datetime:
If entries is empty, no layer is active at the requested time. Check that your layer’s effectiveFrom has passed and that effectiveUntil has not expired.