Connect Slack first
- 01
In Slack, create an incoming webhook for the channel.
- 02
Copy the webhook URL.
- 03
Open Accounts in 1Post and choose Connect, then Slack, and paste the URL.
- 04
Choose the channel in the composer.
Then GET /v1/accounts returns the id of the Slack channel to use in the request.
Send a post to Slack
curl https://api.get1post.com/v1/posts \
-H "Authorization: Bearer $ONEPOST_API_KEY" \
-H "Idempotency-Key: slack-first-post" \
-d '{"accounts":["ACCOUNT_ID"],"text":"The weekly report is ready.","schedule_at":"2026-11-02T15:00:00Z"}'The reply is 202 with the post (status scheduled) and one destination for Slack, which moves from queued to published or failed.
What you can send to Slack
- Text
What Slack publishes
- Slack suggests keeping message text to 4,000 characters for best results and truncates messages over 40,000.
Slack rules the request is checked against
| Rule | What 1Post checks |
|---|---|
| Text limit | 4,000 characters, counted by code points |
| Media accepted | Text only |
| Threads | No |
| First comment | No |
| Posts per day, per connected account (1Post) | 100 |
The same table with sources is on the Slack specs page.
Good to know for Slack
A Slack post is text only and goes to the one channel its incoming webhook was made for. Connect one account for each channel you post to.
Check the post before it is queued
Add "dry_run": true to test a post: nothing is kept, a valid one answers 200 and a broken one answers 422 naming the rule.
{
"error": {
"code": "invalid_for_platform",
"message": "slack refuses this post: Slack counts 4,032 of 4,000 characters in part 1. (text_too_long).",
"fix": "Fix the rule named in the message and send the post again.",
"retryable": false,
"request_id": "REQUEST_ID"
}
}An assistant connected to the MCP server sends the same fields to create_post; set one up.