Platform guides

Post to Telegram, Discord and Slack with an API

Telegram, Discord and Slack are the credential-based channels: no OAuth screen, just a bot token or a webhook URL that you paste into Socifyr once. After that, one API call posts to a Telegram channel, a Discord channel and a Slack channel. Limits are 4,096 characters on Telegram, 2,000 on Discord (truncated) and 40,000 on Slack, which accepts text only.
Published 4 min read

How do I connect each one?

PlatformWhat you paste into SocifyrHow to get it
TelegramBot token and chat IDCreate a bot with @BotFather (/newbot), add it to your channel as an admin with Post messages, then use the channel handle (@mychannel) or numeric ID (-100123...)
DiscordWebhook URLChannel, Edit, Integrations, Webhooks, New Webhook, copy the URL. One webhook per channel
SlackIncoming webhook URLAdd Incoming WebHooks at slack.com/apps, choose the channel, copy the https://hooks.slack.com/services/... URL

None of these credentials expire. A Telegram bot token, a Discord webhook and a Slack webhook all keep working until you revoke them: /revoke in @BotFather, delete the webhook in Discord, or deactivate the integration in Slack. That makes them the lowest-maintenance connections, with no reconnect flow to babysit. A webhook is also locked to the channel chosen when it was created, so one webhook means one destination.

What are the limits on each platform?

Telegram, Discord and Slack limits from the Socifyr shared constants
LimitTelegramDiscordSlack
Text length4,096 chars2,000 chars40,000 chars
Caption on media1,024 chars2,000 charsn/a
ImagesUp to 10, 10 MB eachUp to 10 files, 8 MB eachNot supported
Video50 MB, 1 hour8 MB, 10 minutesNot supported
Posts per rolling 24 hours100100100

Two behaviors are worth knowing because they are silent. Discord content is truncated at 2,000 characters rather than split or rejected, so a long post arrives cut off. Telegram media captions are truncated at 1,024 characters even though text messages allow 4,096. If you send long content to either, shorten it first.

How do I post to all three in one call?

bash
curl -X POST https://api.socifyr.com/api/content/text \
  -H "Authorization: Bearer sk_your_key" \
  -H "X-Workspace-Id: <workspaceId>" \
  -H "Content-Type: application/json" \
  -d '{
    "connections": ["telegram-myaccount", "discord-myaccount", "slack-myaccount"],
    "text": "Release 2.4 is live. Notes: https://example.com/changelog"
  }'
Or from the CLI, with a deploy script or CI job
bash
socifyr post "Deploy finished: v2.4 is live" \
  --to telegram-myaccount,discord-myaccount,slack-myaccount --wait

This pattern suits release announcements, incident updates and community posts. An AI agent can do the same through the MCP server with post_text. For anything media-heavy, route Slack out of the connection list: a post with images or video sent to Slack fails with "Slack incoming webhooks cannot upload files — text posts only", while the other channels succeed independently and the post finishes as partial_failure.

How do images and video behave on Telegram and Discord?

  • Telegram sends multiple photos as one album (up to 10). Public channels get t.me/<channel>/<id> links and private channels get t.me/c/... links in the result.
  • Discord attaches up to 10 files to the message. Files over 8 MB are rejected by Discord's own API, a hard limit. Messages appear under the webhook's name and avatar.
  • Slack is text only. File upload needs a full Slack app with the files:write scope, which is not supported yet.
typescript
await socifyr.uploads.photos({
  connections: ['telegram-myaccount', 'discord-myaccount'],
  medias: ['https://cdn.example.com/chart.png'],
  text: 'Weekly numbers',
})

How do I keep an agent from spamming a team channel?

Chat channels are where a looping agent does the most visible damage. Put a dailyPostLimit on the API key it uses, or set requireApproval so every post waits for a human. Both are covered in how to give an AI agent safe access to social accounts.

How do I find my Telegram chat ID?

For a public channel use the handle with an at sign, such as @mychannel. For a private channel or a group use the numeric ID, which starts with -100. The bot must be in the chat, and for a channel it must be an administrator with the Post messages right, otherwise posts fail with a permission error. Keep the bot token private: anyone holding it can post as the bot until you revoke it with /revoke in @BotFather.

When should I use these instead of the OAuth platforms?

Use caseGood fit
Release and deploy announcements to your own teamSlack, Discord
Public channel broadcasts to subscribersTelegram
Community updates with attached screenshotsDiscord (8 MB files), Telegram (10 MB photos)
Anything that needs reliability without token upkeepAll three, since credentials do not expire

These channels are lower stakes than a brand account, which makes them a good place to test an automation before pointing it at Instagram or LinkedIn. The same request shape works everywhere, so moving a working flow to a public platform is a matter of adding slugs to connections.

Frequently asked questions

How do I post to a Telegram channel with an API?

Create a bot with @BotFather, add it to the channel as an admin with Post messages, then connect the bot token and chat ID in Socifyr. After that, post with the connection slug through the REST API, CLI, SDK or MCP.

Can I post to Discord through a webhook?

Yes. Create a webhook on the channel, paste its URL into Socifyr, and post with the discord- slug. Messages appear under the webhook's name and avatar, with up to 10 attachments of 8 MB each.

Can Socifyr upload images to Slack?

Not yet. Slack connections use incoming webhooks, which accept text only. File upload would need a full Slack app with files:write.

Why is my Discord message cut off?

Discord content is truncated at 2,000 characters. Shorten the message or send it in parts.

Do these connections expire?

No. Telegram bot tokens, Discord webhooks and Slack webhooks last until you revoke or delete them.

Related pages

Try it with your own accounts

One API key, 18 platforms, and your agent never sees a platform token. The free plan needs no card.