Telegram and Bluesky added to Postproxy
Postproxy now publishes to Telegram channels via your own bot and to Bluesky via app password — both behind the same posts API as the other eight platforms.
Postproxy now supports Telegram and Bluesky alongside the existing platforms. Telegram is a bring-your-own-bot integration — you create a bot via @BotFather and Postproxy publishes to any channel where it is administrator. Bluesky uses an app password instead of OAuth. Both share the same POST /api/posts endpoint as Instagram, X, LinkedIn, Facebook, TikTok, YouTube, Threads, and Pinterest.
What changed
Two new platforms are live behind the Postproxy API:
- Telegram — publish to any Telegram channel (public or private) through a bot you control.
- Bluesky — publish to the AT Protocol network using a Bluesky handle and app password.
Both are reachable through the same profiles array on POST /api/posts. No new endpoint, no separate SDK, no extra abstraction. The Initialize Connection flow now accepts "platform": "telegram" and "platform": "bluesky".
Why Telegram
Telegram channels are a primary distribution surface for product changelogs, dev communities, news outlets, trading and crypto groups, and indie creators. Until now, adding it meant maintaining a separate Bot API integration in-house — webhook setup, chat_id lookups, parse-mode quirks, media groups for albums.
Postproxy now handles all of that. One post call routes to every channel where your bot is administrator. The same idempotency, scheduling, retry, and status-tracking guarantees apply.
Why Bluesky
Bluesky has grown into a meaningful publishing target for technical audiences, journalists, and brands hedging against single-network risk. It is a natural sibling to X and Threads in most cross-posting setups.
Adding it directly meant implementing the AT Protocol auth flow, blob upload, and rich-text facet detection (mentions, links, tags). Postproxy now does it under the same profiles: ["bluesky"] flag.
How does Telegram authentication work?
Telegram has no consumer OAuth for posting. Each Postproxy Telegram profile represents one bot you create via @BotFather. You submit the bot token once; Postproxy validates it, registers a webhook with Telegram, and starts tracking channels where the bot is added as administrator.
curl -X POST "https://api.postproxy.dev/api/profile_groups/grp_abc123/initialize_connection" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "platform": "telegram", "bot_token": "123456789:ABCdef-GhIJklMnOpQrStUvWxYz" }'A single Telegram profile can publish to many channels. Each channel surfaces as a placement, listed via GET /api/profiles/:id/placements, and the destination is selected per post through the chat_id parameter.
Full walkthrough: Connect Telegram with your own bot.
How does Bluesky authentication work?
Bluesky does not expose OAuth in the conventional sense. Initialize Connection authenticates synchronously with a handle and an app password (generated at bsky.app/settings/app-passwords) and returns the profile in one call — no redirect.
curl -X POST "https://api.postproxy.dev/api/profile_groups/grp_abc123/initialize_connection" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "platform": "bluesky", "identifier": "yourname.bsky.social", "app_password": "xxxx-xxxx-xxxx-xxxx" }'The .bsky.social suffix is optional. Custom PDS domains (e.g. you.example.com) are accepted as-is. Accounts protected by 2FA must use an app password — the main account password is rejected.
Publishing to both
The posts API is unchanged. Add telegram or bluesky to the profiles array:
curl -X POST "https://api.postproxy.dev/api/posts" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "post": { "body": "We just shipped Telegram and Bluesky support. Same API, two new networks." }, "profiles": ["twitter", "linkedin", "bluesky", "telegram"], "media": ["https://example.com/launch.png"], "platforms": { "telegram": { "chat_id": "-1001234567890", "parse_mode": "HTML", "disable_link_preview": true } } }'chat_id is the only required platform parameter on Telegram — every post must name an explicit destination channel. Bluesky takes no required parameters.
Platform-specific limits
Both networks come with their own constraints, validated by Postproxy before publishing:
| Constraint | Telegram | Bluesky |
|---|---|---|
| Auth model | Bring-your-own bot (BotFather token) | App password (handle + password) |
| Character limit | 4,096 | 300 graphemes |
| Image max size | 10 MB | 1 MB |
| Image formats | jpg, png, webp, gif | jpg, png, webp, gif |
| Max images per post | 10 | 4 |
| Video max size | 50 MB | 50 MB |
| Video duration | — | 1s – 60s |
| Mix images and video | Yes (media group) | No |
| Threads / replies | — | Yes — sequential replies supported |
| Formatting | HTML, MarkdownV2, plain | Plain text (rich facets auto-detected) |
See the full reference: Bluesky parameters · Telegram parameters.
Where these fit in a publishing pipeline
For teams already cross-posting through Postproxy, Telegram and Bluesky drop into the existing pattern:
- Cross-posting. Add them to the same profiles array used for X, LinkedIn, Threads, and the rest. Different bodies per platform are supported via
platforms.<network>.bodyoverrides. - Scheduling. Both work with scheduled posts and posting queues. Telegram has no rate-limit quirks once your bot is admin; Bluesky’s PDS limits apply per-handle.
- Drafts and approvals. Same draft and approval flow as every other network.
- Status and retries. Identical post status lifecycle and retry policy. Telegram failures (bot kicked, channel deleted) surface as
failedwith structured errors.
Getting started
If you already have a Postproxy account:
- Generate a bot via @BotFather and copy the token. Call Initialize Connection with
platform: "telegram", then add the bot as administrator to your channels. - Generate a Bluesky app password. Call Initialize Connection with
platform: "bluesky", your handle, and the app password.
Both flows are also available in the Postproxy dashboard under Profiles → Connect account.
For everyone else: there is no separate signup, no separate billing tier, no waitlist. Telegram and Bluesky are part of the same flat platform list. The unified posts API now covers ten networks.
Postproxy
One API for every social platform
Publish to Instagram, X, LinkedIn, TikTok, YouTube and more with a single request. Free plan, no credit card required.