1. Set the window
Quiet hours take three fields together — start, end, and an IANA timezone — expressed as minutes since local midnight (0–1439):
curl
1320 is 22:00, 420 is 07:00 — this rule goes quiet at 10pm and resumes at 7am, both in America/New_York. Because start (1320) is greater than end (420), the window wraps past midnight; if start were less than end it would be a same-day window instead (e.g. 540→1020 for 9am–5pm quiet hours).
python
All three fields are required together — sending only
quiet_hours_start_min returns 400 (quiet hours require start, end, and tz). To clear quiet hours entirely, you currently have to recreate the rule without them; there’s no dedicated “unset” shorthand.2. What happens to a fire inside the window
A condition match that would normally fire immediately is instead held — not discarded — for delivery once the window ends. Non-critical fires are the ones affected; the point of quiet hours is to stop non-urgent noise overnight, not to hide something you’d want to act on regardless of the hour. You can see a held fire on the event log while it’s waiting:curl
3. Timezone validation
quiet_hours_tz is checked against the IANA timezone database at write time — an invalid zone name is rejected immediately with 400, rather than silently failing to ever engage:
curl
America/New_York, Europe/London, UTC), not abbreviations or offsets.
Troubleshooting
400: quiet hours require start, end, and tz: partial-mergePUTstill requires all three quiet-hours fields in the same request the first time they’re set — you can’t addquiet_hours_tzalone to a rule that has no start/end yet.- Alert arrived outside the window when I expected it deferred: quiet hours suppress non-critical fires; a rule’s severity is assigned by the platform based on its data source and conditions, not a field you set directly.
- Window seems inverted:
start > endmeans an overnight window (wraps past midnight);start < endmeans same-day.start == enddisables quiet hours entirely for that rule (treated as no window). - Nothing showed up after the window ended: confirm the fire is actually recorded —
GET /v1/alerts/events?rule_id=$RULE_ID&status=suppressed— and check your channel’s delivery status once the digest goes out, same as any other fire (see Troubleshooting in the rules guide).