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

# Preview Series

`POST /warehouse/schedules/series/preview`

Dry-run a recurring-series spec against existing schedules.

Returns how many occurrences the spec would materialize and which would be
skipped as conflicts — creating nothing. Backs the create form's live
conflict warning, so it is called on every form edit; the check runs one
range query over the whole horizon rather than one per occurrence.

## 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 `200`

Successful Response

- SeriesPreviewResponse — Dry-run result for a series spec — nothing was created. ``total_occurrences`` is how many occurrences the spec would materialize; ``conflicting`` lists the ones that would be skipped as conflicts.
  - `total_occurrences` integer, required
  - `conflict_count` integer, required
  - `conflicting` 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)
