Telegram Bot API Changes, May to August 2026: Four Releases
Telegram Bot API Changes, May to August 2026: Four Releases
Four Bot API releases shipped between May and August 2026 — 10.0 through 10.3. One of them changes parameters your existing code may be passing.
| Version | Date | Headline |
|---|---|---|
| 10.0 | 8 May 2026 | Guest Mode, chat management, poll media |
| 10.1 | 11 June 2026 | Rich Messages — text classes |
| 10.2 | 14 July 2026 | Rich Messages — input classes; ephemeral messages |
| 10.3 | 24 August 2026 | Rich Messages — buttons; compact tables; ephemeral message parameters |
Three more releases shipped earlier in 2026 and are outside this page: 9.4 (9 February), 9.5 (1 March) and 9.6 (3 April). 9.6 matters if you send quizzes — it "Replaced the parameter correct_option_id with the parameter correct_option_ids in the method sendPoll", and made the same replacement on the Poll class.
The change to check first
Bot API 10.3 replaced the parameters receiver_user_id and callback_query_id with a single ephemeral_message_parameters across thirteen methods:
sendMessage, sendAnimation, sendAudio, sendDocument, sendLivePhoto, sendPhoto, sendSticker, sendVideo, sendVideoNote, sendVoice, sendContact, sendLocation, sendVenue.
If your code passes either of those, that is the thing to look at. It is not the only 2026 change that breaks things: Bot API 9.6 (3 April 2026) replaced correct_option_id with correct_option_ids on both the Poll class and the sendPoll method, and Bot API 10.2 hardened Mini Apps by "disallowing the usage of Mini App methods from origins different from the original Mini App domain" — automatically enabled for all Mini Apps on 20 July 2026, with an opt-out through the @BotFather Mini App.
Bot API 10.0 — Guest Mode
The most conceptually significant change of the year: bots can now receive certain messages and issue replies within chats they are not a member of.
The supporting surface:
supports_guest_queriesonUserguest_bot_caller_userandguest_bot_caller_chatonMessageguest_query_idonMessageguest_messageonUpdateSentGuestMessageclass and theanswerGuestQuerymethod
That is a real shift, but not the first one. Inline mode has let users summon a bot into a chat it is not a member of since January 2016, and guest mode reuses that machinery — answerGuestQuery takes a required result of type InlineQueryResult, "A JSON-serialized object describing the message to be sent". What is new is that the bot receives a full Message via Update.guest_message — "New guest message. The bot can use the field Message.guest_query_id and the method answerGuestQuery to send a message in response." — rather than only an inline query string.
If you build tools people want to summon into conversations — a converter, a lookup, a utility — guest mode gives that pattern a richer API surface than the inline mode that has always supported it.
10.0 also added, under chat management:
can_react_to_messagesonChatMemberRestrictedandChatPermissions— reactions are now a separately restrictable permission, useful for new-member restrictionsdeleteMessageReactionanddeleteAllMessageReactions— moderation tools for reaction abusereturn_botsongetChatAdministrators- The ability to see certain messages sent by other bots in groups
And for polls: InputMediaSticker, InputMediaLocation, InputMediaVenue, plus PollMedia — polls can now carry media in options and explanations.
10.1 through 10.3 — Rich Messages
Three consecutive releases built out one feature, which tells you how central Telegram considers it.
10.1 introduced the rich text classes: RichTextBold, RichTextItalic, RichTextUnderline, RichTextStrikethrough, RichTextSpoiler, RichTextDateTime, RichTextTextMention and others.
10.2 added the input side — InputRichMessageMedia, InputMediaVoiceNote, the media and blocks fields on InputRichMessage (the class itself arrived in 10.1), and the InputRichBlock* types for paragraphs, list items, section headings and nineteen more.
10.3 completed it with RichMessageButton, RichTextButton, RichBlockButtons and InputRichBlockButtons, an is_compact field on the existing RichBlockTable and InputRichBlockTable (the output-side RichBlockTable arrived in 10.1, the input side in 10.2), RichBlockExpandableBlockQuotation, and RichBlockDocument — plus tg://document?id= links for file uploads inside rich messages.
The practical upshot: structured documents inside a chat message. Headings, lists, tables, quotations, embedded buttons. If you have been formatting with Markdown and hoping, this is the supported path — and tables in particular are worth a look for anything reporting-shaped.
Ephemeral messages
Ephemeral messages arrived in 10.2 — "allowing bots to send group messages and receive commands that are visible only to a specific user and the bot", along with is_ephemeral, receiver_user, ephemeral_message_id, the four editEphemeralMessage* methods and deleteEphemeralMessage. 10.3 consolidated their parameters, which is where the breaking change above comes from.
EphemeralMessageParameters consolidates ephemeral message handling. Notably it includes replace_callback_query_message, "which allows bots to show an ephemeral message in place of the original message" — useful for confirmations and transient UI that should not clutter a chat permanently.
Supporting edits: editEphemeralMessageMedia now supports uploading new files, editEphemeralMessageCaption gained show_caption_above_media, and editEphemeralMessageText gained a rich_message parameter.
Smaller changes worth knowing
can_send_welcome_messages — a new administrator right, added to ChatAdministratorRights, ChatMemberAdministrator and promoteChatMember. It covers Telegram's native chat welcome messages — "True, if the administrator can manage chat welcome messages or directly send them in the case of bots". It is new, not a new requirement: a bot that posts its own greeting with sendMessage on a join event is unaffected.
DisabledButton and disabled on InlineKeyboardButton — you can now show a button in a disabled state instead of removing it. Better UX for "already claimed" or "not yet available" than silently dropping the button.
force_reply on InlineKeyboardMarkup and ReplyKeyboardMarkup.
sendMessageDraft / sendRichMessageDraft gained can_stop and keep_on_stop, and there are now updates for a user stopping message generation. That is streaming-response machinery — relevant if your bot generates long replies.
What to do
- Search for
receiver_user_idandcallback_query_idin your send calls. That is the breaking parameter change in the 10.x releases. can_send_welcome_messagesis new, not a new requirement. It is an administrator right over Telegram's native welcome messages. If your bot sends its own greeting withsendMessage, nothing changes and no new grant is needed.- Look at
can_react_to_messagesif you restrict new members. Reactions are now separately controllable. - Consider Rich Messages for anything you currently fake with Markdown, especially tables.
- Consider Guest Mode if your bot is a utility people would want to summon into other chats.
Within 10.0–10.3 that is the only parameter replacement, but it is not the only thing that breaks: 10.2's Mini App origin restriction auto-enabled on 20 July 2026, so check any Mini App that calls Mini App methods from a second domain. If you are also coming from before 9.6, check correct_option_id on your quiz code.
Every version, date and class name above verified directly against Telegram's Bot API changelog and Bot API documentation, September 2026. Follow @BotNews for releases.