Skip to main content
PUT
Keys requiring send approval cannot activate or edit schedules (403 confirmation_required). Reads and exact status-only stop requests remain available. Use pending sends for approved single or bulk SMS. Update the configuration of an existing schedule. Only the fields you include in the request body will be modified — omitted fields remain unchanged. Schedules with status complete cannot be edited and will return a 400 error. API keys with a daily send cap cannot activate or edit schedules. These requests return 403 schedule_not_allowed_for_capped_key without saving changes. List restrictions apply to the schedule’s resulting source lists, including stored lists omitted from the request. Restricted keys must retain nonempty, explicitly allowed source lists. An empty selection means all active account lists during execution, so a restricted key cannot clear it or edit a schedule that still uses that default. Current key policy and schedule changes commit in one transaction. A concurrent schedule change returns 409 schedule_write_conflict with retryable: false; reload the schedule and reconsider the update before submitting a revised request. To stop a schedule, send exactly {"status":"off"} or {"status":"archive"}. These requests are permitted by the key’s cap and list policies, including when an existing source list is no longer allowed. During the execution lock window, only off is available; archiving still returns 409 schedule_locked. Adding any other field keeps the request subject to cap and list restrictions. Tenant ownership and completed-schedule restrictions still apply. Blast updates accept inline message text and offer/custom-link mappings without a saved creative. Sending blasts replaces the entire array. save_as_creative and creative_name are creation-only options: including either field in a PUT variant returns 400 invalid_save_as_creative, even when the flag is false. Updating a schedule never creates or synchronizes a saved creative. To activate an existing draft with its current content and timing, send {"status":"on"} using a live API key with no daily cap or send-approval requirement, and with permission for the schedule’s source lists. This operation does not provide sandbox simulation.

Path Parameters

string
required
The unique identifier of the schedule to update.

Body Parameters

Blast mappings support SMS offers (offer_source omitted or sms) and custom URLs. OMS offer bindings must be managed through the app’s blast editor. All body parameters are optional. Only provided fields are updated.
string
A descriptive name for this schedule.
string
The type of schedule. Must be blast or automated.
array of strings
Array of audience IDs to target. Each audience must exist and be active on your account.
boolean
Set to true for a recurring schedule or false for a one-time send.
string
Time of day to send, in HH:MM format (24-hour clock).
array of integers
IDs of source sending lists. Restricted keys must retain a nonempty selection of allowed lists; [] means all active account lists and is available only to unrestricted keys.
string
Updated status. Allowed values on update: draft, off, on, complete, archive.
Conditional date and day requirements are evaluated only against the fields included in this request — the schedule’s already-stored is_repeating value is not consulted. A requirement applies only when the same request also sets is_repeating. Include is_repeating whenever you change dates or days: a request that clears a date without it is accepted and can leave the schedule without the dates its mode needs.
datetime
The date to send for a one-time schedule. Required only when this same request also sets is_repeating to false; you can clear send_date without resending is_repeating, and no error is raised.
datetime
Start date for a repeating schedule. Required only when this same request also sets is_repeating to true; you can clear start_date without resending is_repeating, and no error is raised.
datetime
End date for a repeating schedule. Required only when this same request also sets is_repeating to true; you can clear end_date without resending is_repeating, and no error is raised.
object
An object specifying which days the schedule should run. Keys: monday, tuesday, wednesday, thursday, friday, saturday, sunday. Values are booleans. At least one day must be true only when this same request also sets is_repeating to true; omitting days_of_week on such a request is treated as no days selected and rejected.
float
Skip sending to a contact if they were already sent to within this many hours.
boolean
When true, send_time is interpreted in each recipient’s local timezone.
boolean
Enable or disable bot filtering.
boolean
Set to true to send MMS messages with image attachments. For blasts, every resulting variant must have a valid mms_image_url. Omitted fields retain their stored values, so enabling MMS requires images on the existing variants or a replacement blasts array that supplies them. Activating an MMS blast also checks all variant images. Status-only stop and archive requests do not require repairing images first.
boolean
Enable or disable click-to-open mode.
float
Percentage of the audience for automated creative selection (0-100).
float
Expected or target revenue from this send.
array
Updated array of blast variant objects. When provided, this replaces the entire blasts array. A resulting SMS or MMS blast must have at least one variant, even when you omit send_type and keep its stored value. Empty or null replacements are rejected. Omitting blasts retains existing variants; activating a legacy blast with no variants requires supplying them first.

Response Fields

The response is the full updated schedule object. See List Schedules for the complete schedule object schema.

Examples

Error Codes

A 409 schedule_locked response carries two extra fields: lockedFields (the array of fields currently locked) and unlocksAt (an ISO 8601 timestamp for when edits are allowed again).

Next Steps

Campaign Scheduling

Scheduling best practices

List Audiences

View audiences