For developers

Post to Discord with the 1Post API

Post to Discord from code with one request: POST /v1/posts with your channel id, the text and a schedule_at time. Discord text is limited to 2,000 characters, counted by code points. 1Post allows up to 100 posts a day for each connected channel, and a dry run checks a post against every rule first.

Updated 2026-10-26

Connect Discord first

  1. 01

    In Discord, open the channel settings and create a webhook.

  2. 02

    Copy the webhook URL.

  3. 03

    Open Accounts in 1Post and choose Connect, then Discord, and paste the URL.

  4. 04

    Choose the channel in the composer.

Then GET /v1/accounts returns the id of the Discord channel to use in the request.

Send a post to Discord

Schedule a post
curl https://api.get1post.com/v1/posts \
  -H "Authorization: Bearer $ONEPOST_API_KEY" \
  -H "Idempotency-Key: discord-first-post" \
  -d '{"accounts":["ACCOUNT_ID"],"text":"Release notes are up.","schedule_at":"2026-11-02T15:00:00Z"}'

The reply is 202 with the post (status scheduled) and one destination for Discord, which moves from queued to published or failed.

What you can send to Discord

  • Text
  • Up to 10 images
  • Video

What Discord publishes

  • A webhook message holds up to 2,000 characters of content and up to 10 embeds.

Discord rules the request is checked against

RuleWhat 1Post checks
Text limit2,000 characters, counted by code points
Media acceptedImages, Video
Images per post10
Videos per post1
ThreadsNo
First commentNo
Posts per day, per connected account (1Post)100

The same table with sources is on the Discord specs page.

Good to know for Discord

A Discord post goes to the one channel its webhook was made for, so connect one account per channel. Images and video travel with the text.

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.

A refused request, abridged
{
  "error": {
    "code": "invalid_for_platform",
    "message": "discord refuses this post: Discord counts 2,032 of 2,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.

Try it

Start a trial

7-day trial for $1. Connect your accounts and schedule a week of posts in one sitting.

Start a trial
Free in your browser

Free tools

Count characters the way each network does, split threads and preview posts. No account needed.

Open the tools
For builders

API and MCP

Post to every network from your own code or assistant with one key, signed webhooks and idempotent requests.

See the API

Questions

Can I post to Discord with an API key?

Yes. A key with write scope can create, change and cancel Discord posts for the workspace it belongs to, with the role of the member who made it. See API authentication.

What happens if a Discord post breaks a rule?

The request is refused with invalid_for_platform and the failing rule is named. Fix it and send the request again, or send it with dry_run to test the fix first.

How many Discord posts can I send in a day?

Up to 100 for each connected channel. A request that would pass that answers daily_cap with the time the day frees up.

Sources

Get this week’s posts scheduled

Connect your accounts, write once and let 1Post publish on time while you get on with the rest of your day.