The Telegram scheduling API
Create a Telegram post with one HTTP call. It joins the same queue the dashboard uses, retries on failure, and reports back what actually went out.
Publish to Telegram
# POST a text-and-media post to your connected Telegram channel
curl -X POST https://api.postwharf.com/v1/posts \
-H "Authorization: Bearer $POSTWHARF_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Shipping today.",
"channels": ["ch_your_telegram_channel"],
"media": ["med_optional"]
}'
Schedule it instead
curl -X POST https://api.postwharf.com/v1/posts \
-H "Authorization: Bearer $POSTWHARF_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Tuesday drop","channels":["ch_your_telegram_channel"],"publish_at":"2026-09-01T09:00:00Z"}'
Find your Telegram channel id
curl https://api.postwharf.com/v1/channels \ -H "Authorization: Bearer $POSTWHARF_KEY"
Each connected account is a channel. The one you want has "platform": "telegram".
Check what happened
curl https://api.postwharf.com/v1/posts/post_xxx \ -H "Authorization: Bearer $POSTWHARF_KEY"
The response carries one delivery per channel with its status, the live URL once published, and the error text if it failed. Deliveries are re-checked after publishing, so a Telegram post removed later stops reporting as live.
What Telegram accepts
4,096 characters, counting one message. Up to 10 images or 10 videos per post — and the two can travel together.
Read from the table the API enforces, so a post over 4,096 is refused when you create it rather than truncated on the way to Telegram.
Worth knowing about Telegram
Posts to channels you administer via a bot token you control.
Every other network
Instagram · TikTok · X · LinkedIn · YouTube · Facebook · Threads · Pinterest · Bluesky · Reddit · Discord · Snapchat · WordPress