Skip to main content
POST
Create a schedule

Authorizations

Authorization
string
header
required

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Body

application/json
account_id
string
required

The linked account to sync.

Example:

"3fa85f64-5717-4562-b3fc-2c963f66afa6"

action_id
string
required

The action to sync. The account's connector profile must already have a sync config for it.

Example:

"hris_list_employees"

sync_params
object | null

The parameters the action is called with on each run. Every parameter the action requires must be supplied; call GET /v2/data_sync/sync_configs/{id}/parameters to discover them.

name
string | null

A human-readable name for the schedule. Defaults to the action id.

enabled
boolean | null
default:true

Whether the schedule is active on creation.

cadence
string | null

How often the sync fires. ISO 8601 duration (e.g. PT1H); inherited from the sync config when omitted.

full_sync_after
string | null

The point after which an incremental sync falls back to a full sync. ISO 8601 duration; inherited from the sync config when omitted.

start_at
string<date-time> | null

When the schedule should first fire; null for no start time, omit to inherit it from the sync config.

Response

The schedule was created.

id
string
required

The unique identifier of the schedule.

account_id
string
required

The linked account this schedule syncs.

action_id
string
required

The action this schedule runs.

name
string
required

The human-readable name of the schedule.

sync_params
object
required

The parameters the action is called with on each run.

params_hash
string
required

A hash of sync_params, distinguishing schedules for the same action.

enabled
boolean
required

Whether the schedule is currently active.

cadence
string
required

How often the sync fires. ISO 8601 duration. Owned by the sync config on auto_link schedules — patching it there is rejected.

created_at
string<date-time>
required

When the schedule was created.

updated_at
string<date-time>
required

When the schedule was last updated.

sync_config_id
string | null

The sync config that bounds this schedule. Set on every schedule, hand-authored ones included — it is what permits the action to sync at all. Use source to tell how a schedule came to exist; null here means only that the schedule predates the field.

source
enum<string> | null

How the schedule came to exist: auto_link if its sync config fanned it out, manual if it was hand-authored. This is the discriminator between the two, not sync_config_id. It also decides which fields are patchable: an auto_link schedule takes cadence, start_at and full_sync_after from its sync config.

Available options:
auto_link,
manual,
unmapped_value,
null
full_sync_after
string | null

The point after which an incremental sync falls back to a full sync. ISO 8601 duration; null when unset. Owned by the sync config on auto_link schedules — patching it there is rejected.

start_at
string<date-time> | null

When the schedule was first scheduled to fire; null when unset. Owned by the sync config on auto_link schedules — patching it there is rejected.

next_run_at
string<date-time> | null

When the schedule will next fire; null when unset.

last_run_at
string<date-time> | null

When the schedule last ran; null before its first run.

last_run_status
string | null

The status of the most recent run; null before its first run.

last_run_error
string | null

The error message from the most recent run, if it failed.

paused_reason
string | null

Why the schedule is not currently running even though enabled may be true. sync_config_disabled while its sync config is disabled or has been removed, action_disabled while the action is switched off on the connector profile, auto_link_disabled while auto_link is off on a schedule that auto_link created (hand-authored schedules are unaffected by it), or an account-lifecycle reason such as the linked account being disabled. Only the widest cause currently holding the schedule back is reported, so clearing it may reveal another. The schedule keeps its own enabled value throughout. null means nothing is holding it back.