Sample - Slack Web API
POST/chat.scheduleMessage

Schedule a message

Schedules a message to be sent to a channel at a future time. Provide channel and post_at, then use text, blocks, or attachments to define the message content. A successful response includes the scheduled message identifier and scheduled timestamp.

  • RetriesRetries up to 2×, 500ms backoff, 30s timeout.

1 parameter · 12 body fields
tokenstringoptional
Authentication token with the `chat:write` scope.

Optional scheduled message configuration, including the destination, send time, content, formatting, and threading options.

channelstringoptional
Channel, private group, or DM channel to send message to. Can be an encoded ID, or a name. See [below](#channels) for more details.
textstringoptional
How this field works and whether it is required depends on other fields you use in your API call. [See below](#text_usage) for more detail.
post_atstringoptional
Unix EPOCH timestamp of time in future to send the message.
parsestringoptional
Change how messages are treated. Defaults to `none`. See [chat.postMessage](chat.postMessage#formatting).
as_userbooleanoptional
Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See [chat.postMessage](chat.postMessage#authorship).
link_namesbooleanoptional
Find and link channel names and usernames.
attachmentsstringoptional
A JSON-based array of structured attachments, presented as a URL-encoded string.
blocksstringoptional
A JSON-based array of structured blocks, presented as a URL-encoded string.
unfurl_linksbooleanoptional
Pass true to enable unfurling of primarily text-based content.
unfurl_mediabooleanoptional
Pass false to disable unfurling of media content.
thread_tsnumberoptional
Provide another message's `ts` value to make this message a reply. Avoid using a reply's `ts` value; use its parent instead.
reply_broadcastbooleanoptional
Used in conjunction with `thread_ts` and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to `false`.

2 status codes
200Returns the scheduled message, including its channel, message content, scheduled timestamp, and unique `scheduled_message_id`.
channelstringrequired
messageobjectrequired
okbooleanrequired
Allowed:true
post_atintegerrequired
scheduled_message_idstringrequired
defaultReturned when the scheduled time is invalid or the message cannot be scheduled, including when `post_at` is in the past or too far in the future.
callstackstringoptional
Note: PHP callstack is only visible in dev/qa
errorstringrequired
Allowed:invalid_timetime_in_pasttime_too_farchannel_not_foundnot_in_channelis_archivedmsg_too_longno_textrestricted_actionrestricted_action_read_only_channelrestricted_action_thread_only_channelrestricted_action_non_threadable_channel
okbooleanrequired
Allowed:false

Error handling

post_at must be a Unix EPOCH timestamp in the future. parse defaults to none, as_user defaults to false, and reply_broadcast defaults to false when omitted; thread_ts must identify the parent message when scheduling a threaded reply.