---
title: "Create Series"
method: POST
path: "/warehouse/schedules/series"
tags: ["WAREHOUSE_SCHEDULE"]
---

# Create Series

`POST /warehouse/schedules/series`

Create a recurring schedule series and materialize its occurrences.

The configuration is resolved the same way a one-off schedule's is (caller
size or warehouse default, plus any QAS override, and the requested-axes
marker), so occurrences conflict-check against existing schedules on the
same axes they touch. Occurrences whose windows conflict are reported in
``skipped`` — they never fail the series.

## Headers

- `x-tenant` string, required

## Request body

- SeriesCreateRequest — A recurring warehouse schedule. ``warehouse_configuration`` matches the one-off create request: a caller may pin a size, toggle query acceleration, or both. Days are lowercase IANA weekday names; ``start_time_local`` is "HH:MM" wall-clock in ``timezone``. ``end_date`` is required and must be at most 90 days out — the series is fully materialized up-front through that date, so it has a hard bound.
  - `warehouse_name` string, required
  - `instance_id` string, required
  - `warehouse_configuration` WarehouseConfig
    - `warehouse_size` 'X-Small' | 'Small' | 'Medium' | 'Large' | 'X-Large' | '2X-Large' | '3X-Large' | '4X-Large' | '5X-Large' | '6X-Large'
    - `enable_query_acceleration` boolean, nullable
  - `schedule_type` 'manual' | 'block', required — One of: manual, block
  - `days_of_week` string[], required
  - `start_time_local` string, required — Local wall-clock "HH:MM"
  - `duration_minutes` integer, required
  - `timezone` string, required — IANA timezone, e.g. America/Los_Angeles
  - `end_date` string, date, required — Required; at most 90 days from today
  - `start_date` string, date, nullable — Anchor date (local calendar date in `timezone`) — always materializes an occurrence at create time, regardless of `days_of_week`. Not persisted; the occurrence set is fully materialized up front.

## Response `201`

Successful Response

- SeriesCreateResponse — The persisted series (fields inlined) plus the occurrences materialized on creation. ``skipped`` collects occurrences whose window conflicted with an existing schedule — a conflict never fails the series or the other occurrences, and the list is always present (empty when nothing was skipped).
  - `series_id` integer, required
  - `warehouse_name` string, required
  - `instance_id` string, nullable
  - `configuration` WarehouseConfig, required
    - `warehouse_size` 'X-Small' | 'Small' | 'Medium' | 'Large' | 'X-Large' | '2X-Large' | '3X-Large' | '4X-Large' | '5X-Large' | '6X-Large'
    - `enable_query_acceleration` boolean, nullable
  - `schedule_type` 'manual' | 'block', required
  - `days_of_week` string[], required
  - `start_time_local` string, required
  - `duration_minutes` integer, required
  - `timezone` string, required
  - `end_date` string, date, nullable
  - `status` 'active' | 'cancelled', required — Lifecycle of a recurring warehouse-schedule series. A series that would materialize zero occurrences is never persisted (creation fails with 400), so there is no rejected state here.
  - `created_by` integer, required
  - `created_at` string, date-time, nullable
  - `updated_at` string, date-time, nullable
  - `created` AppSchemasWarehouseSchedulesScheduleResponse[], required
    - `schedule_id` integer, required
    - `warehouse_name` string, required
    - `configuration` WarehouseConfig, required
      - `warehouse_size` 'X-Small' | 'Small' | 'Medium' | 'Large' | 'X-Large' | '2X-Large' | '3X-Large' | '4X-Large' | '5X-Large' | '6X-Large'
      - `enable_query_acceleration` boolean, nullable
    - `start_time` string, date-time, required
    - `end_time` string, date-time, required
    - `schedule_type` 'recommendation' | 'manual' | 'block' | 'auto_resize' | 'backoff', required
    - `status` 'pending' | 'approved' | 'rejected', required
    - `reason` string, required
    - `created_by` integer, required
    - `created_at` string, date-time, required
    - `updated_by` integer, nullable
    - `updated_at` string, date-time, nullable
    - `recurrence_pattern` unknown
    - `series_id` integer, nullable
    - `resize_mode` 'dynamic' | 'scheduled'
  - `skipped` SeriesSkippedOccurrence[], required
    - `start_time` string, date-time, required
    - `end_time` string, date-time, required
    - `reason` string, required
    - `conflict` boolean

## Other responses

- `400` — Invalid request data
- `403` — Not authorized
- `404` — Schedule not found
- `422` — Validation Error

---

[API](https://skmtc.net/myaltimate/apis/fastapi.md) · [All operations](https://skmtc.net/myaltimate/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/myaltimate/fastapi/versions/aab3fe5c9f05/schema)
