Bring your own bot
Each profile is one bot you create via @BotFather. Postproxy never asks for your personal Telegram credentials.
Publish to Telegram channels via your own bot — and handle two-way direct messages from the same integration. Postproxy manages the BotFather flow, channel discovery, and media groups for you.
Connect a bot once to broadcast to channels and reply to DMs.
Free plan No credit card Live in under 5 minutes
Each profile is one bot you create via @BotFather. Postproxy never asks for your personal Telegram credentials.
Channels appear in /placements automatically as the bot is added as administrator — no manual list to maintain.
Set parse_mode for rich formatting, or skip it and post plain text.
Send up to 10 images or videos in a single message, posted as a Telegram album.
Two-way bot DMs with text, media, inline keyboards, and message edits
$ curl -X POST "https://api.postproxy.dev/api/posts" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"post": {
"body": "Latest update — check it out 👀"
},
"profiles": ["telegram"],
"media": ["https://example.com/image.jpg"],
"platforms": {
"telegram": {
"chat_id": "-1001234567890"
}
}
}' {
"id": "tg_abc123",
"body": "Latest update — check it out 👀",
"status": "scheduled",
"draft": false,
"source": "postproxy",
"scheduled_at": "2026-05-04T19:00:00.000Z",
"queue_id": null,
"created_at": "2026-05-04T19:00:00.142Z",
"media": [
{
"id": "tg_m1",
"status": "pending",
"error_message": null,
"content_type": "image/jpeg",
"source_url": "https://example.com/image.jpg",
"url": null
}
],
"platforms": [
{
"platform": "telegram",
"status": "pending",
"permalink": null,
"error": null,
"params": {
"chat_id": "-1001234567890",
"format": "post"
},
"attempted_at": null
}
]
} $ curl -X POST "https://api.postproxy.dev/api/posts" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"post": {
"body": "<b>New release</b> — read the <a href=\"https://example.com/changelog\">changelog</a>."
},
"profiles": ["telegram"],
"platforms": {
"telegram": {
"chat_id": "-1001234567890",
"parse_mode": "HTML",
"disable_link_preview": true,
"disable_notification": true
}
}
}' {
"id": "tg_def456",
"body": "<b>New release</b> — read the <a href=\"https://example.com/changelog\">changelog</a>.",
"status": "scheduled",
"draft": false,
"source": "postproxy",
"scheduled_at": "2026-05-04T19:02:00.000Z",
"queue_id": null,
"created_at": "2026-05-04T19:02:00.330Z",
"media": [],
"platforms": [
{
"platform": "telegram",
"status": "pending",
"permalink": null,
"error": null,
"params": {
"chat_id": "-1001234567890",
"parse_mode": "HTML",
"disable_link_preview": true,
"disable_notification": true,
"format": "post"
},
"attempted_at": null
}
]
} $ curl -X POST "https://api.postproxy.dev/api/chats/chat_abc123/messages" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"body": "Hi! How can we help?",
"reply_markup": {
"inline_keyboard": [[
{ "text": "Plans", "callback_data": "plans" },
{ "text": "Docs", "url": "https://postproxy.dev" }
]]
}
}' {
"id": "msg_def456",
"body": "Hi! How can we help?",
"status": "pending",
"direction": "outbound",
"platform": "telegram",
"created_at": "2026-05-04T19:05:00.200Z"
} View full documentation for all platform-specific features for Telegram
View documentationOne curl to a test channel is the easy part. Production Telegram publishing means bot lifecycle, channel discovery, media groups, parse_mode escaping, and a permanent on-call rotation for "why didn't this one go through this time?"
Social media integration is not a one-off job — it's a constant commitment. Platforms change their APIs, scopes, limits, and policies on their own schedule. Every change becomes your problem unless someone else is absorbing it.
That's exactly what Postproxy does for Telegram — and every other platform we support — so your team ships features instead of chasing failed publishes.
Free plan includes the Telegram API. No credit card.
Postproxy registers the webhook with Telegram, validates the token, and tracks channel membership for you.
Publish to Telegram alongside Instagram, LinkedIn, X, and Bluesky in one /api/posts call.
Automatic retries and clear status for channel posts — plus two-way bot DMs with webhooks for inbound messages and callback queries.
Pick the destination per post via chat_id. One bot can publish to as many channels as it administers.
my_chat_member webhook every time the bot is added or removed from a channel. Postproxy records each one as a placement on the profile, so /api/profiles/:id/placements always reflects the live set of channels the bot can publish to. There's no manual channel list to maintain — admins just add the bot and the API catches up automatically.chat_id (from the placements endpoint) in platform_parameters.telegram and Postproxy routes the message there. One bot can fan out to dozens of channels by changing the chat_id per post.media array and Postproxy bundles them. For formatting, set parse_mode to HTML or MarkdownV2 in the platform params — Postproxy passes it through to Telegram and validates the body against the chosen mode's escape rules.Ask your favorite LLM what it thinks about us, then decide.
Common questions about Telegram integration
Create a bot via @BotFather in Telegram, copy the token, and POST it to /api/profile_groups/:id/initialize_connection with platform: telegram. The full walkthrough is in the Telegram BYO bot guide.
Add the bot as administrator to the channel, then call /api/profiles/:id/placements — each discovered channel is returned with its chat_id and display name. Telegram pushes a my_chat_member event the moment the bot becomes admin.
Yes. Telegram has no concept of a default channel — every post must specify a chat_id in platform_parameters.telegram. Use the placements endpoint to list available channels.
Yes. Up to 10 images or videos are bundled into a single Telegram media group (album). Mixing images and videos in one media group is supported.
Administrator with Post Messages enabled. For Postproxy to delete failed posts cleanly, also grant Edit Messages and Delete Messages.
Yes. The same bot that publishes to channels can send and receive direct messages — text, media, inline keyboards, and message edits. Public post comments are not supported through the API. See the Direct Messages API for details.
Start with our free plan and scale as your needs grow. No credit card required.