---
title: "Create a new schedule"
method: POST
path: "/scheduling/v1/schedules"
tags: ["Schedules"]
---

# Create a new schedule

`POST /scheduling/v1/schedules`

Creates a new schedule with the specified configuration. For site/asset targets, sub-schedules are created asynchronously. Poll the schedule state to check creation progress.

## Request body

- S12SchedulingV1CreateNewScheduleRequest — CreateNewSchedule creates a schedule that generates recurring work items (e.g., inspections). Schedules can target: - Specific users (no target, just assignment.users) - Sites (target.sites) - creates sub-schedules per site - Assets (target.assets) - creates sub-schedules per asset For site/asset targets, sub-schedules are created asynchronously.
  - `title` string, required — Title of the schedule.
  - `work_type` S12SchedulingV1ScheduleWorkType — Schedule creates inspection occurrences from a template.
    - `inspection` S12SchedulingV1ScheduleInspectionWork, required — ScheduleInspectionWork configures the schedule to create inspections.
      - `template_id` string, required — The ID of the inspection template to use.
  - `recurrence` S12SchedulingV1ScheduleRecurrence, required — ScheduleRecurrence defines when and how often the schedule repeats. RFC 5545 recurrence definition combining DTSTART and RRULE properties. DTSTART specifies the start time and timezone. RRULE defines the recurrence pattern. Timezone defaults to UTC if unspecified, or if `use_site_timezone` is true. Expected format: "DTSTART;TZID=America/New_York:20240101T140000\nRRULE:FREQ=DAILY;INTERVAL=1"
    - `dtstart_rrule` string, required — Examples: - "DTSTART:20240101T140000Z\nRRULE:FREQ=WEEKLY;BYDAY=MO,WE,FR" (UTC timezone) - "DTSTART;TZID=America/New_York:20240101T140000\nRRULE:FREQ=DAILY;INTERVAL=1" (with timezone)
    - `duration` string, required — Duration in ISO 8601 format (e.g., "PT1H"). Defines the window from start to due.
    - `use_site_timezone` boolean — When true, use each target site's timezone instead of the RRULE timezone. Only applicable when target is sites or assets (uses the asset's parent site timezone). When enabled, any timezone specified in the RRULE will be ignored and set to the default time, UTC.
    - `late_submission_rule` S12SchedulingV1LateSubmissionRule — The conditions under which users can submit work late for each occurrence.
      - `until_next_occurrence` S12SchedulingV1UntilNextOccurrence — UntilNextOccurrence indicates late submission is allowed until the next occurrence starts. Used as a marker type in oneof fields.
      - `late_submission_duration` string — Allow late submission for a specific duration after each occurrence ends. Currently only supports a period of 14 days ("P14D"). ISO 8601 duration format.
  - `completion_rule` 'COMPLETION_RULE_UNSPECIFIED' | 'COMPLETION_RULE_ANY' | 'COMPLETION_RULE_ALL' — Completion rule enum. - COMPLETION_RULE_UNSPECIFIED: Unspecified completion rule. - COMPLETION_RULE_ANY: Any assignee can complete the schedule. - COMPLETION_RULE_ALL: All assignees must complete the schedule.
  - `target` union — Specifies which sites or assets this schedule applies to. Exactly one must be set.
    - object — Target specific sites. A separate occurrence is created for each site at each recurrence.
      - `sites` S12SchedulingV1ScheduleBySites, required — ScheduleBySites is a list of sites a schedule applies to. Assignment and progress is tracked separately for each site. Assignees can be specified, or derived from site membership.
        - `site_ids` string[], required — Sites included in the schedule.
    - object — Target specific assets. A separate occurrence is created for each asset at each recurrence.
      - `assets` S12SchedulingV1ScheduleByAssets, required — ScheduleByAssets is a list of assets a schedule applies to. Assignment and progress is tracked separately for each asset. Assignees can be specified, or derived through the respective asset's site.
        - `asset_ids` string[], required — Assets included in the schedule.
  - `assignment` union, required — Specifies which users are assigned to complete the scheduled work. Exactly one rule must be set.
    - object — Assign to a specific list of users by ID.
      - `users` S12SchedulingV1ScheduleUserAssignment, required — ScheduleUserAssignment assigns the scheduled work to specific users.
        - `user_ids` string[], required — User IDs to assign.
    - object — Assign to all members of a group.
      - `groups` S12SchedulingV1ScheduleGroupAssignment, required — ScheduleGroupAssignment assigns the scheduled work to all members of a group.
        - `group_ids` string[], required — Group IDs to assign. Currently supports only one group.
    - object — Assign to all members of each target site. Requires the schedule to have site or asset targets.
      - `site_members` S12SchedulingV1ScheduleSiteMemberAssignment, required — ScheduleSiteMemberAssignment assigns work to all members of each target site. For asset targets, assigns to members of the asset's parent site. No additional configuration needed - membership is derived from the target.
    - object — Assign to users who are both site members and in a specific group. Requires site or asset targets.
      - `site_members_in_group` S12SchedulingV1ScheduleSiteMemberInGroupAssignment, required — ScheduleSiteMemberInGroupAssignment assigns the scheduled work to users who are both site members AND members of the specified group. For asset targets, uses members of the asset's parent site.
        - `group_ids` string[], required — Group IDs for intersection filtering. Currently supports only one group.

## Response `200`

A successful response.

- S12SchedulingV1CreateNewScheduleResponse — Response message for CreateNewSchedule.
  - `id` string — Unique identifier of the created schedule.

## Other responses

- `default` — An unexpected error response.

---

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