Telegram

output.telegram Output v0.2.0

Works with the Telegram Bot API: send/edit/delete/pin messages, chat actions, media uploads (photo, document, audio, video, animation, sticker — from a URL/file_id or binary input), locations and media groups, chat management, callback/inline-query answers, and binary-safe file downloads. Leave the text blank on sendMessage to send the input payload as pretty-printed JSON.

Ports

DirectionPortLabel
InputinputPayload
OutputoutputResult

Properties

PropertyTypeDefaultDescription
Credential
credentialId
credential "" Use a stored credential for this connection — its fields are filled in at run start. Pick "None" to enter the connection details manually.
accepts credential templates: telegram-bot
Bot token
token
string "" Telegram bot token — use ${credential.telegram-bot.botToken}. Empty is allowed here; it must resolve by run time.
Operation
operation
select "sendMessage" The Bot API method to call: messages (send/edit/delete/pin/unpin/chat action), media sends, location, media groups, chat management, callback/inline-query answers, or a binary-safe file download.
sendMessageeditMessageTextdeleteMessagepinChatMessageunpinChatMessagesendChatActionsendPhotosendDocumentsendAudiosendVideosendAnimationsendStickersendLocationsendMediaGroupgetChatgetChatAdministratorsgetChatMembersetChatTitlesetChatDescriptionleaveChatanswerCallbackQueryanswerInlineQuerygetFile
Chat ID
chatId
string "" Target chat/channel ID (or @channelusername).
Shown when TG_CHAT_OPS.includes(tgOp(c))
Text
text
string "" Message text. On sendMessage, leave blank to send the input payload as pretty-printed JSON. On answerCallbackQuery, the (optional) toast/alert text.
Shown when ["sendMessage", "editMessageText", "answerCallbackQuery"].includes(tgOp(c))
Parse mode
parseMode
select "none" How Telegram renders the text or caption: plain, MarkdownV2, or HTML.
noneMarkdownV2HTML
Shown when ["sendMessage", "editMessageText", ...TG_CAPTION_OPS].includes(tgOp(c))
Reply markup
replyMarkup
json null Keyboard JSON: { "inline_keyboard": [[{ "text": "OK", "callback_data": "ok" }]] }, a reply keyboard, remove, or force-reply object. Leave null for none.
Shown when ["sendMessage", "editMessageText", ...TG_MEDIA_OPS].includes(tgOp(c))
Reply to message ID
replyToMessageId
string "" Send as a reply to this message ID. Leave blank for a normal message.
Shown when ["sendMessage", ...TG_MEDIA_OPS].includes(tgOp(c))
Disable link previews
disableWebPagePreview
boolean false Suppress the link preview for URLs in the message.
Shown when tgOp(c) === "sendMessage"
Silent
disableNotification
boolean false Send (or pin) without a notification sound.
Shown when ["sendMessage", ...TG_MEDIA_OPS, "sendLocation", "sendMediaGroup", "pinChatMessage"].includes(tgOp(c))
Message ID
messageId
string "" The message to edit/delete/pin/unpin (unpin: blank = the most recent pinned message).
Shown when ["editMessageText", "deleteMessage", "pinChatMessage", "unpinChatMessage"].includes(tgOp(c))
Action
action
select "typing" The chat action to broadcast (typing, upload_photo, …) — shows for ~5 seconds or until the next message.
typingupload_photorecord_videoupload_videorecord_voiceupload_voiceupload_documentchoose_stickerfind_locationrecord_video_noteupload_video_note
Shown when tgOp(c) === "sendChatAction"
Media (URL or file_id)
media
string "" An HTTP(S) URL Telegram fetches, or a file_id already on Telegram's servers. Leave blank when uploading from the binary field below.
Shown when TG_MEDIA_OPS.includes(tgOp(c))
Binary field
binaryField
string "" Dot-path to binary input to UPLOAD (a binary blob, base64 envelope, or { name, contentType, data } object) — uploaded as real multipart bytes. Takes precedence over the URL/file_id.
Shown when TG_MEDIA_OPS.includes(tgOp(c))
File name
fileName
string "" Override the upload's filename. Blank = the binary carrier's own name.
Shown when TG_MEDIA_OPS.includes(tgOp(c))
Caption
caption
string "" Caption for the media (rendered per the parse mode). Stickers don't support captions.
Shown when TG_CAPTION_OPS.includes(tgOp(c))
Latitude
latitude
string "" Latitude of the location.
Shown when tgOp(c) === "sendLocation"
Longitude
longitude
string "" Longitude of the location.
Shown when tgOp(c) === "sendLocation"
Media items
mediaGroup
json [] JSON array of InputMedia descriptors, e.g. [{ "type": "photo", "media": "https://…", "caption": "One" }]. An item's media may also be a binary carrier — it is uploaded via attach://.
Shown when tgOp(c) === "sendMediaGroup"
Title
title
string "" The new chat title.
Shown when tgOp(c) === "setChatTitle"
Description
description
string "" The new chat description (blank clears it).
Shown when tgOp(c) === "setChatDescription"
User ID
userId
string "" The user to look up in the chat.
Shown when tgOp(c) === "getChatMember"
Callback query ID
callbackQueryId
string "" The callback_query.id from the inline-keyboard update being answered.
Shown when tgOp(c) === "answerCallbackQuery"
Show alert
showAlert
boolean false Show the text as a modal alert instead of a toast.
Shown when tgOp(c) === "answerCallbackQuery"
Inline query ID
inlineQueryId
string "" The inline_query.id from the update being answered.
Shown when tgOp(c) === "answerInlineQuery"
Results
results
json [] JSON array of InputQueryResult descriptors, e.g. [{ "type": "article", "id": "1", "title": "Hi", "input_message_content": { "message_text": "Hi" } }].
Shown when tgOp(c) === "answerInlineQuery"
File ID
fileId
string "" The file_id to download (from a message's photo/document/… entry). The bytes come back binary-safe: text stays text, small binary inline base64, large binary as a blob.
Shown when tgOp(c) === "getFile"
Base URL
baseUrl
string "https://api.telegram.org" Telegram API base URL (override for testing).
Timeout (ms)
timeoutMs
int 15000 Abort the request after this many milliseconds.

Examples

Echo a message back, timestamped

The send half of the shipped Telegram Echo demo — {{ }} expressions straight in the text field, credential fields as vault references:

{
  "id": "tg-out",
  "type": "output.telegram",
  "config": {
    "credentialId": "cred_…",
    "token": "${credential.telegram-bot.botToken}",
    "chatId": "${credential.telegram-bot.chatId}",
    "operation": "sendMessage",
    "text": "⏰ {{ $json.receivedAt }} — You said: {{ $json.message.text }}",
    "parseMode": "none"
  }
}

Reply to whoever messaged the bot

Pair with the Telegram Trigger and take the chat id from the update itself:

{ "chatId": "{{ $json.message.chat.id }}", "operation": "sendMessage", "text": "Got it, {{ $json.message.from.first_name }}!" }

Tips

  • Blank text = JSON dump. Leave text empty on sendMessage and the node sends the input payload pretty-printed — a zero-config debug notifier.
  • Media from upstream binaries. sendPhoto/sendDocument/… accept a URL, a Telegram file_id, or binary data flowing in from a previous node (set binaryField).
  • parseMode gotchas are Telegram’s. MarkdownV2 requires escaping characters like . and -; with plain interpolated user text, none is the safe default.
  • Downloads are binary-safe. The getFile download operation emits a real binary item that S3/Write File/Gmail consume as-is.

This page is generated from the node registry by gen-node-docs.mjs on every site build — ports, properties, defaults and visibility rules cannot drift from the code. The examples above are hand-authored and merged in.