Overrides

An override reassigns on-call coverage for a specific time window. It wins over fixed shifts and rotations.

Use cases:

  • "I'll cover for Bob this evening"
  • "Page Carol for the next 2 hours, I'm in a meeting"
  • Holiday coverage that doesn't repeat

List overrides

GET /oncall/schedules/{schedule_id}/overrides

bash
curl https://happyuptime.com/api/v1/oncall/schedules/sch_abc123/overrides \ -H "Authorization: Bearer hu_..."
json
{ "data": [ { "id": "ovr_xyz", "schedule_id": "sch_abc123", "layer_id": "lyr_p1", "user_id": "usr_carol", "starts_at": "2026-04-17T20:00:00Z", "ends_at": "2026-04-17T22:00:00Z", "note": "Covering for Alice", "created_by": "usr_alice" } ]}

Create override

POST /oncall/schedules/{schedule_id}/overrides

layer_idstringbody

Layer to override. Omit to override the entire schedule (top layer).

user_idstringrequiredbody

Who's covering. Must be a member of the project.

starts_atstringrequiredbody

ISO 8601 timestamp.

ends_atstringrequiredbody

ISO 8601 timestamp. Must be after starts_at.

notestringbody

Free-form note shown in timeline and Slack DMs.

json
{ "layer_id": "lyr_p1", "user_id": "usr_carol", "starts_at": "2026-04-17T20:00:00Z", "ends_at": "2026-04-17T22:00:00Z", "note": "Covering for Alice during her meeting"}

Update override

PATCH /oncall/overrides/{id}

Update times, user, or note.

Delete override

DELETE /oncall/overrides/{id}

Restores normal rotation/shift coverage immediately.

Ask a question... ⌘I