---
title: "POST /api/v1/maintenance/schedules/"
method: POST
path: "/api/v1/maintenance/schedules/"
tags: ["maintenance"]
---

# POST /api/v1/maintenance/schedules/

`POST /api/v1/maintenance/schedules/`

## Request

- Base URL: `https://uptime.com` (the document declares no server; this is the origin it was published from)
- URL: `https://uptime.com/api/v1/maintenance/schedules/`
- Auth: none declared
- TypeScript: <https://skmtc.dev/uptime/apis/uptime-com-openapi-schema/docs/api/v1/maintenance/schedules/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a new maintenance schedule

**Schedule types**

The `schedule_type` field determines the maintenance behavior and which
other fields are required:

* `RRULE` — Recurring window. Requires `rrule` (a valid RFC 5545 RRULE
  string) and `duration_minutes`. `starts_at` anchors the recurrence and
  takes priority over the RRULE `DTSTART`; `ends_at` optionally bounds
  when the recurrence stops.
* `ONE_OFF` — Single window. Requires `starts_at` plus either `ends_at`
  or `duration_minutes` (when only `duration_minutes` is given, `ends_at`
  is derived from `starts_at`). `rrule` must not be set.
* `MANUAL` — Indefinite/open-ended window. Requires `starts_at`; omit
  `ends_at` to keep the window ongoing. `rrule` and `duration_minutes`
  are not used. Manual schedules are normally created by the per-check
  "maintenance now" toggle; deleting one ends the manual maintenance for
  its checks.

## Request body

- MaintenanceScheduleInput
  - `name` string
  - `schedule_type` 'RRULE' | 'MANUAL' | 'ONE_OFF', required
  - `starts_at` string, date-time, required
  - `ends_at` string, date-time, nullable
  - `rrule` string
  - `duration_minutes` integer, nullable
  - `is_active` boolean
  - `pause_checks_during_maintenance` boolean
  - `services` integer[]
  - `tags` integer[]

## Response `200`

- MaintenanceSchedule
  - `id` integer
  - `name` string
  - `schedule_type` 'RRULE' | 'MANUAL' | 'ONE_OFF'
  - `starts_at` string, date-time
  - `ends_at` string, date-time, nullable
  - `rrule` string
  - `duration_minutes` integer, nullable
  - `is_active` boolean
  - `pause_checks_during_maintenance` boolean
  - `services` string
  - `tags` object[]
    - `id` integer
    - `tag` string, required
    - `color_hex` string
    - `usage_count` integer
  - `created_at` string, date-time
  - `modified_at` string, date-time

---

[API](https://skmtc.dev/uptime/apis/uptime-com-openapi-schema.md) - [All operations](https://skmtc.dev/uptime/apis/uptime-com-openapi-schema/llms.txt) - [OpenAPI document](https://skmtc.dev/uptime/apis/uptime-com-openapi-schema/revisions/e1e4a57a60d8?raw)
