Discord API Guide
Publish text and media to a Discord server channel via an Incoming Webhook. PostEverywhere posts to the webhook URL you provide at setup — there is no OAuth, no bot, and no app review process. For a general overview of all supported platforms, see the Introduction.
Connecting a Discord Account
Discord uses an Incoming Webhook URL. A webhook is bound to one specific channel — if you want to post to multiple channels, create multiple webhooks and connect each separately.
- In Discord, open your server. Go to Server Settings → Integrations → Webhooks.
- Click New Webhook, give it a name, and select the target channel.
- Click Copy Webhook URL. The URL looks like
https://discord.com/api/webhooks/<id>/<token>. - In your PostEverywhere dashboard, go to Accounts → Connect Discord and paste the webhook URL.
We validate the URL by fetching the webhook metadata before saving. If Discord rejects the URL (404 / deleted webhook), reconnect after recreating it.
Supported Content Types
| Content Type | Media Required | Description |
|---|---|---|
| Text post | None | Plain message, up to 2,000 characters. |
| Image post | Image(s) | Up to 10 images, each rendered as an embed. |
| Video post | Video URL | Video URL appended to the message — Discord renders it inline. |
Discord webhooks render attached images as embeds, not native attachments. This means images appear as preview cards rather than uploaded files; the visual result is similar but the underlying mechanism is different from native bot uploads.
Platform-Specific Settings
Discord has no platform-specific settings beyond per-platform content override. The webhook's display name and avatar are configured in Discord at the webhook level, not per-post.
{
"platform_content": {
"discord": {
"content": "Discord-specific message (up to 2,000 chars)"
}
}
}
Example: Create a Post
Schedule a Discord Text Post
curl -X POST https://app.posteverywhere.ai/api/v1/posts \
-H "Authorization: Bearer $POSTEVERYWHERE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Release v2.4.0 is live! Patch notes: https://example.com/changelog",
"account_ids": [3105],
"scheduled_for": "2026-06-15T17:00:00Z",
"timezone": "America/Los_Angeles"
}'
Schedule a Discord Post with Multiple Image Embeds
curl -X POST https://app.posteverywhere.ai/api/v1/posts \
-H "Authorization: Bearer $POSTEVERYWHERE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"content": "Concept art drop for the new map",
"account_ids": [3105],
"media_ids": [
"11111111-1111-1111-1111-111111111111",
"22222222-2222-2222-2222-222222222222",
"33333333-3333-3333-3333-333333333333"
]
}'
Requirements & Limits
| Requirement | Limit |
|---|---|
| Message length | 2,000 characters |
| Image embeds per message | Up to 10 |
| Image formats | JPEG, PNG, WebP, GIF |
| Image max file size | 25 MB (Discord webhook limit) |
| Video | Sent as URL — Discord renders the link inline |
| Channel binding | One webhook = one channel |
| Webhook URL must be valid | Must be a current Discord webhook (not deleted/revoked) |
If the webhook is deleted on Discord, every subsequent publish fails with 404. Recreate the webhook in Discord and reconnect the account in PostEverywhere.
Tips
- Webhook = one channel. To post to multiple channels in the same server, create one webhook per channel and connect each as a separate "account" in PostEverywhere. Use
account_idsto fan out. - Images are embeds, not attachments. Up to 10 image URLs are passed as embed objects. Discord fetches each URL — if your media is behind a private store, ensure the URL is publicly accessible (PostEverywhere's media URLs are).
- Video is appended as a link, not uploaded. Discord webhooks don't accept direct video uploads — instead, we append the video URL to the message body and Discord renders the embed automatically. This works well for MP4s served from a CDN.
Frequently Asked Questions
How do I connect a Discord server?
Open the server in Discord, go to Server Settings → Integrations → Webhooks, create a new webhook for the channel you want to post to, copy the webhook URL, then paste it under Accounts → Connect Discord in your PostEverywhere dashboard.
Why did my Discord webhook stop working?
The most common cause is that someone deleted the webhook on Discord, or the channel itself was deleted. Recreate the webhook in Discord and reconnect the account in PostEverywhere — the URL changes whenever a webhook is recreated.
Can I post to a Discord channel that requires a role?
A webhook posts as the webhook itself, bypassing role checks for posting permission. However, if the channel is read-restricted by role, members without that role won't see the post. The webhook itself can post regardless of channel permissions, as long as the webhook still exists.
Can I edit a Discord post after it's published?
No. Discord webhooks support PATCH /webhooks/<id>/<token>/messages/<id>, but PATCH /v1/posts/:id only accepts scheduled or draft posts on our API. Once published, edits return 400 invalid_post_status — edit the message manually in Discord if needed.
Related Platforms
- Telegram — bot-token connection model, similar low-friction setup
- Bluesky — app-password model, also no OAuth
- Threads — Meta's short-form text platform