Post to Telegram
post_to_telegramPublish text, photos, videos, or mixed albums to a Telegram channel, group, or chat as the brand's bot; pass the required chatId because the destination is never guessed.
Instructions
Publish to a Telegram channel, group or chat as the brand's own bot. WHICH CHAT IS ALWAYS REQUIRED AND IS NEVER GUESSED: pass chatId as the public channel's @username (e.g. @hermosoai) or its numeric id (a group is negative; a supergroup or channel starts with -100). There is no default and there cannot be one — the Telegram Bot API publishes no method that lists the chats a bot belongs to, so Hermoso genuinely cannot know them. list_telegram_chats reports the chats that have MESSAGED the bot in the last 24 hours, which is a shortcut for finding an id and is NOT a roster: a chat missing from it can still be posted to. TEXT: up to 4096 characters on a text-only message, but only 1024 the moment ANY photo or video is attached — a caption is not a message, and Hermoso refuses the over-long one before spending the round trip and says which budget applied. MEDIA: one image (imageUrl), one video (videoUrl), or an ALBUM of 2–10 (imageUrls, in order) in which photos and videos may be MIXED — pass a videoUrl alongside imageUrls and it joins the album as one more item. Hermoso uploads the bytes rather than handing Telegram a link, which is what buys the larger ceilings: 10MB per photo and 50MB per video, where a link would be 5MB and 20MB. THE BOT MUST BE IN THE CHAT — an administrator with Post Messages for a channel, an unrestricted member for a group; if it is not, Telegram refuses and the error says to add it rather than to reconnect. Returns the message id and, for a PUBLIC chat, its t.me link — a private group has no public web link, so url comes back null rather than as a link that would 404 for whoever you hand it to. 0 credits. Connect at Settings > Connectors > Telegram, or here with connect_connector, by pasting a bot token from @BotFather.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| hook | No | the post's angle — a list_hooks id or your own wording, reused exactly | |
| text | No | the message. ≤4096 characters on its own; ≤1024 once any image or video is attached. | |
| brand | No | WHICH PROFILE this post belongs to — id or exact name from list_brands (a shared workspace: its profile id). Beats the connection's pin for THIS CALL ONLY; a name that matches no profile, or two, is REFUSED and nothing is posted. | |
| chatId | Yes | REQUIRED — the destination: a public channel's @username, or the numeric chat id. Never guessed; ask the user, or use list_telegram_chats. | |
| ideaId | No | short id of the content-plan idea this post came from | |
| recipe | No | the post's FORMAT id, e.g. "slideshow" or "imessage_chat" — post_performance groups by it, so reuse one id per format | |
| silent | No | deliver without a notification sound (Telegram’s disable_notification). This is NOT a visibility setting — the message is just as visible. | |
| account | No | WHICH connected account of this channel to post as — its @handle or id from list_connector_accounts. Needed only when the profile has more than one telegram account connected (several and none named is refused by name, never guessed); omit when there is one. | |
| subject | No | what the post is about | |
| imageUrl | No | one image (≤10MB after upload) | |
| videoUrl | No | one video (≤50MB). Passed alongside imageUrls it joins the album as one more item. | |
| coverAtMs | No | THE VIDEO COVER in the chat, as ONE frame: milliseconds from the start (7000 = the frame at 7s). Sent as Telegram’s cover image; beats platformCover. | |
| imageUrls | No | an ALBUM of 2–10 media, in order. Photos and videos may be mixed — Telegram allows it. | |
| platformCover | No | VIDEO COVER. Omit it (the default) and Hermoso sets the video’s best frame — the same frame as its Library thumbnail — as the cover (Telegram’s in-chat video cover). true = send no cover and let the platform pick (usually the first frame). A cover you pass yourself always wins. | |
| allowDuplicate | No | post it even though an identical post was just made | |
| disablePreview | No | suppress the link-preview card on a text-only post. Default is Telegram’s own behaviour (previews on). | |
| idempotencyKey | No | any stable string: a repeat within 24h returns the original post instead of posting again |