---
title: "Create schedule"
method: POST
path: "/schedules"
---

# Create schedule

`POST /schedules`

Create a new schedule for an app.

## Request body

- CreateScheduleParams
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `app_name` string, required — The name of the app to create a schedule for
  - `app_version` string, nullable — This property is deprecated and ignored. Schedules inherit the version from their environment.
  - `cron` string, required — The cron expression defining when the app should run
  - `environment` string — The environment to run the app in
  - `name` string, nullable — The name for this schedule. Must be unique per environment. If not set, one will be generated for you.
  - `overlap_policy` 'skip' | 'allow', nullable — The overlap policy for the schedule
  - `parameters` RunParameter[] — Parameters to pass when running the app
    - `hidden` boolean — Whether this parameter is hidden/secret. Defaults to false.
    - `is_override` boolean, nullable — Whether this parameter's value was supplied as an override at run/schedule creation time (true) or comes from the app version's default (false).
    - `name` string, required
    - `value` string, required
  - `status` 'active' | 'disabled', nullable — The status of the schedule (defaults to active)
  - `timezone` string, nullable — The IANA timezone identifier that the cron expression should be evaluated in (e.g., 'America/New_York', 'Europe/London'). Defaults to 'UTC'.

## Response `201`

Created

- CreateScheduleResponse
  - `$schema` string, uri — A URL to the JSON Schema for this object.
  - `schedule` Schedule, required
    - `app_name` string, required — The name of the app that will be executed
    - `app_status` 'active' | 'disabled', required — The status of the app
    - `app_version` string — This property is deprecated. Schedules inherit the version from their environment. This field returns the environment's current version.
    - `created_at` string, date-time, required — The timestamp when the schedule was created
    - `cron` string, required — The cron expression defining when the app should run
    - `environment` string, required — The environment to run the app in
    - `id` string, required — The unique identifier for the schedule
    - `name` string, required — The name of this schedule
    - `overlap_policy` 'allow' | 'skip', required — The policy for handling overlapping runs
    - `owner` ScheduleOwner
      - `name` string, required — The owner's name: a user's full name (first + last) or a service account's name. Must identify exactly one member of the account.
      - `type` 'user' | 'service_account', required — The kind of owner: 'user' or 'service_account'
    - `parameters` RunParameter[] — The parameters to pass when running the app
      - `hidden` boolean — Whether this parameter is hidden/secret. Defaults to false.
      - `is_override` boolean, nullable — Whether this parameter's value was supplied as an override at run/schedule creation time (true) or comes from the app version's default (false).
      - `name` string, required
      - `value` string, required
    - `status` 'active' | 'disabled', required — The status of the schedule
    - `timezone` string, required — The IANA timezone identifier that the cron expression is evaluated in (e.g., 'America/New_York', 'Europe/London'). Defaults to 'UTC'.
    - `updated_at` string, date-time, required — The timestamp when the schedule was last updated

## Other responses

- `default` — Error

---

[API](https://skmtc.net/tower/apis/tower-api.md) · [All operations](https://skmtc.net/tower/apis/tower-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tower/tower-api/revisions/0e42b0fb26d9/schema)
