Send Poll
telegram.send_poll
ActionChat & messagingconnection required
Calls the Telegram API with the connection's credentials.
Send a native poll or quiz to a Telegram group, channel or chat.
Connection
- Required
- Yes — the node will not save without one
- Auth type
- API key
- Providers
- Telegram
- Secret shape
- the bot token, or {"token": "…"}
- Resolved by
- config.connection_id, else node.connection_id
Configuration
16 fields, 3 required. A dotted path is a nested object and name[] an array of objects — the editor renders the same tree.
| Field | Type | Required | Default | Constraints | Example |
|---|---|---|---|---|---|
chat_id The chat to send to: a numeric chat/user id, or an @channelusername. | string | Yes | — | — | — |
question The poll question, 1-300 characters. | string | Yes | — | ≤ 300 characters | — |
options Answer options: 2-12 strings, or Telegram InputPollOption objects. | array | Yes | — | 2–12 characters; array of string | ["Yes","No"] |
type 'regular' for a normal poll or 'quiz' for one with a correct answer. | string | No | — | one of "regular", "quiz" | — |
is_anonymous Hide who voted for what; Telegram defaults this to true. | boolean | No | — | — | — |
allows_multiple_answers Let a voter pick more than one option; not allowed for quizzes. | boolean | No | — | — | — |
correct_option_ids Zero-based indexes of the correct options; required in quiz mode. | array | No | — | array of number | — |
explanation Shown when a quiz voter picks a wrong answer, 0-200 characters. | string | No | — | ≤ 200 characters | — |
explanation_parse_mode How to format the text: 'MarkdownV2', 'HTML', or blank for plain text. MarkdownV2 needs every literal _ * [ ] ( ) ~ ` > # + - = | { } . ! escaped with a backslash or Telegram rejects the whole message, so prefer HTML for text interpolated from an expression. | string | No | — | one of "", "MarkdownV2", "HTML" | — |
open_period Seconds the poll stays open after it is sent, 5-2628000. | integer | No | — | 5–2628000 | — |
is_closed Send the poll already closed, which is only useful for a preview. | boolean | No | — | — | — |
disable_notification Deliver silently — the recipient sees the message but their device stays quiet. | boolean | No | — | — | — |
protect_content Stop recipients forwarding or saving the message. | boolean | No | — | — | — |
reply_to_message_id Id of a message in the same chat to reply to; sent as reply_parameters.message_id. | integer | No | — | ≥ 1 | — |
message_thread_id Topic id inside a forum supergroup; leave blank for the main thread. | integer | No | — | ≥ 1 | — |
reply_markup Keyboard or markup for the message, as the JSON object Telegram documents (inline_keyboard, keyboard, remove_keyboard or force_reply). A JSON string is accepted too and parsed for you. | object | No | — | — | — |
Example configuration
Every value below is the contract’s own example or default — nothing invented.
{
"options": [
"Yes",
"No"
]
}Output
One shape.
result
| Field | Type | Example |
|---|---|---|
ok True when Telegram accepted the call. | boolean | true |
message_id Id of the message Telegram created. | number | — |
chat_id Id of the chat the message landed in. | string | — |
date Unix time Telegram recorded for the message. | number | — |
message The full Telegram Message object, as returned. | object | — |
{
"chat_id": "",
"date": 0,
"message": {},
"message_id": 0,
"ok": true
}Notes
- chat_id is a numeric chat/user id or an @channelusername. A bot can only message a user who started it, or a group/channel it has been added to.
- The bot token sits in the request URL, so it is redacted out of every error message and dry-run report these nodes produce.
- Telegram answers HTTP 200 even for failures; the node reads the {'ok': …} envelope and raises on ok:false with Telegram's own description.
- Since Bot API 7.3 each option is an object; this node accepts plain strings and converts them for you.
See Send Poll run in a workflow.
In a technical demo we add the Telegram connection, drop the node on the canvas and let Workflow Health pre-flight it before the first real run.