Skip to main content
Every post to Slack carries a settings object with "__type": "slack". Read the live schema for your channel with Get a channel’s settings.

Fields

One PostQueen channel is one Slack workspace. To post in two channels of the same workspace, send two posts. The text is sent as Slack mrkdwn, so *bold* and _italic_ work. Write a link as a plain URL, which Slack links by itself: text in angle brackets, such as Slack’s own link form, is read as HTML and comes out broken. Text longer than 3,000 characters is split into sections at line breaks, and each picture is shown under the text as an image block. Each extra entry in value is posted as a reply in the message’s thread, after its delay in minutes.

Find the channel id

The channels tool lists the workspace’s public channels and the private channels the app has been invited to. Call it through trigger a provider tool:
The response is { "output": [ { "id", "name" } ] }. Put the chosen id, such as C0123456789, in settings.channel.

What PostQueen checks

A post that breaks one of these rules is refused with 400 before it is scheduled: The error body names the channel and the rule:
A missing or empty field fails the request validation instead, and the body lists every problem under message. Slack’s own rules are not checked first: an image block shows PNG, JPG and GIF only, and a private channel needs the app invited. If Slack refuses a message, the post fails with Slack’s reason, such as not_in_channel, instead of being marked published.

Examples

Send each body to create a post. Replace YOUR_CHANNEL_ID with the channel’s id from list channels, the Slack channel with an id from the channels tool, and each media id and path with the values upload a file returns.
In the first example, the second entry in value is posted 5 minutes after the message, as a reply in its thread.
Last modified on September 24, 2026