<divid="dev_page_content"><h3><aclass="anchor"href="#accepting-the-terms-of-service"id="accepting-the-terms-of-service"name="accepting-the-terms-of-service"><iclass="anchor-icon"></i></a>Accepting the <ahref="https://telegram.org/tos">Terms of Service</a></h3>
<h3><aclass="anchor"href="#dealing-with-spam-and-tos-violations"id="dealing-with-spam-and-tos-violations"name="dealing-with-spam-and-tos-violations"><iclass="anchor-icon"></i></a>Dealing with spam and ToS violations</h3>
<h3><aclass="anchor"href="#login-via-qr-code"id="login-via-qr-code"name="login-via-qr-code"><iclass="anchor-icon"></i></a>Login via <ahref="/api/qr-login">QR code</a></h3>
<td>Generate a login token, for <ahref="/api/qr-login">login via QR code</a>. <br>The generated login token should be encoded using base64url, then shown as a <code>tg://login?token=base64encodedtoken</code><ahref="/api/links#qr-code-login-links">deep link »</a> in the QR code.<br><br>For more info, see <ahref="/api/qr-login">login via QR code</a>.</td>
<td>Accept QR code login token, logging in the app that generated it.<br><br>Returns info about the new session.<br><br>For more info, see <ahref="/api/qr-login">login via QR code</a>.</td>
<td>Login using a redirected login token, generated in case of DC mismatch during <ahref="/api/qr-login">QR code login</a>.<br><br>For more info, see <ahref="/api/qr-login">login via QR code</a>.</td>
<td>Invoke a request without subscribing the used connection for <ahref="/api/updates">updates</a> (this is enabled by default for <ahref="/api/files">file queries</a>).</td>
<td>Binds a temporary authorization key <code>temp_auth_key_id</code> to the permanent authorization key <code>perm_auth_key_id</code>. Each permanent key may only be bound to one temporary key at a time, binding a new temporary key overwrites the previous one.<br><br>For more information, see <ahref="/api/pfs">Perfect Forward Secrecy</a>.</td>
<td>Initiate a 2FA password reset: can only be used if the user is already logged-in, <ahref="/api/srp#password-reset">see here for more info »</a></td>
<td>Check if the <ahref="/api/srp">2FA recovery code</a> sent using <ahref="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a> is valid, before passing it to <ahref="/method/auth.recoverPassword">auth.recoverPassword</a>.</td>
<td>Reset the <ahref="/api/srp">2FA password</a> using the recovery code sent using <ahref="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a>.</td>
<td>Request recovery code of a <ahref="/api/srp">2FA password</a>, only for accounts with a <ahref="/api/srp#email-verification">recovery email configured</a>.</td>
<td>Resend the login code via another medium, the phone code type is determined by the return value of the previous auth.sendCode/auth.resendCode: see <ahref="/api/auth">login</a> for more info.</td>
<td>Terminates all user's authorized sessions except for the current one.<br><br>After calling this method it is necessary to reregister the current device using the method <ahref="/method/account.registerDevice">account.registerDevice</a></td>
<h3><aclass="anchor"href="#working-with-public-service-announcement-and-mtproxy-channels"id="working-with-public-service-announcement-and-mtproxy-channels"name="working-with-public-service-announcement-and-mtproxy-channels"><iclass="anchor-icon"></i></a>Working with Public Service Announcement and MTProxy channels</h3>
<h3><aclass="anchor"href="#working-with-tsf-internal-use-only"id="working-with-tsf-internal-use-only"name="working-with-tsf-internal-use-only"><iclass="anchor-icon"></i></a>Working with TSF (internal use only)</h3>
<h3><aclass="anchor"href="#working-with-telegram-premium"id="working-with-telegram-premium"name="working-with-telegram-premium"><iclass="anchor-icon"></i></a>Working with Telegram Premium</h3>
<td>Informs server about a purchase made through the Play Store: for official applications only.</td>
</tr>
</tbody>
</table>
<h3><aclass="anchor"href="#working-with-2fa-login"id="working-with-2fa-login"name="working-with-2fa-login"><iclass="anchor-icon"></i></a>Working with <ahref="/api/srp">2FA login</a></h3>
<h3><aclass="anchor"href="#working-with-seamless-telegram-login"id="working-with-seamless-telegram-login"name="working-with-seamless-telegram-login"><iclass="anchor-icon"></i></a>Working with <ahref="/api/url-authorization">Seamless Telegram Login</a></h3>
<h3><aclass="anchor"href="#working-with-voip-calls"id="working-with-voip-calls"name="working-with-voip-calls"><iclass="anchor-icon"></i></a>Working with <ahref="/api/end-to-end/voice-calls">VoIP calls</a></h3>
<td>Optional: notify the server that the user is currently busy in a call: this will automatically refuse all incoming phone calls until the current phone call is ended.</td>
<h3><aclass="anchor"href="#working-with-accent-colors-"id="working-with-accent-colors-"name="working-with-accent-colors-"><iclass="anchor-icon"></i></a>Working with <ahref="/api/colors">accent colors »</a></h3>
<td>Get a set of suggested <ahref="/api/custom-emoji">custom emoji stickers</a> that can be used in an <ahref="/api/colors">accent color pattern</a>.</td>
</tr>
</tbody>
</table>
<h3><aclass="anchor"href="#working-with-boosts-"id="working-with-boosts-"name="working-with-boosts-"><iclass="anchor-icon"></i></a>Working with <ahref="/api/boost">boosts »</a></h3>
<h3><aclass="anchor"href="#working-with-channel-recommendations-"id="working-with-channel-recommendations-"name="working-with-channel-recommendations-"><iclass="anchor-icon"></i></a>Working with <ahref="/api/recommend">channel recommendations »</a></h3>
<h3><aclass="anchor"href="#working-with-channels-supergroups-geogroups"id="working-with-channels-supergroups-geogroups"name="working-with-channels-supergroups-geogroups"><iclass="anchor-icon"></i></a>Working with <ahref="/api/channel">channels/supergroups/geogroups</a></h3>
<td>Get <ahref="/api/channel">channels/supergroups/geogroups</a> we're admin in. Usually called when the user exceeds the <ahref="/constructor/config">limit</a> for owned public <ahref="/api/channel">channels/supergroups/geogroups</a>, and the user is given the choice to remove one of his channels/supergroups/geogroups.</td>
<td>Get full info about a <ahref="/api/channel#supergroups">supergroup</a>, <ahref="/api/channel#gigagroups">gigagroup</a> or <ahref="/api/channel#channels">channel</a></td>
<td>Get all groups that can be used as <ahref="/api/discussion">discussion groups</a>.<br><br>Returned <ahref="/api/channel#basic-groups">basic group chats</a> must be first upgraded to <ahref="/api/channel#supergroups">supergroups</a> before they can be set as a discussion group. <br>To set a returned supergroup as a discussion group, access to its old messages must be enabled using <ahref="/method/channels.togglePreHistoryHidden">channels.togglePreHistoryHidden</a>, first.</td>
<td>Hide or display the participants list in a <ahref="/api/channel">supergroup</a>.<br><br>The supergroup must have at least <code>hidden_members_group_size_min</code> participants in order to use this method, as specified by the <ahref="/api/config#client-configuration">client configuration parameters »</a>.</td>
<h3><aclass="anchor"href="#working-with-chat-invites-and-join-requests"id="working-with-chat-invites-and-join-requests"name="working-with-chat-invites-and-join-requests"><iclass="anchor-icon"></i></a>Working with <ahref="/api/invites">chat invites and join requests</a></h3>
<td>Set whether all users <ahref="/api/discussion#requiring-users-to-join-the-group">should join a discussion group in order to comment on a post »</a></td>
<h3><aclass="anchor"href="#working-with-chats-supergroups-channels"id="working-with-chats-supergroups-channels"name="working-with-chats-supergroups-channels"><iclass="anchor-icon"></i></a>Working with <ahref="/api/channel">chats/supergroups/channels</a></h3>
<td>Get which users read a specific message: only available for groups and supergroups with less than <ahref="/api/config#chat-read-mark-size-threshold"><code>chat_read_mark_size_threshold</code> members</a>, read receipts will be stored for <ahref="/api/config#chat-read-mark-expire-period"><code>chat_read_mark_expire_period</code> seconds after the message was sent</a>, see <ahref="/api/config#client-configuration">client configuration for more info »</a>.</td>
<td>Convert a <ahref="/api/channel">supergroup</a> to a <ahref="/api/channel">gigagroup</a>, when requested by <ahref="/api/config#channel-suggestions">channel suggestions</a>.</td>
<h3><aclass="anchor"href="#working-with-cloud-themes"id="working-with-cloud-themes"name="working-with-cloud-themes"><iclass="anchor-icon"></i></a>Working with <ahref="/api/themes">cloud themes</a></h3>
<h3><aclass="anchor"href="#working-with-custom-animated-emojis"id="working-with-custom-animated-emojis"name="working-with-custom-animated-emojis"><iclass="anchor-icon"></i></a>Working with <ahref="/api/custom-emoji">custom animated emojis</a></h3>
<td>Fetch <ahref="/api/custom-emoji">custom emoji stickers »</a>.<br><br>Returns a list of <ahref="/constructor/document">documents</a> with the animated custom emoji in TGS format, and a <ahref="/constructor/documentAttributeCustomEmoji">documentAttributeCustomEmoji</a> attribute with the original emoji and info about the emoji stickerset this custom emoji belongs to.</td>
<td>Represents a list of <ahref="/api/custom-emoji#emoji-categories">emoji categories</a>, to be used when selecting <ahref="/api/custom-emoji">custom emojis</a>.</td>
<td>Represents a list of <ahref="/api/custom-emoji#emoji-categories">emoji categories</a>, to be used when selecting custom emojis to set as <ahref="/api">custom emoji status</a>.</td>
<td>Represents a list of <ahref="/api/custom-emoji#emoji-categories">emoji categories</a>, to be used when selecting custom emojis to set as <ahref="/api/files#sticker-profile-pictures">profile picture</a>.</td>
<td>Get a set of suggested <ahref="/api/custom-emoji">custom emoji stickers</a> that can be <ahref="/api/files#sticker-profile-pictures">used as profile picture</a></td>
<td>Get a set of suggested <ahref="/api/custom-emoji">custom emoji stickers</a> that can be <ahref="/api/files#sticker-profile-pictures">used as group picture</a></td>
<h3><aclass="anchor"href="#working-with-deep-links"id="working-with-deep-links"name="working-with-deep-links"><iclass="anchor-icon"></i></a>Working with <ahref="/api/links">deep links</a></h3>
<td>Get recently used <code>t.me</code> links.<br><br>When installing official applications from "Download Telegram" buttons present in <ahref="https://t.me">t.me</a> pages, a referral parameter is passed to applications after installation. <br>If, after downloading the application, the user creates a new account (instead of logging into an existing one), the referral parameter should be imported using this method, which returns the <ahref="https://t.me">t.me</a> pages the user recently opened, before installing Telegram.</td>
<h3><aclass="anchor"href="#working-with-emoji-keywords"id="working-with-emoji-keywords"name="working-with-emoji-keywords"><iclass="anchor-icon"></i></a>Working with <ahref="/api/custom-emoji#emoji-keywords">emoji keywords</a></h3>
<td>Obtain a list of related languages that must be used when fetching <ahref="/api/custom-emoji#emoji-keywords">emoji keyword lists »</a>.<br><br>Usually the method will return the passed language codes (if localized) + <code>en</code> + some language codes for similar languages (if applicable).</td>
<td>Returns an HTTP URL which can be used to automatically log in into translation platform and suggest new <ahref="/api/custom-emoji#emoji-keywords">emoji keywords »</a>. The URL will be valid for 30 seconds after generation.</td>
<h3><aclass="anchor"href="#working-with-emoji-statuses"id="working-with-emoji-statuses"name="working-with-emoji-statuses"><iclass="anchor-icon"></i></a>Working with <ahref="/api/emoji-status">emoji statuses</a></h3>
<td>Returns fetch the full list of <ahref="/api/custom-emoji">custom emoji IDs »</a> that cannot be used in <ahref="/api/emoji-status">channel emoji statuses »</a>.</td>
<h3><aclass="anchor"href="#working-with-files"id="working-with-files"name="working-with-files"><iclass="anchor-icon"></i></a>Working with <ahref="/api/files">files</a></h3>
<td>Returns content of a web file, by proxying the request through telegram, see the <ahref="/api/files#downloading-webfiles">webfile docs for more info</a>.<br><br><strong>Note</strong>: the query must be sent to the DC specified in the <code>webfile_dc_id</code><ahref="/api/config#mtproto-configuration">MTProto configuration field</a>.</td>
<h3><aclass="anchor"href="#working-with-forums"id="working-with-forums"name="working-with-forums"><iclass="anchor-icon"></i></a>Working with <ahref="/api/forum">forums</a></h3>
<td>Users may also choose to display messages from all topics of a <ahref="/api/forum">forum</a> as if they were sent to a normal group, using a "View as messages" setting in the local client: this setting only affects the current account, and is synced to other logged in sessions using this method.<br><br>Invoking this method will update the value of the <code>view_forum_as_messages</code> flag of <ahref="/constructor/channelFull">channelFull</a> or <ahref="/constructor/dialog">dialog</a> and emit an <ahref="/constructor/updateChannelViewForumAsMessages">updateChannelViewForumAsMessages</a>.</td>
<h3><aclass="anchor"href="#working-with-fragmentcom-usernames"id="working-with-fragmentcom-usernames"name="working-with-fragmentcom-usernames"><iclass="anchor-icon"></i></a>Working with <ahref="/api/fragment">fragment.com usernames</a></h3>
<td>Activate or deactivate a purchased <ahref="https://fragment.com">fragment.com</a> username associated to a <ahref="/api/channel">supergroup or channel</a> we own.</td>
<h3><aclass="anchor"href="#working-with-gift-codes"id="working-with-gift-codes"name="working-with-gift-codes"><iclass="anchor-icon"></i></a>Working with <ahref="/api/links#premium-giftcode-links">gift codes</a></h3>
<td>Apply a <ahref="/api/giveaways">Telegram Premium giftcode »</a></td>
</tr>
</tbody>
</table>
<h3><aclass="anchor"href="#working-with-giveaways-amp-gifts"id="working-with-giveaways-amp-gifts"name="working-with-giveaways-amp-gifts"><iclass="anchor-icon"></i></a>Working with <ahref="/api/giveaways">giveaways & gifts</a></h3>
<h3><aclass="anchor"href="#working-with-instant-view-pages"id="working-with-instant-view-pages"name="working-with-instant-view-pages"><iclass="anchor-icon"></i></a>Working with <ahref="https://instantview.telegram.org">instant view pages</a></h3>
<h3><aclass="anchor"href="#working-with-message-reactions"id="working-with-message-reactions"name="working-with-message-reactions"><iclass="anchor-icon"></i></a>Working with <ahref="/api/reactions">message reactions</a></h3>
<td>Change default emoji reaction to use in the quick reaction menu: the value is synced across devices and can be fetched using <ahref="/method/help.getConfig">help.getConfig, <code>reactions_default</code> field</a>.</td>
<td>React to message.<br><br>Starting from layer 159, the reaction will be sent from the peer specified using <ahref="/method/messages.saveDefaultSendAs">messages.saveDefaultSendAs</a>.</td>
<h3><aclass="anchor"href="#working-with-message-translation"id="working-with-message-translation"name="working-with-message-translation"><iclass="anchor-icon"></i></a>Working with <ahref="/api/translation">message translation</a></h3>
<td>Translate a given text.<br><br><ahref="/api/entities">Styled text entities</a> will only be preserved for <ahref="/api/premium">Telegram Premium</a> users.</td>
<td>Open a <ahref="/bots/webapps">bot mini app</a>, sending over user information after user confirmation.<br><br>After calling this method, until the user closes the webview, <ahref="/method/messages.prolongWebView">messages.prolongWebView</a> must be called every 60 seconds.</td>
<td>Indicate to the server (from the user side) that the user is still using a web app.<br><br>If the method returns a <code>QUERY_ID_INVALID</code> error, the webview must be closed.</td>
<td>Terminate webview interaction started with <ahref="/method/messages.requestWebView">messages.requestWebView</a>, sending the specified message to the chat on behalf of the user.</td>
<td>Open a <ahref="/bots/webapps">bot mini app</a> from a <ahref="/api/links#direct-mini-app-links">direct Mini App deep link</a>, sending over user information after user confirmation.<br><br>After calling this method, until the user closes the webview, <ahref="/method/messages.prolongWebView">messages.prolongWebView</a> must be called every 60 seconds.</td>
<td>Send a custom request from a <ahref="/api/bots/webapps">mini bot app</a>, triggered by a <ahref="/api/web-events#web-app-invoke-custom-method">web_app_invoke_custom_method event »</a>.<br><br>The response should be sent using a <ahref="/api/bots/webapps#custom-method-invoked">custom_method_invoked</a> event, <ahref="/api/web-events#web-app-invoke-custom-method">see here »</a> for more info on the flow.</td>
<h3><aclass="anchor"href="#working-with-secret-chats"id="working-with-secret-chats"name="working-with-secret-chats"><iclass="anchor-icon"></i></a>Working with <ahref="/api/end-to-end">secret chats</a></h3>
<td>Confirms receipt of messages in a secret chat by client, cancels push notifications. <br>The method returns a list of <strong>random_id</strong>s of messages for which push notifications were cancelled.</td>
<h3><aclass="anchor"href="#working-with-statistics"id="working-with-statistics"name="working-with-statistics"><iclass="anchor-icon"></i></a>Working with <ahref="/api/stats">statistics</a></h3>
<td>Obtains a list of messages, indicating to which other public channels was a channel message forwarded. <br>Will return a list of <ahref="/constructor/message">messages</a> with <code>peer_id</code> equal to the public channel to which this message was forwarded.</td>
<h3><aclass="anchor"href="#working-with-stickers-"id="working-with-stickers-"name="working-with-stickers-"><iclass="anchor-icon"></i></a>Working with <ahref="/api/stickers">stickers »</a></h3>
<h3><aclass="anchor"href="#working-with-stories"id="working-with-stories"name="working-with-stories"><iclass="anchor-icon"></i></a>Working with <ahref="/api/stories">stories</a></h3>
<td>Fetch the List of active (or active and hidden) stories, see <ahref="/api/stories#watching-stories">here »</a> for more info on watching stories.</td>
<td>Mark all stories up to a certain ID as read, for a given peer; will emit an <ahref="/constructor/updateReadStories">updateReadStories</a> update to all logged-in sessions.</td>
<td>Get the <ahref="/api/reactions">reaction</a> and interaction list of a <ahref="/api/stories">story</a> posted to a channel, along with the sender of each reaction.<br><br>Can only be used by channel admins.</td>
<td>Activates <ahref="/api/stories#stealth-mode">stories stealth mode</a>, see <ahref="/api/stories#stealth-mode">here »</a> for more info.<br><br>Will return an <ahref="/constructor/updateStoriesStealthMode">updateStoriesStealthMode</a>.</td>
<td>Obtain the latest read story ID for all peers when first logging in, returned as a list of <ahref="/constructor/updateReadStories">updateReadStories</a> updates, see <ahref="/api/stories#watching-stories">here »</a> for more info.</td>
<td>Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see <ahref="/api/stories#hiding-stories-of-other-users">here »</a> for more info.</td>
<h3><aclass="anchor"href="#working-with-telegram-passport"id="working-with-telegram-passport"name="working-with-telegram-passport"><iclass="anchor-icon"></i></a>Working with <ahref="/passport">telegram passport</a></h3>
<td>Delete stored <ahref="/passport">Telegram Passport</a> documents, <ahref="/passport/encryption#encryption">for more info see the passport docs »</a></td>
<td>Get all saved <ahref="/passport">Telegram Passport</a> documents, <ahref="/passport/encryption#encryption">for more info see the passport docs »</a></td>
<td>Get saved <ahref="/passport">Telegram Passport</a> document, <ahref="/passport/encryption#encryption">for more info see the passport docs »</a></td>
<td>Securely save <ahref="/passport">Telegram Passport</a> document, <ahref="/passport/encryption#encryption">for more info see the passport docs »</a></td>
<td>Notify the user that the sent <ahref="/passport">passport</a> data contains some errors The user will not be able to re-submit their Passport data to you until the errors are fixed (the contents of the field for which you returned the error must change).<br><br>Use this if the data submitted by the user doesn't satisfy the standards your service requires for any reason. For example, if a birthday date seems invalid, a submitted document is blurry, a scan shows evidence of tampering, etc. Supply some details in the error message to make sure the user knows how to correct the issues.</td>
<h3><aclass="anchor"href="#working-with-temporary-profile-links"id="working-with-temporary-profile-links"name="working-with-temporary-profile-links"><iclass="anchor-icon"></i></a>Working with <ahref="/api/links#temporary-profile-links">temporary profile links</a></h3>
<h3><aclass="anchor"href="#working-with-updates"id="working-with-updates"name="working-with-updates"><iclass="anchor-icon"></i></a>Working with <ahref="/api/updates">updates</a></h3>
<h3><aclass="anchor"href="#working-with-voice-message-transcription"id="working-with-voice-message-transcription"name="working-with-voice-message-transcription"><iclass="anchor-icon"></i></a>Working with <ahref="/api/transcribe">voice message transcription</a></h3>
<h3><aclass="anchor"href="#working-with-wallpapers-"id="working-with-wallpapers-"name="working-with-wallpapers-"><iclass="anchor-icon"></i></a>Working with <ahref="/api/wallpapers">wallpapers »</a></h3>
<h3><aclass="anchor"href="#working-with-bot-admin-right-suggestions"id="working-with-bot-admin-right-suggestions"name="working-with-bot-admin-right-suggestions"><iclass="anchor-icon"></i></a>Working with bot admin right suggestions</h3>
<td>Set the default <ahref="/api/rights#suggested-bot-rights">suggested admin rights</a> for bots being added as admins to channels, see <ahref="/api/rights#suggested-bot-rights">here for more info on how to handle them »</a>.</td>
<td>Set the default <ahref="/api/rights#suggested-bot-rights">suggested admin rights</a> for bots being added as admins to groups, see <ahref="/api/rights#suggested-bot-rights">here for more info on how to handle them »</a>.</td>
<h3><aclass="anchor"href="#working-with-bot-inline-queries-and-callback-buttons"id="working-with-bot-inline-queries-and-callback-buttons"name="working-with-bot-inline-queries-and-callback-buttons"><iclass="anchor-icon"></i></a>Working with bot inline queries and callback buttons</h3>
<h3><aclass="anchor"href="#working-with-bots-internal-bot-api-use"id="working-with-bots-internal-bot-api-use"name="working-with-bots-internal-bot-api-use"><iclass="anchor-icon"></i></a>Working with bots (internal bot API use)</h3>
<h3><aclass="anchor"href="#working-with-contacts-and-top-peers"id="working-with-contacts-and-top-peers"name="working-with-contacts-and-top-peers"><iclass="anchor-icon"></i></a>Working with contacts and <ahref="/api/top-rating">top peers</a></h3>
<td>Add an existing telegram user as contact.<br><br>Use <ahref="/method/contacts.importContacts">contacts.importContacts</a> to add contacts by phone number, without knowing their Telegram ID.</td>
<td>Get the telegram IDs of all contacts. <br>Returns an array of Telegram user IDs for all contacts (0 if a contact does not have an associated Telegram account or have hidden their account using privacy settings).</td>
<td>Imports contacts: saves a full list on the server, adds already registered contacts to the contact list, returns added contacts and their info.<br><br>Use <ahref="/method/contacts.addContact">contacts.addContact</a> to add Telegram contacts without actually using their phone number.</td>
<h3><aclass="anchor"href="#working-with-credit-cards"id="working-with-credit-cards"name="working-with-credit-cards"><iclass="anchor-icon"></i></a>Working with credit cards</h3>
<h3><aclass="anchor"href="#working-with-dialogs"id="working-with-dialogs"name="working-with-dialogs"><iclass="anchor-icon"></i></a>Working with dialogs</h3>
<td>Should be called after the user hides the <ahref="/api/action-bar">report spam/add as contact bar</a> of a new chat, effectively prevents the user from executing the actions specified in the <ahref="/api/action-bar">action bar »</a>.</td>
<td>Sends a current user typing event (see <ahref="/type/SendMessageAction">SendMessageAction</a> for all event types) to a conversation partner or group.</td>
<h3><aclass="anchor"href="#working-with-drafts"id="working-with-drafts"name="working-with-drafts"><iclass="anchor-icon"></i></a>Working with drafts</h3>
<td>Return all message <ahref="/api/drafts">drafts</a>. <br>Returns all the latest <ahref="/constructor/updateDraftMessage">updateDraftMessage</a> updates related to all chats with drafts.</td>
<h3><aclass="anchor"href="#working-with-folders"id="working-with-folders"name="working-with-folders"><iclass="anchor-icon"></i></a>Working with folders</h3>
<td>Fetch new chats associated with an imported <ahref="/api/links#chat-folder-links">chat folder deep link »</a>. Must be invoked at most every <code>chatlist_update_period</code> seconds (as per the related <ahref="/api/config#chatlist-update-period">client configuration parameter »</a>).</td>
<td>Returns identifiers of pinned or always included chats from a chat folder imported using a <ahref="/api/links#chat-folder-links">chat folder deep link »</a>, which are suggested to be left when the chat folder is deleted.</td>
<h3><aclass="anchor"href="#working-with-group-calls-amp-live-streaming"id="working-with-group-calls-amp-live-streaming"name="working-with-group-calls-amp-live-streaming"><iclass="anchor-icon"></i></a>Working with group calls & live streaming</h3>
<td>Edit information about a given group call participant<br><br>Note: <ahref="/mtproto/TL-combinators#conditional-fields">flags</a>.N?<ahref="/type/Bool">Bool</a> parameters can have three possible values:<br><br>- If the <ahref="/mtproto/TL-combinators#conditional-fields">TL flag</a> is not set, the previous value will not be changed.<br>- If the <ahref="/mtproto/TL-combinators#conditional-fields">TL flag</a> is set and contains a <ahref="/constructor/boolTrue">boolTrue</a>, the previous value will be overwritten to <code>true</code>.<br>- If the <ahref="/mtproto/TL-combinators#conditional-fields">TL flag</a> is set and contains a <ahref="/constructor/boolFalse">boolFalse</a>, the previous value will be overwritten to <code>false</code>.</td>
<td>Start or stop recording a group call: the recorded audio and video streams will be automatically sent to <code>Saved messages</code> (the chat with ourselves).</td>
<td>Check whether the group call Server Forwarding Unit is currently receiving the streams with the specified WebRTC source IDs. <br>Returns an intersection of the source IDs specified in <code>sources</code>, and the source IDs currently being forwarded by the SFU.</td>
<td>Get info about RTMP streams in a group call or livestream. <br>This method should be invoked to the same group/channel-related DC used for <ahref="/api/files#downloading-files">downloading livestream chunks</a>. <br>As usual, the media DC is preferred, if available.</td>
<td>Get RTMP URL and stream key for RTMP livestreams. Can be used even before creating the actual RTMP livestream with <ahref="/method/phone.createGroupCall">phone.createGroupCall</a> (the <code>rtmp_stream</code> flag must be set).</td>
<h3><aclass="anchor"href="#working-with-imported-chats"id="working-with-imported-chats"name="working-with-imported-chats"><iclass="anchor-icon"></i></a>Working with imported chats</h3>
<td>Complete the <ahref="/api/import">history import process</a>, importing all messages into the chat. <br>To be called only after initializing the import with <ahref="/method/messages.initHistoryImport">messages.initHistoryImport</a> and uploading all files using <ahref="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a>.</td>
<td>Check whether chat history exported from another chat app can be <ahref="/api/import">imported into a specific Telegram chat, click here for more info »</a>.<br><br>If the check succeeds, and no RPC errors are returned, a <ahref="/type/messages.CheckedHistoryImportPeer">messages.CheckedHistoryImportPeer</a> constructor will be returned, with a confirmation text to be shown to the user, before actually initializing the import.</td>
<td>Obtains information about a chat export file, generated by a foreign chat app, <ahref="/api/import">click here for more info about imported chats »</a>.</td>
<td>Import chat history from a foreign chat app into a specific Telegram chat, <ahref="/api/import">click here for more info about imported chats »</a>.</td>
<h3><aclass="anchor"href="#working-with-localization-packs"id="working-with-localization-packs"name="working-with-localization-packs"><iclass="anchor-icon"></i></a>Working with localization packs</h3>
<h3><aclass="anchor"href="#working-with-media-autodownload-settings"id="working-with-media-autodownload-settings"name="working-with-media-autodownload-settings"><iclass="anchor-icon"></i></a>Working with media autodownload settings</h3>
<h3><aclass="anchor"href="#working-with-media-autosave-settings"id="working-with-media-autosave-settings"name="working-with-media-autosave-settings"><iclass="anchor-icon"></i></a>Working with media autosave settings</h3>
<h3><aclass="anchor"href="#working-with-message-threads"id="working-with-message-threads"name="working-with-message-threads"><iclass="anchor-icon"></i></a>Working with message <ahref="/api/threads">threads</a></h3>
<td>Get <ahref="/api/threads">discussion message</a> from the <ahref="/api/discussion">associated discussion group</a> of a channel to show it on top of the comment section, without actually joining the group</td>
<h3><aclass="anchor"href="#working-with-messages"id="working-with-messages"name="working-with-messages"><iclass="anchor-icon"></i></a>Working with messages</h3>
<td>Returns sparse positions of messages of the specified type in the chat to be used for shared media scroll implementation.<br><br>Returns the results in reverse chronological order (i.e., in order of decreasing message_id).</td>
<td>Returns information about the next messages of the specified type in the chat split by days.<br><br>Returns the results in reverse chronological order. <br>Can return partial results for the last returned day.</td>
<h3><aclass="anchor"href="#working-with-notification-settings"id="working-with-notification-settings"name="working-with-notification-settings"><iclass="anchor-icon"></i></a>Working with notification settings</h3>
<h3><aclass="anchor"href="#working-with-notification-sounds"id="working-with-notification-sounds"name="working-with-notification-sounds"><iclass="anchor-icon"></i></a>Working with notification sounds</h3>
<td>Save or remove saved notification sound.<br><br>If the notification sound is already in MP3 format, <ahref="/constructor/account.savedRingtone">account.savedRingtone</a> will be returned. <br>Otherwise, it will be automatically converted and a <ahref="/constructor/account.savedRingtoneConverted">account.savedRingtoneConverted</a> will be returned, containing a new <ahref="/constructor/document">document</a> object that should be used to refer to the ringtone from now on (ie when deleting it using the <code>unsave</code> parameter, or when downloading it).</td>
<td>Upload notification sound, use <ahref="/method/account.saveRingtone">account.saveRingtone</a> to convert it and add it to the list of saved notification sounds.</td>
</tr>
</tbody>
</table>
<h3><aclass="anchor"href="#working-with-other-users"id="working-with-other-users"name="working-with-other-users"><iclass="anchor-icon"></i></a>Working with other users</h3>
<h3><aclass="anchor"href="#working-with-payments"id="working-with-payments"name="working-with-payments"><iclass="anchor-icon"></i></a>Working with payments</h3>
<td>If you sent an invoice requesting a shipping address and the parameter is_flexible was specified, the bot will receive an <ahref="/constructor/updateBotShippingQuery">updateBotShippingQuery</a> update. Use this method to reply to shipping queries.</td>
<td>Once the user has confirmed their payment and shipping details, the bot receives an <ahref="/constructor/updateBotPrecheckoutQuery">updateBotPrecheckoutQuery</a> update. <br>Use this method to respond to such pre-checkout queries. <br><strong>Note</strong>: Telegram must receive an answer within 10 seconds after the pre-checkout query was sent.</td>
<td>Vote in a <ahref="/constructor/poll">poll</a><br><br>Starting from layer 159, the vote will be sent from the peer specified using <ahref="/method/messages.saveDefaultSendAs">messages.saveDefaultSendAs</a>.</td>
<h3><aclass="anchor"href="#working-with-scheduled-messages"id="working-with-scheduled-messages"name="working-with-scheduled-messages"><iclass="anchor-icon"></i></a>Working with scheduled messages</h3>
<h3><aclass="anchor"href="#working-with-sensitive-content-nsfw"id="working-with-sensitive-content-nsfw"name="working-with-sensitive-content-nsfw"><iclass="anchor-icon"></i></a>Working with sensitive content (NSFW)</h3>
<h3><aclass="anchor"href="#working-with-sponsored-messages"id="working-with-sponsored-messages"name="working-with-sponsored-messages"><iclass="anchor-icon"></i></a>Working with sponsored messages</h3>
<td>Informs the server that the user has either:<br><br>- Clicked on a link in the sponsored message<br>- Has opened a sponsored chat or a sponsored website via the associated button<br>- Has opened the sponsored chat via the sponsored message name, the sponsored message photo, or a mention in the sponsored message</td>
<h3><aclass="anchor"href="#working-with-the-attachment-menu--of-mini-bot-apps-"id="working-with-the-attachment-menu--of-mini-bot-apps-"name="working-with-the-attachment-menu--of-mini-bot-apps-"><iclass="anchor-icon"></i></a>Working with the <ahref="/bots/webapps#launching-mini-apps-from-the-attachment-menu">attachment menu »</a> of <ahref="/bots/webapps">mini bot apps »</a></h3>
<h3><aclass="anchor"href="#working-with-the-native-anti-spam-system"id="working-with-the-native-anti-spam-system"name="working-with-the-native-anti-spam-system"><iclass="anchor-icon"></i></a>Working with the <ahref="/api/antispam">native anti-spam system</a></h3>
<h3><aclass="anchor"href="#working-with-the-takeout-api-see-here--for-more-info"id="working-with-the-takeout-api-see-here--for-more-info"name="working-with-the-takeout-api-see-here--for-more-info"><iclass="anchor-icon"></i></a>Working with the <ahref="/api/takeout">takeout API, see here » for more info</a>.</h3>
<td>Get a list of <ahref="/api/channel">channels/supergroups</a> we left, requires a <ahref="/api/takeout">takeout session, see here » for more info</a>.</td>
<h3><aclass="anchor"href="#working-with-the-bot-menu-button-"id="working-with-the-bot-menu-button-"name="working-with-the-bot-menu-button-"><iclass="anchor-icon"></i></a>Working with the bot <ahref="/bots/webapps#launching-mini-apps-from-the-menu-button">menu button »</a></h3>
<td>Gets the menu button action for a given user or for all users, previously set using <ahref="/method/bots.setBotMenuButton">bots.setBotMenuButton</a>; users can see this information in the <ahref="/constructor/botInfo">botInfo</a> constructor.</td>
<h3><aclass="anchor"href="#working-with-the-users-account"id="working-with-the-users-account"name="working-with-the-users-account"><iclass="anchor-icon"></i></a>Working with the user's account</h3>
<td>Delete the user's account from the telegram servers.<br><br>Can also be used to delete the account of a user that provided the login code, but forgot the 2FA password and no recovery method is configured, see <ahref="/api/srp#password-recovery">here »</a> for more info on password recovery, and <ahref="/api/account-deletion">here »</a> for more info on account deletion.</td>
<h3><aclass="anchor"href="#working-with-user-profile-pictures"id="working-with-user-profile-pictures"name="working-with-user-profile-pictures"><iclass="anchor-icon"></i></a>Working with user profile pictures</h3>
<td>Updates current user profile photo.<br><br>The <code>file</code>, <code>video</code> and <code>video_emoji_markup</code> flags are mutually exclusive.</td>
<td>Upload a custom profile picture for a contact, or suggest a new profile picture to a contact.<br><br>The <code>file</code>, <code>video</code> and <code>video_emoji_markup</code> flags are mutually exclusive.</td>
<h3><aclass="anchor"href="#working-with-usernames"id="working-with-usernames"name="working-with-usernames"><iclass="anchor-icon"></i></a>Working with usernames</h3>
<td>Check whether we can write to the specified user (non-<ahref="/api/premium">Premium</a> users only).<br><br>If a user enables their <strong>new_noncontact_peers_require_premium</strong><ahref="/api/privacy#global-privacy-settings">global privacy setting</a>, represented in <ahref="/constructor/userFull">userFull</a>.<code>contact_require_premium</code>, only users that have a premium account, are in our contact list, or already have a private chat with them can write to them in private.<br><br>To easily check whether we can write to a user with this flag enabled, if we haven't yet cached all the required information (for example we don't have the <ahref="/constructor/userFull">userFull</a> or history of all users while displaying the chat list in the sharing UI) this method may be invoked, passing the list of users currently visible in the UI, returning a list of booleans that directly specify whether we can or cannot write to each user.<br><br>This list may then be used, for example, to display a lock near the avatar of each user that we cannot write to, with an appropriate tooltip to purchase a <ahref="/api/premium">Premium</a> subscription.<br><br>Note that this method should <strong>only</strong> be invoked if we don't have a <ahref="/api/premium">Premium</a> subscription, only for users whose full info (<ahref="/constructor/userFull">userFull</a> + message history information) is not cached yet, as the same info can be computed locally if all the mentioned information is available, and updated automatically using the usual <ahref="/api/updates">updates</a>.</td>
<td>Set a <ahref="/api/custom-emoji">custom emoji stickerset</a> for supergroups. Only usable after reaching at least the <ahref="/api/boost">boost level »</a> specified in the <ahref="/api/config#group-emoji-stickers-level-min"><code>group_emoji_stickers_level_min</code> »</a> config parameter.</td>
<td>Returns timezone information that may be used elsewhere in the API, such as to set <ahref="/api/business#opening-hours">Telegram Business opening hours »</a>.</td>
<td>Specify a set of <ahref="/api/business#opening-hours">Telegram Business opening hours</a>. <br>This info will be contained in <ahref="/constructor/userFull">userFull</a>.<code>business_work_hours</code>.<br><br>To remove all opening hours, invoke the method without setting the <code>business_work_hours</code> field.<br><br>Note that the opening hours specified by the user must be appropriately validated and transformed before invoking the method, as specified <ahref="/api/business#opening-hours">here »</a>.</td>
<td><ahref="/api/business#location">Businesses »</a> may advertise their location using this method, see <ahref="/api/business#location">here »</a> for more info.<br><br>To remove business location information invoke the method without setting any of the parameters.</td>
<td>Reorder <ahref="/api/business#quick-reply-shortcuts">quick reply shortcuts</a>.<br><br>This will emit an <ahref="/constructor/updateQuickReplies">updateQuickReplies</a> update to other logged-in sessions.</td>
<td>Before offering the user the choice to add a message to a <ahref="/api/business#quick-reply-shortcuts">quick reply shortcut</a>, to make sure that none of the limits specified <ahref="/api/business#quick-reply-shortcuts">here »</a> were reached.</td>
<td>Rename a <ahref="/api/business#quick-reply-shortcuts">quick reply shortcut</a>. <br>This will emit an <ahref="/constructor/updateQuickReplies">updateQuickReplies</a> update to other logged-in sessions.</td>
<td>Completely delete a <ahref="/api/business#quick-reply-shortcuts">quick reply shortcut</a>. <br>This will also emit an <ahref="/constructor/updateDeleteQuickReply">updateDeleteQuickReply</a> update to other logged-in sessions (and <em>no</em><ahref="/constructor/updateDeleteQuickReplyMessages">updateDeleteQuickReplyMessages</a> updates, even if all the messages in the shortcuts are also deleted by this method).</td>
<td>Delete one or more messages from a <ahref="/api/business#quick-reply-shortcuts">quick reply shortcut</a>. This will also emit an <ahref="/constructor/updateDeleteQuickReplyMessages">updateDeleteQuickReplyMessages</a> update.</td>
<td>Invoke a method using a <ahref="/api/business#connected-bots">Telegram Business Bot connection, see here »</a>, including a list of the methods that can be wrapped in this constructor.</td>
<td>Bots may invoke this method to re-fetch the <ahref="/constructor/updateBotBusinessConnect">updateBotBusinessConnect</a> constructor associated with a specific <ahref="/api/business#connected-bots">business <code>connection_id</code>, see here »</a> for more info on connected business bots. <br>This is needed for example for freshly logged in bots that are receiving some <ahref="/constructor/updateBotNewBusinessMessage">updateBotNewBusinessMessage</a>, etc. updates because some users have already connected to the bot before it could login. <br>In this case, the bot is receiving messages from the business connection, but it hasn't cached the associated <ahref="/constructor/updateBotBusinessConnect">updateBotBusinessConnect</a> with info about the connection (can it reply to messages? etc.) yet, and cannot receive the old ones because they were sent when the bot wasn't logged into the session yet. <br>This method can be used to fetch info about a not-yet-cached business connection, and should not be invoked if the info is already cached or to fetch changes, as eventual changes will automatically be sent as new <ahref="/constructor/updateBotBusinessConnect">updateBotBusinessConnect</a> updates to the bot using the usual <ahref="/api/updates">update delivery methods »</a>.</td>
<td>Permanently disconnect a specific chat from all <ahref="/api/business#connected-bots">business bots »</a> (equivalent to specifying it in <code>recipients.exclude_users</code> during initial configuration with <ahref="/method/account.updateConnectedBot">account.updateConnectedBot »</a>); to reconnect of a chat disconnected using this method the user must reconnect the entire bot by invoking <ahref="/method/account.updateConnectedBot">account.updateConnectedBot »</a>.</td>