| Mastodon | Telegram | |
|---|---|---|
| Characters | 500 | 4,000 |
| Media | optional | optional |
| Hashtags | 2-4 hashtags in CamelCase (#SocialMedia, not #socialmedia) for screen readers | not needed |
| Links in body | fine | fine |
| Needs platform approval | no | no |
Mastodon caps at 500 characters, Telegram allows 4,000. Posting the short version verbatim wastes the room Telegram gives you to actually explain the thing.
Mastodon: 2-4 hashtags in CamelCase (#SocialMedia, not #socialmedia) for screen readers. Telegram: not needed. Carrying the tag block across is the single most obvious sign of an automated cross-post.
Mastodon is community-first; alt text on media is expected, not optional. Telegram is direct and clear; formatting is light. Those are different jobs, so the same words cannot do both well — and every algorithm here demotes text that obviously was not written for it. The fix is not to skip cross-posting; it is to send a native version to each network.
curl -X POST https://postwire.io/api/post \
-H "Authorization: Bearer $POSTWIRE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"platforms": ["mastodon", "telegram"],
"text": "Your post",
"per_platform": {
"mastodon": { "text": "The Mastodon version" },
"telegram": { "text": "The Telegram version" }
}
}'
PostWire's /api/generate writes those per-platform versions for you from a single prompt, respecting
every limit in the table above. From an AI agent it is one MCP tool call.
Other pairs: Telegram to Mastodon · all combinations · which APIs need approval