---
title: "Create schedules in bulk"
method: POST
path: "/v1/schedules/bulk/create"
tags: ["Objects", "Bulk operations"]
---

# Create schedules in bulk

`POST /v1/schedules/bulk/create`

Bulk creates up to 1,000 schedules at a time. This endpoint also handles [inline identifications](/managing-recipients/identifying-recipients#inline-identifying-recipients) for the `actor`, `recipient`, and `tenant` fields.

## Request body

- BulkCreateSchedulesRequest — A request to bulk create schedules. Accepts a list of schedules to create. Each schedule must have a single recipient. The recipients do not have to be unique.
  - `schedules` object[], required — A list of schedules.
    - `actor` union — A map of properties describing a user or an object to identify in Knock and mark as who or what performed the action.
      - string — The ID of the user which is used as the reference for the recipient.
      - InlineIdentifyUserRequest — A set of parameters to inline-identify a user with. Inline identifying the user will ensure that the user is available before the request is executed in Knock. It will perform an upsert for the user you're supplying, replacing any properties specified.
        - `avatar` string, nullable — URL to the user's avatar image.
        - `channel_data` InlineChannelDataRequest — A request to set channel data for a type of channel inline.
        - `created_at` string, date-time, nullable — The creation date of the user from your system.
        - `email` string, nullable — The primary email address for the user.
        - `id` string, required — The ID for the user that you set when identifying them in Knock.
        - `locale` string, nullable — The locale of the user. Used for [message localization](/concepts/translations).
        - `name` string, nullable — Display name of the user.
        - `phone_number` string, nullable — The [E.164](https://www.twilio.com/docs/glossary/what-e164) phone number of the user (required for SMS channels).
        - `preferences` InlinePreferenceSetRequest — Inline set preferences for a recipient, where the key is the preference set id.
        - `timezone` string, nullable — The timezone of the user. Must be a valid [tz database time zone string](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Used for [recurring schedules](/concepts/schedules#scheduling-workflows-with-recurring-schedules-for-recipients).
      - InlineIdentifyObjectRequest — A custom [Object](/concepts/objects) entity which belongs to a collection.
        - `channel_data` union — An optional set of [channel data](/managing-recipients/setting-channel-data) for the object. This is a list of `ChannelData` objects.
          - object — A request to set channel data for a type of channel inline.
          - unknown
        - `collection` string, required — The collection this object belongs to.
        - `created_at` string, date-time, nullable — Timestamp when the resource was created.
        - `id` string, required — Unique identifier for the object.
        - `preferences` union — An optional set of [preferences](/concepts/preferences) for the object.
          - object — Inline set preferences for a recipient, where the key is the preference set id.
          - unknown
      - object, nullable
    - `data` object, nullable — An optional map of data to pass into the workflow execution. There is a 1024 byte limit on the size of any single string value (with the exception of [email attachments](/integrations/email/attachments)), and a 10MB limit on the size of the full `data` payload.
    - `ending_at` string, date-time, nullable — The ending date and time for the schedule.
    - `recipient` union — Specifies a recipient in a request. This can either be a user identifier (string), an inline user request (object), or an inline object request, which is determined by the presence of a `collection` property.
      - string — The ID of the user which is used as the reference for the recipient.
      - object — A set of parameters to inline-identify a user with. Inline identifying the user will ensure that the user is available before the request is executed in Knock. It will perform an upsert for the user you're supplying, replacing any properties specified.
        - `avatar` string, nullable — URL to the user's avatar image.
        - `channel_data` InlineChannelDataRequest — A request to set channel data for a type of channel inline.
        - `created_at` string, date-time, nullable — The creation date of the user from your system.
        - `email` string, nullable — The primary email address for the user.
        - `id` string, required — The ID for the user that you set when identifying them in Knock.
        - `locale` string, nullable — The locale of the user. Used for [message localization](/concepts/translations).
        - `name` string, nullable — Display name of the user.
        - `phone_number` string, nullable — The [E.164](https://www.twilio.com/docs/glossary/what-e164) phone number of the user (required for SMS channels).
        - `preferences` InlinePreferenceSetRequest — Inline set preferences for a recipient, where the key is the preference set id.
        - `timezone` string, nullable — The timezone of the user. Must be a valid [tz database time zone string](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones). Used for [recurring schedules](/concepts/schedules#scheduling-workflows-with-recurring-schedules-for-recipients).
      - object — A custom [Object](/concepts/objects) entity which belongs to a collection.
        - `channel_data` union — An optional set of [channel data](/managing-recipients/setting-channel-data) for the object. This is a list of `ChannelData` objects.
          - object — A request to set channel data for a type of channel inline.
          - unknown
        - `collection` string, required — The collection this object belongs to.
        - `created_at` string, date-time, nullable — Timestamp when the resource was created.
        - `id` string, required — Unique identifier for the object.
        - `preferences` union — An optional set of [preferences](/concepts/preferences) for the object.
          - object — Inline set preferences for a recipient, where the key is the preference set id.
          - unknown
    - `repeats` ScheduleRepeatRule[] — The repeat rule for the schedule.
      - `__typename` string, required — The typename of the schema.
      - `day_of_month` integer, nullable — The day of the month to repeat the schedule.
      - `days` string[], nullable — The days of the week to repeat the schedule.
      - `frequency` 'daily' | 'weekly' | 'monthly' | 'hourly', required — The frequency of the schedule.
      - `hours` integer, nullable — The hour of the day to repeat the schedule.
      - `interval` integer — The interval of the schedule.
      - `minutes` integer, nullable — The minute of the hour to repeat the schedule.
    - `scheduled_at` string, date-time, nullable — The starting date and time for the schedule.
    - `tenant` union — The tenant to trigger the workflow for. Triggering with a tenant will use any tenant-level overrides associated with the tenant object, and all messages produced from workflow runs will be tagged with the tenant.
      - union — An request to set a tenant inline.
        - string — The unique identifier for the tenant.
        - object — A tenant to be set in the system. You can supply any additional properties on the tenant object.
          - `channel_data` union — The channel data for the tenant.
            - unknown
            - object — A request to set channel data for a type of channel inline.
          - `id` string, required — The unique identifier for the tenant.
          - `preferences` union — The preferences for the tenant.
            - unknown
            - object — Inline set preferences for a recipient, where the key is the preference set id.
          - `settings` object — The settings for the tenant. Includes branding and preference set.
            - `branding` object — The branding for the tenant.
              - …
            - `preference_set` union — The preference set for the tenant. Used to override the default preference set.
              - …
      - unknown
    - `workflow` string, required — The key of the workflow.

## Response `200`

OK

- BulkOperation — A bulk operation entity.
  - `__typename` string, required — The typename of the schema.
  - `completed_at` string, date-time, nullable — Timestamp when the bulk operation was completed.
  - `error_count` integer — The number of failed operations.
  - `error_items` object[] — A list of items that failed to be processed.
    - `collection` string, nullable — The collection this object belongs to.
    - `id` string, required — Unique identifier for the object.
  - `estimated_total_rows` integer, required — The estimated total number of rows to process.
  - `failed_at` string, date-time, nullable — Timestamp when the bulk operation failed.
  - `id` string, uuid, required — Unique identifier for the bulk operation.
  - `inserted_at` string, date-time, required — Timestamp when the resource was created.
  - `name` string, required — The name of the bulk operation.
  - `processed_rows` integer, required — The number of rows processed so far.
  - `progress_path` string, uri — The URI to the bulk operation's progress.
  - `started_at` string, date-time, nullable — Timestamp when the bulk operation was started.
  - `status` 'queued' | 'processing' | 'completed' | 'failed', required — The status of the bulk operation.
  - `success_count` integer, required — The number of successful operations.
  - `updated_at` string, date-time, required — The timestamp when the resource was last updated.

## Changes

- **2025-05-19** `923618cb1489` — 5 breaking, 5 warning, 11 info
  - the `schedules/items/actor/oneOf[subschema #1: RecipientRequest]/oneOf[subschema #2: InlineIdentifyUserRequest]/channel_data/allOf[subschema #1: InlineChannelDataRequest]/additionalProperties/` request property type changed from `object` to no type
  - the `schedules/items/actor/oneOf[subschema #1: RecipientRequest]/oneOf[subschema #3: InlineIdentifyObjectRequest]/channel_data/oneOf[subschema #1: InlineChannelDataRequest]/additionalProperties/` request property type changed from `object` to no type
  - the `schedules/items/recipient/oneOf[subschema #2: InlineIdentifyUserRequest]/channel_data/allOf[subschema #1: InlineChannelDataRequest]/additionalProperties/` request property type changed from `object` to no type
  - the `schedules/items/recipient/oneOf[subschema #3: InlineIdentifyObjectRequest]/channel_data/oneOf[subschema #1: InlineChannelDataRequest]/additionalProperties/` request property type changed from `object` to no type
  - …17 more
- …earlier changes not shown

[Full history](https://skmtc.dev/knocklabs/apis/knock-api/changes/v1/schedules/bulk/create/post.md)

---

[API](https://skmtc.dev/knocklabs/apis/knock-api.md) · [All operations](https://skmtc.dev/knocklabs/apis/knock-api/llms.txt) · [OpenAPI document](https://skmtc.dev/knocklabs/apis/knock-api/revisions/5ce0d88003ac?raw)
