TelegramAPI for channel posting

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

Bring your own bot

Each profile is one bot you create via @BotFather. Postproxy never asks for your personal Telegram credentials.

Channel discovery

Channels appear in /placements automatically as the bot is added as administrator — no manual list to maintain.

HTML & MarkdownV2

Set parse_mode for rich formatting, or skip it and post plain text.

Media groups

Send up to 10 images or videos in a single message, posted as a Telegram album.

Direct Messages

Two-way bot DMs with text, media, inline keyboards, and message edits

api.postproxy.dev
POST /api/posts
$ 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"
         }
       }
     }'
200 OK application/json
{
  "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
    }
  ]
}

View full documentation for all platform-specific features for Telegram

View documentation
Integration cost

Skip days of Telegram integration work

One 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?"

Weeks of Telegram integration work compressed to hours

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.

5 min
Time to your first Telegram post via API
Days → Hours
Engineering time saved on integration work
$0
Free plan, no credit card required
Build it yourself
Ship with Postproxy
Register bot webhooks and store tokens for every connected bot
01
One REST endpoint. One payload schema. SDKs for popular languages
Track my_chat_member events to keep the channel list in sync
02
OAuth, tokens, and refresh handled for you — across all accounts
Assemble media groups (up to 10) and pick the right upload endpoint per type
03
Media upload, chunking, and format detection — automatic
Escape MarkdownV2 / validate HTML so messages aren't rejected mid-publish
04
Retries, rate-limit windows, and per-platform receipts built in
Manage rate limits per chat and per bot, retry transient failures
05
Edge cases are our problem. Failures come back with an explicit reason
Triage every silent failure: "Why didn't this one post go through?"
06
We track the API changes. You ship features

Free plan includes the Telegram API. No credit card.

Benefits

Why Postproxy for Telegram?

Skip the bot plumbing

Postproxy registers the webhook with Telegram, validates the token, and tracks channel membership for you.

Same payload as every network

Publish to Telegram alongside Instagram, LinkedIn, X, and Bluesky in one /api/posts call.

Publish and engage

Automatic retries and clear status for channel posts — plus two-way bot DMs with webhooks for inbound messages and callback queries.

Multi-channel from one bot

Pick the destination per post via chat_id. One bot can publish to as many channels as it administers.

How Postproxy publishes to Telegram

01 Bring-your-own-bot, not a Postproxy bot
Telegram doesn't expose consumer OAuth for posting. Each Postproxy Telegram profile represents one bot that you create via @BotFather. You own the bot, you control its username, and you can revoke it any time. Postproxy stores the bot token and uses it to publish — your bot, your branding, your relationship with the channel admins.
02 Channels are discovered, not configured
Once the bot is registered, Telegram pushes a 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.
03 Per-post channel routing with chat_id
Unlike Facebook or LinkedIn, Telegram has no concept of a default destination — every post must say which channel. Pass the channel's 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.
04 Media groups and rich formatting
Telegram supports up to 10 photos/videos in a single album (media group), mixed freely. Send the URLs in the standard 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.
05 Two-way direct messages
The same bot that publishes to channels can also handle direct messages. Send and receive DMs with text, media, inline keyboards, and message edits — with no 24-hour messaging window once a user has started a conversation. Inbound messages and callback queries from inline buttons arrive via webhooks. See the Direct Messages API for chat creation, message sending, and editing.

Still wondering if Postproxy is the right fit?

Ask your favorite LLM what it thinks about us, then decide.

Frequently Asked Questions

Common questions about Telegram integration

01 How do I connect a Telegram bot?

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.

02 How do I find a channel's chat_id?

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.

03 Is chat_id required for every Telegram post?

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.

04 Can I send multiple media items in one Telegram post?

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.

05 What permissions does the bot need on the channel?

Administrator with Post Messages enabled. For Postproxy to delete failed posts cleanly, also grant Edit Messages and Delete Messages.

06 Does Postproxy support Telegram direct 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.

Ready to get started?

Start with our free plan and scale as your needs grow. No credit card required.