---
search:
  tags:
    - Schedules
    - POST
seo:
  description: >-
    Body: { setup_id, frequency (daily|weekly|every_two_weeks|monthly), timezone
    (IANA),… Reference for the POST /schedules endpoint in the Zaraftis Public
    API.
sidebar:
  label: Create a schedule
  badge: POST
title: Create a schedule
type: openapi-operation
---
Body: &#123; setup_id, frequency (daily|weekly|every_two_weeks|monthly), timezone (IANA), local_time (HH:MM), start_date (YYYY-MM-DD) &#125;. Creating a schedule authorizes recurring paid work, so the wallet must be activated with auto-reload enabled and authorized (402 otherwise), and the setup must be an accessible, non-archived setup (404 otherwise). The stored grid is the local settings; responses always carry the next occurrence in UTC (DST-anchored: a missing local time runs at the next valid local time, a doubled local time runs once, and a monthly schedule set for a missing day runs on that month's final day). One ACTIVE schedule per setup: a second active schedule answers 409. An invalid grid answers 400.

`POST /schedules`

**Request body** (`application/json`, required)

- `setup_id` (string<uuid>, required)
- `frequency` (string, required)
- `timezone` (string, required)
- `local_time` (string, required)
- `start_date` (string, required)

Request body example:

```json
{
  "setup_id": "223e7533-659b-4438-b6f4-f841a5d7dfa9",
  "frequency": "daily",
  "timezone": "string",
  "local_time": "string",
  "start_date": "string"
}
```

**Responses**

- `201` — The created schedule with its UTC next occurrence
- `400` — bad\_request or validation\_failed
- `402` — wallet\_not\_activated, insufficient\_credits, or payment\_action\_required
- `404` — not\_found: unknown id, or an id this key cannot see
- `409` — conflict, duplicate\_url, or idempotency\_conflict
