- Create an office hours exception
You can create an exception for an office hours schedule. Use closed to mark the day closed (omit time_intervals) or custom_hours to supply replacement intervals.
Intercom API version.
If you omit the header, the API uses the version set in your app package, and 1.0 if none is set.
The date the exception applies to, in YYYY-MM-DD format. A schedule can have only one exception for each date; a second one returns a 422 error.
The open intervals for the exception date. Required for custom_hours; omit for closed, which returns a 422 error if intervals are sent. start_minute and end_minute must be on a 15-minute boundary. Don't send day_of_week; it is read-only and a request that includes it is rejected with a 400 error.
- The production API serverhttps://api.intercom.io/office_hours_schedules/{office_hours_schedule_id}/office_hours_exceptions
- The european API serverhttps://api.eu.intercom.io/office_hours_schedules/{office_hours_schedule_id}/office_hours_exceptions
- The australian API serverhttps://api.au.intercom.io/office_hours_schedules/{office_hours_schedule_id}/office_hours_exceptions
curl -i -X POST \
https://api.intercom.io/office_hours_schedules/123/office_hours_exceptions \
-H 'Authorization: Bearer <YOUR_TOKEN_HERE>' \
-H 'Content-Type: application/json' \
-H 'Intercom-Version: 2.17' \
-d '{
"exception_date": "2026-12-25",
"exception_type": "closed",
"name": "Christmas Day",
"recurring_annually": true
}'Office hours exception created
The unique identifier for the schedule this exception belongs to.
The date the exception applies to, in YYYY-MM-DD format.
closed means the workspace is closed all day; custom_hours replaces the regular hours with time_intervals.
The open intervals for the exception date. null when exception_type is closed.
{ "type": "office_hours_exception", "id": "458", "office_hours_schedule_id": "123", "exception_date": "2026-12-25", "exception_type": "closed", "name": "Christmas Day", "time_intervals": null, "recurring_annually": true, "created_at": 1717200000, "updated_at": 1717200000 }