Skip to main content
Discord works differently from other platforms. Instead of OAuth tokens, we use webhooks that you set up in your Discord server.

Quirks & Gotchas

Webhook-Based Posting

Discord doesn’t allow third-party apps to post as a user. Instead, we use webhooks.
  • You connect a Discord server and select which channels to enable.
  • We create a webhook for each channel.
  • Posts appear as a “bot” message with a customizable username and avatar.

Channel Selection Required

Unlike other platforms, you must specify a channelId in your post data. You can find available channels in the socialAccount.channels array.

Custom Bot Identity

You can customize how your posts appear:
  • username: Up to 80 characters. This is the name shown as the message author.
  • avatarUrl: A URL to an image that will be used as the bot’s avatar.

Post Options

FieldTypeDescription
channelIdstringRequired. The channel to post to. Found in socialAccount.channels.
textstringMessage content. Max 2000 characters.
uploadIdsstring[]Media attachments (images, videos).
usernamestringCustom display name. Max 80 characters.
avatarUrlstringCustom avatar URL. Max 2048 characters.

Media Limits

ConstraintValue
Files0-10 (images and/or videos, mixed allowed)
Video max size25 MB
Image max size25 MB
TextMax 2,000 characters
See Platform Limits for more details.

Analytics

For general analytics concepts, see the Analytics Overview. Discord does not provide analytics via its API. All metrics return 0. It’s a messaging platform, not an analytics platform.
MetricNote
impressionsReturns 0
viewsReturns 0
likesReturns 0
commentsReturns 0

Example

await bundle.post.create({
  socialAccountTypes: ["DISCORD"],
  data: {
    DISCORD: {
      channelId: "123456789012345678",
      text: "Hello from bundle.social!",
      username: "My Bot",
      avatarUrl: "https://example.com/avatar.png"
    }
  }
});