CINXE.COM
Methods
<!DOCTYPE html> <html class=""> <head> <meta charset="utf-8"> <title>Methods</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta property="description" content="Accepting the Terms of Service Name Description help.getTermsOfServiceUpdate Look for updates of telegram's terms of service…"> <meta property="og:title" content="Methods"> <meta property="og:image" content=""> <meta property="og:description" content="Accepting the Terms of Service Name Description help.getTermsOfServiceUpdate Look for updates of telegram's terms of service…"> <link rel="icon" type="image/svg+xml" href="/img/website_icon.svg?4"> <link rel="apple-touch-icon" sizes="180x180" href="/img/apple-touch-icon.png"> <link rel="icon" type="image/png" sizes="32x32" href="/img/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="16x16" href="/img/favicon-16x16.png"> <link rel="alternate icon" href="/img/favicon.ico" type="image/x-icon" /> <link href="/css/bootstrap.min.css?3" rel="stylesheet"> <link href="/css/telegram.css?241" rel="stylesheet" media="screen"> <style> </style> </head> <body class="preload"> <div class="dev_page_wrap"> <div class="dev_page_head navbar navbar-static-top navbar-tg"> <div class="navbar-inner"> <div class="container clearfix"> <ul class="nav navbar-nav navbar-right hidden-xs"><li class="navbar-twitter"><a href="https://twitter.com/telegram" target="_blank" data-track="Follow/Twitter" onclick="trackDlClick(this, event)"><i class="icon icon-twitter"></i><span> Twitter</span></a></li></ul> <ul class="nav navbar-nav"> <li><a href="//telegram.org/">Home</a></li> <li class="hidden-xs"><a href="//telegram.org/faq">FAQ</a></li> <li class="hidden-xs"><a href="//telegram.org/apps">Apps</a></li> <li class="active"><a href="/api">API</a></li> <li class=""><a href="/mtproto">Protocol</a></li> <li class=""><a href="/schema">Schema</a></li> </ul> </div> </div> </div> <div class="container clearfix"> <div class="dev_page"> <div id="dev_page_content_wrap" class=" "> <div class="dev_page_bread_crumbs"><ul class="breadcrumb clearfix"><li><a href="/api" >API</a></li><i class="icon icon-breadcrumb-divider"></i><li><a href="/methods" >Methods</a></li></ul></div> <h1 id="dev_page_title">Methods</h1> <div id="dev_page_content"><h3><a class="anchor" href="#accepting-the-terms-of-service" id="accepting-the-terms-of-service" name="accepting-the-terms-of-service"><i class="anchor-icon"></i></a>Accepting the <a href="https://telegram.org/tos">Terms of Service</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/help.getTermsOfServiceUpdate">help.getTermsOfServiceUpdate</a></td> <td>Look for updates of telegram's terms of service</td> </tr> <tr> <td><a href="/method/help.acceptTermsOfService">help.acceptTermsOfService</a></td> <td>Accept the new terms of service</td> </tr> </tbody> </table> <h3><a class="anchor" href="#dealing-with-spam-and-tos-violations" id="dealing-with-spam-and-tos-violations" name="dealing-with-spam-and-tos-violations"><i class="anchor-icon"></i></a>Dealing with spam and ToS violations</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.reportPeer">account.reportPeer</a></td> <td>Report a peer for violation of telegram's Terms of Service</td> </tr> <tr> <td><a href="/method/account.reportProfilePhoto">account.reportProfilePhoto</a></td> <td>Report a profile photo of a dialog</td> </tr> <tr> <td><a href="/method/channels.reportSpam">channels.reportSpam</a></td> <td>Reports some messages from a user in a supergroup as spam; requires administrator rights in the supergroup</td> </tr> <tr> <td><a href="/method/messages.report">messages.report</a></td> <td>Report a message in a chat for violation of telegram's Terms of Service</td> </tr> <tr> <td><a href="/method/messages.reportSpam">messages.reportSpam</a></td> <td>Report a new incoming chat for spam, if the <a href="/constructor/peerSettings">peer settings</a> of the chat allow us to do that</td> </tr> <tr> <td><a href="/method/messages.reportEncryptedSpam">messages.reportEncryptedSpam</a></td> <td>Report a secret chat for spam</td> </tr> </tbody> </table> <h3><a class="anchor" href="#fetching-configuration" id="fetching-configuration" name="fetching-configuration"><i class="anchor-icon"></i></a>Fetching <a href="/api/config">configuration</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/help.getAppConfig">help.getAppConfig</a></td> <td>Get app-specific configuration, see <a href="/api/config#client-configuration">client configuration</a> for more info on the result.</td> </tr> <tr> <td><a href="/method/help.getAppUpdate">help.getAppUpdate</a></td> <td>Returns information on update availability for the current application.</td> </tr> <tr> <td><a href="/method/help.getConfig">help.getConfig</a></td> <td>Returns current configuration, including data center configuration.</td> </tr> <tr> <td><a href="/method/help.getInviteText">help.getInviteText</a></td> <td>Returns localized text of a text message with an invitation.</td> </tr> <tr> <td><a href="/method/help.getNearestDc">help.getNearestDc</a></td> <td>Returns info on data center nearest to the user.</td> </tr> <tr> <td><a href="/method/help.getSupport">help.getSupport</a></td> <td>Returns the support user for the "ask a question" feature.</td> </tr> <tr> <td><a href="/method/help.getSupportName">help.getSupportName</a></td> <td>Get localized name of the telegram support user</td> </tr> <tr> <td><a href="/method/help.getCountriesList">help.getCountriesList</a></td> <td>Get name, ISO code, localized name and phone codes/patterns of all available countries</td> </tr> <tr> <td><a href="/method/help.dismissSuggestion">help.dismissSuggestion</a></td> <td>Dismiss a <a href="/api/config#suggestions">suggestion, see here for more info »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#login-via-qr-code" id="login-via-qr-code" name="login-via-qr-code"><i class="anchor-icon"></i></a>Login via <a href="/api/qr-login">QR code</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/auth.exportLoginToken">auth.exportLoginToken</a></td> <td>Generate a login token, for <a href="/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> <a href="/api/links#qr-code-login-links">deep link »</a> in the QR code.<br><br>For more info, see <a href="/api/qr-login">login via QR code</a>.</td> </tr> <tr> <td><a href="/method/auth.acceptLoginToken">auth.acceptLoginToken</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 <a href="/api/qr-login">login via QR code</a>.</td> </tr> <tr> <td><a href="/method/auth.importLoginToken">auth.importLoginToken</a></td> <td>Login using a redirected login token, generated in case of DC mismatch during <a href="/api/qr-login">QR code login</a>.<br><br>For more info, see <a href="/api/qr-login">login via QR code</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#miscellaneous" id="miscellaneous" name="miscellaneous"><i class="anchor-icon"></i></a>Miscellaneous</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/help.saveAppLog">help.saveAppLog</a></td> <td>Saves logs of application on the server.</td> </tr> <tr> <td><a href="/method/initConnection">initConnection</a></td> <td>Initialize connection</td> </tr> <tr> <td><a href="/method/invokeAfterMsg">invokeAfterMsg</a></td> <td>Invokes a query after successful completion of one of the previous queries.</td> </tr> <tr> <td><a href="/method/invokeAfterMsgs">invokeAfterMsgs</a></td> <td>Invokes a query after a successful completion of previous queries</td> </tr> <tr> <td><a href="/method/invokeWithLayer">invokeWithLayer</a></td> <td>Invoke the specified query using the specified API <a href="/api/invoking#layers">layer</a></td> </tr> <tr> <td><a href="/method/invokeWithoutUpdates">invokeWithoutUpdates</a></td> <td>Invoke a request without subscribing the used connection for <a href="/api/updates">updates</a> (this is enabled by default for <a href="/api/files">file queries</a>).</td> </tr> <tr> <td><a href="/method/invokeWithGooglePlayIntegrity">invokeWithGooglePlayIntegrity</a></td> <td>Official clients only, invoke with Google Play Integrity token.</td> </tr> <tr> <td><a href="/method/invokeWithApnsSecret">invokeWithApnsSecret</a></td> <td>Official clients only, invoke with Apple push verification.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#registration-authorization" id="registration-authorization" name="registration-authorization"><i class="anchor-icon"></i></a>Registration/Authorization</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/auth.bindTempAuthKey">auth.bindTempAuthKey</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 <a href="/api/pfs">Perfect Forward Secrecy</a>.</td> </tr> <tr> <td><a href="/method/auth.cancelCode">auth.cancelCode</a></td> <td>Cancel the login verification code</td> </tr> <tr> <td><a href="/method/account.sendVerifyEmailCode">account.sendVerifyEmailCode</a></td> <td>Send an email verification code.</td> </tr> <tr> <td><a href="/method/account.verifyEmail">account.verifyEmail</a></td> <td>Verify an email address.</td> </tr> <tr> <td><a href="/method/auth.resetLoginEmail">auth.resetLoginEmail</a></td> <td>Reset the <a href="https://core.telegram.org/api/auth#email-verification">login email »</a>.</td> </tr> <tr> <td><a href="/method/auth.checkPassword">auth.checkPassword</a></td> <td>Try logging to an account protected by a <a href="/api/srp">2FA password</a>.</td> </tr> <tr> <td><a href="/method/account.resetPassword">account.resetPassword</a></td> <td>Initiate a 2FA password reset: can only be used if the user is already logged-in, <a href="/api/srp#password-reset">see here for more info »</a></td> </tr> <tr> <td><a href="/method/auth.checkRecoveryPassword">auth.checkRecoveryPassword</a></td> <td>Check if the <a href="/api/srp">2FA recovery code</a> sent using <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a> is valid, before passing it to <a href="/method/auth.recoverPassword">auth.recoverPassword</a>.</td> </tr> <tr> <td><a href="/method/auth.dropTempAuthKeys">auth.dropTempAuthKeys</a></td> <td>Delete all temporary authorization keys <strong>except for</strong> the ones specified</td> </tr> <tr> <td><a href="/method/auth.exportAuthorization">auth.exportAuthorization</a></td> <td>Returns data for copying authorization to another data-center.</td> </tr> <tr> <td><a href="/method/auth.importAuthorization">auth.importAuthorization</a></td> <td>Logs in a user using a key transmitted from his native data-center.</td> </tr> <tr> <td><a href="/method/auth.importBotAuthorization">auth.importBotAuthorization</a></td> <td>Login as a bot</td> </tr> <tr> <td><a href="/method/account.changeAuthorizationSettings">account.changeAuthorizationSettings</a></td> <td>Change settings related to a session.</td> </tr> <tr> <td><a href="/method/account.setAuthorizationTTL">account.setAuthorizationTTL</a></td> <td>Set time-to-live of current session</td> </tr> <tr> <td><a href="/method/auth.logOut">auth.logOut</a></td> <td>Logs out the user.</td> </tr> <tr> <td><a href="/method/auth.recoverPassword">auth.recoverPassword</a></td> <td>Reset the <a href="/api/srp">2FA password</a> using the recovery code sent using <a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a>.</td> </tr> <tr> <td><a href="/method/auth.requestPasswordRecovery">auth.requestPasswordRecovery</a></td> <td>Request recovery code of a <a href="/api/srp">2FA password</a>, only for accounts with a <a href="/api/srp#email-verification">recovery email configured</a>.</td> </tr> <tr> <td><a href="/method/auth.resendCode">auth.resendCode</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 <a href="/api/auth">login</a> for more info.</td> </tr> <tr> <td><a href="/method/auth.resetAuthorizations">auth.resetAuthorizations</a></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 <a href="/method/account.registerDevice">account.registerDevice</a></td> </tr> <tr> <td><a href="/method/auth.sendCode">auth.sendCode</a></td> <td>Send the verification code for login</td> </tr> <tr> <td><a href="/method/auth.reportMissingCode">auth.reportMissingCode</a></td> <td>Official apps only, reports that the SMS authentication code wasn't delivered.</td> </tr> <tr> <td><a href="/method/auth.signIn">auth.signIn</a></td> <td>Signs in a user with a validated phone number.</td> </tr> <tr> <td><a href="/method/auth.signUp">auth.signUp</a></td> <td>Registers a validated phone number in the system.</td> </tr> <tr> <td><a href="/method/auth.requestFirebaseSms">auth.requestFirebaseSms</a></td> <td>Request an SMS code via Firebase.</td> </tr> <tr> <td><a href="/method/auth.importWebTokenAuthorization">auth.importWebTokenAuthorization</a></td> <td>Login by importing an authorization token</td> </tr> <tr> <td><a href="/method/account.invalidateSignInCodes">account.invalidateSignInCodes</a></td> <td>Invalidate the specified login codes, see <a href="/api/auth#invalidating-login-codes">here »</a> for more info.</td> </tr> </tbody> </table> <h3><a class="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"><i class="anchor-icon"></i></a>Working with Public Service Announcement and MTProxy channels</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/help.hidePromoData">help.hidePromoData</a></td> <td>Hide MTProxy/Public Service Announcement information</td> </tr> <tr> <td><a href="/method/help.getPromoData">help.getPromoData</a></td> <td>Get MTProxy/Public Service Announcement information</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-sms-jobs" id="working-with-sms-jobs" name="working-with-sms-jobs"><i class="anchor-icon"></i></a>Working with SMS jobs</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/smsjobs.isEligibleToJoin">smsjobs.isEligibleToJoin</a></td> <td>Check if we can process SMS jobs (official clients only).</td> </tr> <tr> <td><a href="/method/smsjobs.join">smsjobs.join</a></td> <td>Enable SMS jobs (official clients only).</td> </tr> <tr> <td><a href="/method/smsjobs.leave">smsjobs.leave</a></td> <td>Disable SMS jobs (official clients only).</td> </tr> <tr> <td><a href="/method/smsjobs.updateSettings">smsjobs.updateSettings</a></td> <td>Update SMS job settings (official clients only).</td> </tr> <tr> <td><a href="/method/smsjobs.getStatus">smsjobs.getStatus</a></td> <td>Get SMS jobs status (official clients only).</td> </tr> <tr> <td><a href="/method/smsjobs.getSmsJob">smsjobs.getSmsJob</a></td> <td>Get info about an SMS job (official clients only).</td> </tr> <tr> <td><a href="/method/smsjobs.finishJob">smsjobs.finishJob</a></td> <td>Finish an SMS job (official clients only).</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-tsf-internal-use-only" id="working-with-tsf-internal-use-only" name="working-with-tsf-internal-use-only"><i class="anchor-icon"></i></a>Working with TSF (internal use only)</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/help.editUserInfo">help.editUserInfo</a></td> <td>Internal use</td> </tr> <tr> <td><a href="/method/help.getUserInfo">help.getUserInfo</a></td> <td>Can only be used by TSF members to obtain internal information.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-telegram-premium" id="working-with-telegram-premium" name="working-with-telegram-premium"><i class="anchor-icon"></i></a>Working with Telegram Premium</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/payments.canPurchasePremium">payments.canPurchasePremium</a></td> <td>Checks whether Telegram Premium purchase is possible. Must be called before in-store Premium purchase, official apps only.</td> </tr> <tr> <td><a href="/method/help.getPremiumPromo">help.getPremiumPromo</a></td> <td>Get Telegram Premium promotion information</td> </tr> <tr> <td><a href="/method/payments.assignAppStoreTransaction">payments.assignAppStoreTransaction</a></td> <td>Informs server about a purchase made through the App Store: for official applications only.</td> </tr> <tr> <td><a href="/method/payments.assignPlayMarketTransaction">payments.assignPlayMarketTransaction</a></td> <td>Informs server about a purchase made through the Play Store: for official applications only.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-2fa-login" id="working-with-2fa-login" name="working-with-2fa-login"><i class="anchor-icon"></i></a>Working with <a href="/api/srp">2FA login</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.confirmPasswordEmail">account.confirmPasswordEmail</a></td> <td>Verify an email to use as <a href="/api/srp">2FA recovery method</a>.</td> </tr> <tr> <td><a href="/method/account.resendPasswordEmail">account.resendPasswordEmail</a></td> <td>Resend the code to verify an email to use as <a href="/api/srp">2FA recovery method</a>.</td> </tr> <tr> <td><a href="/method/account.cancelPasswordEmail">account.cancelPasswordEmail</a></td> <td>Cancel the code that was sent to verify an email to use as <a href="/api/srp">2FA recovery method</a>.</td> </tr> <tr> <td><a href="/method/account.getPassword">account.getPassword</a></td> <td>Obtain configuration for two-factor authorization with password</td> </tr> <tr> <td><a href="/method/account.getPasswordSettings">account.getPasswordSettings</a></td> <td>Get private info associated to the password info (recovery email, telegram <a href="/passport">passport</a> info & so on)</td> </tr> <tr> <td><a href="/method/account.updatePasswordSettings">account.updatePasswordSettings</a></td> <td>Set a new 2FA password</td> </tr> <tr> <td><a href="/method/account.declinePasswordReset">account.declinePasswordReset</a></td> <td>Abort a pending 2FA password reset, <a href="/api/srp#password-reset">see here for more info »</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-fragment-collectibles" id="working-with-fragment-collectibles" name="working-with-fragment-collectibles"><i class="anchor-icon"></i></a>Working with <a href="/api/fragment">Fragment collectibles</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/fragment.getCollectibleInfo">fragment.getCollectibleInfo</a></td> <td>Fetch information about a <a href="/api/fragment#fetching-info-about-fragment-collectibles">fragment collectible, see here »</a> for more info on the full flow.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-gifs-" id="working-with-gifs-" name="working-with-gifs-"><i class="anchor-icon"></i></a>Working with <a href="/api/gifs">GIFs »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getSavedGifs">messages.getSavedGifs</a></td> <td>Get saved GIFs.</td> </tr> <tr> <td><a href="/method/messages.saveGif">messages.saveGif</a></td> <td>Add GIF to saved gifs list</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-main-mini-bot-apps--and-the-mini-app-store" id="working-with-main-mini-bot-apps--and-the-mini-app-store" name="working-with-main-mini-bot-apps--and-the-mini-app-store"><i class="anchor-icon"></i></a>Working with <a href="/api/bots/webapps#main-mini-apps">Main Mini Bot Apps »</a> and the <a href="/api/search#apps-tab">Mini App Store</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/bots.getPopularAppBots">bots.getPopularAppBots</a></td> <td>Fetch popular <a href="/api/bots/webapps#main-mini-apps">Main Mini Apps</a>, to be used in the <a href="/api/search#apps-tab">apps tab of global search »</a>.</td> </tr> <tr> <td><a href="/method/bots.addPreviewMedia">bots.addPreviewMedia</a></td> <td>Add a <a href="/api/bots/webapps#main-mini-app-previews">main mini app preview, see here »</a> for more info.<br><br>Only owners of bots with a configured Main Mini App can use this method, see <a href="/api/bots/webapps#main-mini-app-previews">see here »</a> for more info on how to check if you can invoke this method.</td> </tr> <tr> <td><a href="/method/bots.editPreviewMedia">bots.editPreviewMedia</a></td> <td>Edit a <a href="/api/bots/webapps#main-mini-app-previews">main mini app preview, see here »</a> for more info.<br><br>Only owners of bots with a configured Main Mini App can use this method, see <a href="/api/bots/webapps#main-mini-app-previews">see here »</a> for more info on how to check if you can invoke this method.</td> </tr> <tr> <td><a href="/method/bots.deletePreviewMedia">bots.deletePreviewMedia</a></td> <td>Delete a <a href="/api/bots/webapps#main-mini-app-previews">main mini app preview, see here »</a> for more info.<br><br>Only owners of bots with a configured Main Mini App can use this method, see <a href="/api/bots/webapps#main-mini-app-previews">see here »</a> for more info on how to check if you can invoke this method.</td> </tr> <tr> <td><a href="/method/bots.reorderPreviewMedias">bots.reorderPreviewMedias</a></td> <td>Reorder a <a href="/api/bots/webapps#main-mini-app-previews">main mini app previews, see here »</a> for more info.<br><br>Only owners of bots with a configured Main Mini App can use this method, see <a href="/api/bots/webapps#main-mini-app-previews">see here »</a> for more info on how to check if you can invoke this method.</td> </tr> <tr> <td><a href="/method/bots.getPreviewInfo">bots.getPreviewInfo</a></td> <td>Bot owners only, fetch <a href="/api/bots/webapps#main-mini-app-previews">main mini app preview information, see here »</a> for more info.<br><br>Note: technically non-owners may also invoke this method, but it will always behave exactly as <a href="/method/bots.getPreviewMedias">bots.getPreviewMedias</a>, returning only previews for the current language and an empty <code>lang_codes</code> array, regardless of the passed <code>lang_code</code>, so please only use <a href="/method/bots.getPreviewMedias">bots.getPreviewMedias</a> if you're not the owner of the <code>bot</code>.</td> </tr> <tr> <td><a href="/method/bots.getPreviewMedias">bots.getPreviewMedias</a></td> <td>Fetch <a href="/api/bots/webapps#main-mini-app-previews">main mini app previews, see here »</a> for more info.</td> </tr> <tr> <td><a href="/method/messages.requestMainWebView">messages.requestMainWebView</a></td> <td>Open a <a href="/api/bots/webapps#main-mini-apps">Main Mini App</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-mini-bot-apps-" id="working-with-mini-bot-apps-" name="working-with-mini-bot-apps-"><i class="anchor-icon"></i></a>Working with <a href="/api/bots/webapps">Mini Bot Apps »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.requestWebView">messages.requestWebView</a></td> <td>Open a <a href="/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, <a href="/method/messages.prolongWebView">messages.prolongWebView</a> must be called every 60 seconds.</td> </tr> <tr> <td><a href="/method/messages.prolongWebView">messages.prolongWebView</a></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> </tr> <tr> <td><a href="/method/messages.requestSimpleWebView">messages.requestSimpleWebView</a></td> <td>Open a <a href="/api/bots/webapps">bot mini app</a>.</td> </tr> <tr> <td><a href="/method/messages.sendWebViewResultMessage">messages.sendWebViewResultMessage</a></td> <td>Terminate webview interaction started with <a href="/method/messages.requestWebView">messages.requestWebView</a>, sending the specified message to the chat on behalf of the user.</td> </tr> <tr> <td><a href="/method/messages.sendWebViewData">messages.sendWebViewData</a></td> <td>Used by the user to relay data from an opened <a href="/api/bots/webapps">reply keyboard bot mini app</a> to the bot that owns it.</td> </tr> <tr> <td><a href="/method/messages.requestAppWebView">messages.requestAppWebView</a></td> <td>Open a <a href="/bots/webapps">bot mini app</a> from a <a href="/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, <a href="/method/messages.prolongWebView">messages.prolongWebView</a> must be called every 60 seconds.</td> </tr> <tr> <td><a href="/method/messages.getBotApp">messages.getBotApp</a></td> <td>Obtain information about a <a href="/api/bots/webapps#direct-link-mini-apps">direct link Mini App</a></td> </tr> <tr> <td><a href="/method/bots.canSendMessage">bots.canSendMessage</a></td> <td>Check whether the specified bot can send us messages</td> </tr> <tr> <td><a href="/method/bots.allowSendMessage">bots.allowSendMessage</a></td> <td>Allow the specified bot to send us messages</td> </tr> <tr> <td><a href="/method/bots.invokeWebViewCustomMethod">bots.invokeWebViewCustomMethod</a></td> <td>Send a custom request from a <a href="/api/bots/webapps">mini bot app</a>, triggered by a <a href="/api/web-events#web-app-invoke-custom-method">web_app_invoke_custom_method event »</a>.<br><br>The response should be sent using a <a href="/api/bots/webapps#custom-method-invoked">custom_method_invoked</a> event, <a href="/api/web-events#web-app-invoke-custom-method">see here »</a> for more info on the flow.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-seamless-telegram-login" id="working-with-seamless-telegram-login" name="working-with-seamless-telegram-login"><i class="anchor-icon"></i></a>Working with <a href="/api/url-authorization">Seamless Telegram Login</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.requestUrlAuth">messages.requestUrlAuth</a></td> <td>Get more info about a Seamless Telegram Login authorization request, for more info <a href="/api/url-authorization">click here »</a></td> </tr> <tr> <td><a href="/method/messages.acceptUrlAuth">messages.acceptUrlAuth</a></td> <td>Use this to accept a Seamless Telegram Login authorization request, for more info <a href="/api/url-authorization">click here »</a></td> </tr> <tr> <td><a href="/method/account.getWebAuthorizations">account.getWebAuthorizations</a></td> <td>Get web <a href="/widgets/login">login widget</a> authorizations</td> </tr> <tr> <td><a href="/method/account.resetWebAuthorization">account.resetWebAuthorization</a></td> <td>Log out an active web <a href="/widgets/login">telegram login</a> session</td> </tr> <tr> <td><a href="/method/account.resetWebAuthorizations">account.resetWebAuthorizations</a></td> <td>Reset all active web <a href="/widgets/login">telegram login</a> sessions</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-telegram-business-chat-links" id="working-with-telegram-business-chat-links" name="working-with-telegram-business-chat-links"><i class="anchor-icon"></i></a>Working with <a href="/api/business#business-chat-links">Telegram Business chat links</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.createBusinessChatLink">account.createBusinessChatLink</a></td> <td>Create a <a href="/api/business#business-chat-links">business chat deep link »</a>.</td> </tr> <tr> <td><a href="/method/account.editBusinessChatLink">account.editBusinessChatLink</a></td> <td>Edit a created <a href="/api/business#business-chat-links">business chat deep link »</a>.</td> </tr> <tr> <td><a href="/method/account.deleteBusinessChatLink">account.deleteBusinessChatLink</a></td> <td>Delete a <a href="/api/business#business-chat-links">business chat deep link »</a>.</td> </tr> <tr> <td><a href="/method/account.getBusinessChatLinks">account.getBusinessChatLinks</a></td> <td>List all created <a href="/api/business#business-chat-links">business chat deep links »</a>.</td> </tr> <tr> <td><a href="/method/account.resolveBusinessChatLink">account.resolveBusinessChatLink</a></td> <td>Resolve a <a href="/api/business#business-chat-links">business chat deep link »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-telegram-business-connected-bots-" id="working-with-telegram-business-connected-bots-" name="working-with-telegram-business-connected-bots-"><i class="anchor-icon"></i></a>Working with <a href="/api/business#connected-bots">Telegram Business connected bots »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.updateConnectedBot">account.updateConnectedBot</a></td> <td>Connect a <a href="/api/business#connected-bots">business bot »</a> to the current account, or to change the current connection settings.</td> </tr> <tr> <td><a href="/method/account.getConnectedBots">account.getConnectedBots</a></td> <td>List all currently connected <a href="/api/business#connected-bots">business bots »</a></td> </tr> <tr> <td><a href="/method/account.toggleConnectedBotPaused">account.toggleConnectedBotPaused</a></td> <td>Pause or unpause a specific chat, temporarily disconnecting it from all <a href="/api/business#connected-bots">business bots »</a>.</td> </tr> <tr> <td><a href="/method/account.disablePeerConnectedBot">account.disablePeerConnectedBot</a></td> <td>Permanently disconnect a specific chat from all <a href="/api/business#connected-bots">business bots »</a> (equivalent to specifying it in <code>recipients.exclude_users</code> during initial configuration with <a href="/method/account.updateConnectedBot">account.updateConnectedBot »</a>); to reconnect of a chat disconnected using this method the user must reconnect the entire bot by invoking <a href="/method/account.updateConnectedBot">account.updateConnectedBot »</a>.</td> </tr> <tr> <td><a href="/method/account.getBotBusinessConnection">account.getBotBusinessConnection</a></td> <td>Bots may invoke this method to re-fetch the <a href="/constructor/updateBotBusinessConnect">updateBotBusinessConnect</a> constructor associated with a specific <a href="/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 <a href="/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 <a href="/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 <a href="/constructor/updateBotBusinessConnect">updateBotBusinessConnect</a> updates to the bot using the usual <a href="/api/updates">update delivery methods »</a>.</td> </tr> <tr> <td><a href="/method/invokeWithBusinessConnection">invokeWithBusinessConnection</a></td> <td>Invoke a method using a <a href="/api/business#connected-bots">Telegram Business Bot connection, see here » for more info, including a list of the methods that can be wrapped in this constructor</a>.<br><br>Make sure to always send queries wrapped in a <code>invokeWithBusinessConnection</code> to the datacenter ID, specified in the <code>dc_id</code> field of the <a href="/constructor/botBusinessConnection">botBusinessConnection</a> that is being used.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-telegram-business-greeting-and-away-messages" id="working-with-telegram-business-greeting-and-away-messages" name="working-with-telegram-business-greeting-and-away-messages"><i class="anchor-icon"></i></a>Working with <a href="/api/business">Telegram Business greeting and away messages</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.updateBusinessGreetingMessage">account.updateBusinessGreetingMessage</a></td> <td>Set a list of <a href="/api/business#greeting-messages">Telegram Business greeting messages</a>.</td> </tr> <tr> <td><a href="/method/account.updateBusinessAwayMessage">account.updateBusinessAwayMessage</a></td> <td>Set a list of <a href="/api/business#away-messages">Telegram Business away messages</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-telegram-business-opening-hours-" id="working-with-telegram-business-opening-hours-" name="working-with-telegram-business-opening-hours-"><i class="anchor-icon"></i></a>Working with <a href="/api/business#opening-hours">Telegram Business opening hours »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.updateBusinessWorkHours">account.updateBusinessWorkHours</a></td> <td>Specify a set of <a href="/api/business#opening-hours">Telegram Business opening hours</a>. <br>This info will be contained in <a href="/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 <a href="/api/business#opening-hours">here »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-telegram-business-quick-reply-shortcuts-" id="working-with-telegram-business-quick-reply-shortcuts-" name="working-with-telegram-business-quick-reply-shortcuts-"><i class="anchor-icon"></i></a>Working with <a href="/api/business#quick-reply-shortcuts">Telegram Business quick reply shortcuts »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getQuickReplies">messages.getQuickReplies</a></td> <td>Fetch basic info about all existing <a href="/api/business#quick-reply-shortcuts">quick reply shortcuts</a>.</td> </tr> <tr> <td><a href="/method/messages.reorderQuickReplies">messages.reorderQuickReplies</a></td> <td>Reorder <a href="/api/business#quick-reply-shortcuts">quick reply shortcuts</a>.<br><br>This will emit an <a href="/constructor/updateQuickReplies">updateQuickReplies</a> update to other logged-in sessions.</td> </tr> <tr> <td><a href="/method/messages.checkQuickReplyShortcut">messages.checkQuickReplyShortcut</a></td> <td>Before offering the user the choice to add a message to a <a href="/api/business#quick-reply-shortcuts">quick reply shortcut</a>, to make sure that none of the limits specified <a href="/api/business#quick-reply-shortcuts">here »</a> were reached.</td> </tr> <tr> <td><a href="/method/messages.editQuickReplyShortcut">messages.editQuickReplyShortcut</a></td> <td>Rename a <a href="/api/business#quick-reply-shortcuts">quick reply shortcut</a>. <br>This will emit an <a href="/constructor/updateQuickReplies">updateQuickReplies</a> update to other logged-in sessions.</td> </tr> <tr> <td><a href="/method/messages.deleteQuickReplyShortcut">messages.deleteQuickReplyShortcut</a></td> <td>Completely delete a <a href="/api/business#quick-reply-shortcuts">quick reply shortcut</a>. <br>This will also emit an <a href="/constructor/updateDeleteQuickReply">updateDeleteQuickReply</a> update to other logged-in sessions (and <em>no</em> <a href="/constructor/updateDeleteQuickReplyMessages">updateDeleteQuickReplyMessages</a> updates, even if all the messages in the shortcuts are also deleted by this method).</td> </tr> <tr> <td><a href="/method/messages.getQuickReplyMessages">messages.getQuickReplyMessages</a></td> <td>Fetch (a subset or all) messages in a <a href="/api/business#quick-reply-shortcuts">quick reply shortcut »</a>.</td> </tr> <tr> <td><a href="/method/messages.sendQuickReplyMessages">messages.sendQuickReplyMessages</a></td> <td>Send a <a href="/api/business#quick-reply-shortcuts">quick reply shortcut »</a>.</td> </tr> <tr> <td><a href="/method/messages.deleteQuickReplyMessages">messages.deleteQuickReplyMessages</a></td> <td>Delete one or more messages from a <a href="/api/business#quick-reply-shortcuts">quick reply shortcut</a>. This will also emit an <a href="/constructor/updateDeleteQuickReplyMessages">updateDeleteQuickReplyMessages</a> update.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-telegram-stars" id="working-with-telegram-stars" name="working-with-telegram-stars"><i class="anchor-icon"></i></a>Working with <a href="/api/stars">Telegram Stars</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/payments.getStarsTopupOptions">payments.getStarsTopupOptions</a></td> <td>Obtain a list of <a href="/api/stars#buying-or-gifting-stars">Telegram Stars topup options »</a> as <a href="/constructor/starsTopupOption">starsTopupOption</a> constructors.</td> </tr> <tr> <td><a href="/method/payments.getStarsStatus">payments.getStarsStatus</a></td> <td>Get the current <a href="/api/stars">Telegram Stars balance</a> of the current account (with peer=<a href="/constructor/inputPeerSelf">inputPeerSelf</a>), or the stars balance of the bot specified in <code>peer</code>.</td> </tr> <tr> <td><a href="/method/payments.getStarsTransactions">payments.getStarsTransactions</a></td> <td>Fetch <a href="/api/stars#balance-and-transaction-history">Telegram Stars transactions</a>.<br><br>The <code>inbound</code> and <code>outbound</code> flags are mutually exclusive: if none of the two are set, both incoming and outgoing transactions are fetched.</td> </tr> <tr> <td><a href="/method/payments.sendStarsForm">payments.sendStarsForm</a></td> <td>Make a payment using <a href="/api/stars#using-stars">Telegram Stars, see here »</a> for more info.</td> </tr> <tr> <td><a href="/method/payments.refundStarsCharge">payments.refundStarsCharge</a></td> <td>Refund a <a href="/api/stars">Telegram Stars</a> transaction, see <a href="/api/payments#6-refunds">here »</a> for more info.</td> </tr> <tr> <td><a href="/method/payments.getStarsRevenueStats">payments.getStarsRevenueStats</a></td> <td>Get <a href="/api/stars">Telegram Star revenue statistics »</a>.</td> </tr> <tr> <td><a href="/method/payments.getStarsRevenueWithdrawalUrl">payments.getStarsRevenueWithdrawalUrl</a></td> <td>Withdraw funds from a channel or bot's <a href="/api/stars#withdrawing-revenue">star balance »</a>.</td> </tr> <tr> <td><a href="/method/payments.getStarsRevenueAdsAccountUrl">payments.getStarsRevenueAdsAccountUrl</a></td> <td>Returns a URL for a Telegram Ad platform account that can be used to set up advertisements for channel/bot in <code>peer</code>, paid using the Telegram Stars owned by the specified <code>peer</code>, see <a href="/api/stars#paying-for-ads">here »</a> for more info.</td> </tr> <tr> <td><a href="/method/payments.getStarsTransactionsByID">payments.getStarsTransactionsByID</a></td> <td>Obtain info about <a href="/api/stars#balance-and-transaction-history">Telegram Star transactions »</a> using specific transaction IDs.</td> </tr> <tr> <td><a href="/method/payments.getStarsGiftOptions">payments.getStarsGiftOptions</a></td> <td>Obtain a list of <a href="/api/stars#buying-or-gifting-stars">Telegram Stars gift options »</a> as <a href="/constructor/starsGiftOption">starsGiftOption</a> constructors.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-voip-calls" id="working-with-voip-calls" name="working-with-voip-calls"><i class="anchor-icon"></i></a>Working with <a href="/api/end-to-end/voice-calls">VoIP calls</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/phone.acceptCall">phone.acceptCall</a></td> <td>Accept incoming call</td> </tr> <tr> <td><a href="/method/phone.confirmCall">phone.confirmCall</a></td> <td><a href="/api/end-to-end/voice-calls">Complete phone call E2E encryption key exchange »</a></td> </tr> <tr> <td><a href="/method/phone.discardCall">phone.discardCall</a></td> <td>Refuse or end running call</td> </tr> <tr> <td><a href="/method/phone.getCallConfig">phone.getCallConfig</a></td> <td>Get phone call configuration to be passed to libtgvoip's shared config</td> </tr> <tr> <td><a href="/method/phone.receivedCall">phone.receivedCall</a></td> <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> </tr> <tr> <td><a href="/method/phone.requestCall">phone.requestCall</a></td> <td>Start a telegram phone call</td> </tr> <tr> <td><a href="/method/phone.saveCallDebug">phone.saveCallDebug</a></td> <td>Send phone call debug data to server</td> </tr> <tr> <td><a href="/method/phone.sendSignalingData">phone.sendSignalingData</a></td> <td>Send VoIP signaling data</td> </tr> <tr> <td><a href="/method/phone.setCallRating">phone.setCallRating</a></td> <td>Rate a call, returns info about the rating message sent to the official VoIP bot.</td> </tr> <tr> <td><a href="/method/phone.saveCallLog">phone.saveCallLog</a></td> <td>Save phone call debug information</td> </tr> <tr> <td><a href="/method/messages.deletePhoneCallHistory">messages.deletePhoneCallHistory</a></td> <td>Delete the entire phone call history.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-accent-colors-" id="working-with-accent-colors-" name="working-with-accent-colors-"><i class="anchor-icon"></i></a>Working with <a href="/api/colors">accent colors »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/help.getPeerColors">help.getPeerColors</a></td> <td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used for message accents.</td> </tr> <tr> <td><a href="/method/help.getPeerProfileColors">help.getPeerProfileColors</a></td> <td>Get the set of <a href="/api/colors">accent color palettes »</a> that can be used in profile page backgrounds.</td> </tr> <tr> <td><a href="/method/account.updateColor">account.updateColor</a></td> <td>Update the <a href="/api/colors">accent color and background custom emoji »</a> of the current account.</td> </tr> <tr> <td><a href="/method/channels.updateColor">channels.updateColor</a></td> <td>Update the <a href="/api/colors">accent color and background custom emoji »</a> of a channel.</td> </tr> <tr> <td><a href="/method/account.getDefaultBackgroundEmojis">account.getDefaultBackgroundEmojis</a></td> <td>Get a set of suggested <a href="/api/custom-emoji">custom emoji stickers</a> that can be used in an <a href="/api/colors">accent color pattern</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-boosts-" id="working-with-boosts-" name="working-with-boosts-"><i class="anchor-icon"></i></a>Working with <a href="/api/boost">boosts »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/premium.getBoostsList">premium.getBoostsList</a></td> <td>Obtains info about the boosts that were applied to a certain channel or supergroup (admins only)</td> </tr> <tr> <td><a href="/method/premium.getMyBoosts">premium.getMyBoosts</a></td> <td>Obtain which peers are we currently <a href="/api/boost">boosting</a>, and how many <a href="/api/boost">boost slots</a> we have left.</td> </tr> <tr> <td><a href="/method/premium.applyBoost">premium.applyBoost</a></td> <td>Apply one or more <a href="/api/boost">boosts »</a> to a peer.</td> </tr> <tr> <td><a href="/method/premium.getBoostsStatus">premium.getBoostsStatus</a></td> <td>Gets the current <a href="/api/boost">number of boosts</a> of a channel/supergroup.</td> </tr> <tr> <td><a href="/method/premium.getUserBoosts">premium.getUserBoosts</a></td> <td>Returns the lists of boost that were applied to a channel/supergroup by a specific user (admins only)</td> </tr> <tr> <td><a href="/method/channels.setBoostsToUnblockRestrictions">channels.setBoostsToUnblockRestrictions</a></td> <td>Admins with <a href="/constructor/chatAdminRights">ban_users admin rights »</a> may allow users that apply a certain number of <a href="/api/boost">booosts »</a> to the group to bypass <a href="/method/channels.toggleSlowMode">slow mode »</a> and <a href="/api/rights#default-rights">other »</a> supergroup restrictions, see <a href="/api/boost#bypass-slowmode-and-chat-restrictions">here »</a> for more info.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-channel-recommendations-" id="working-with-channel-recommendations-" name="working-with-channel-recommendations-"><i class="anchor-icon"></i></a>Working with <a href="/api/recommend">channel recommendations »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/channels.getChannelRecommendations">channels.getChannelRecommendations</a></td> <td>Obtain a list of similarly themed public channels, selected based on similarities in their <strong>subscriber bases</strong>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-channels-supergroups-geogroups" id="working-with-channels-supergroups-geogroups" name="working-with-channels-supergroups-geogroups"><i class="anchor-icon"></i></a>Working with <a href="/api/channel">channels/supergroups/geogroups</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/channels.createChannel">channels.createChannel</a></td> <td>Create a <a href="/api/channel">supergroup/channel</a>.</td> </tr> <tr> <td><a href="/method/channels.getInactiveChannels">channels.getInactiveChannels</a></td> <td>Get inactive channels and supergroups</td> </tr> <tr> <td><a href="/method/channels.deleteChannel">channels.deleteChannel</a></td> <td>Delete a <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> <td><a href="/method/channels.deleteHistory">channels.deleteHistory</a></td> <td>Delete the history of a <a href="/api/channel">supergroup</a></td> </tr> <tr> <td><a href="/method/channels.deleteMessages">channels.deleteMessages</a></td> <td>Delete messages in a <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> <td><a href="/method/channels.deleteParticipantHistory">channels.deleteParticipantHistory</a></td> <td>Delete all messages sent by a specific participant of a given supergroup</td> </tr> <tr> <td><a href="/method/channels.editAdmin">channels.editAdmin</a></td> <td>Modify the admin rights of a user in a <a href="/api/channel">supergroup/channel</a>.</td> </tr> <tr> <td><a href="/method/channels.editBanned">channels.editBanned</a></td> <td>Ban/unban/kick a user in a <a href="/api/channel">supergroup/channel</a>.</td> </tr> <tr> <td><a href="/method/channels.editCreator">channels.editCreator</a></td> <td>Transfer channel ownership</td> </tr> <tr> <td><a href="/method/channels.editLocation">channels.editLocation</a></td> <td>Edit location of geogroup, see <a href="/api/nearby">here »</a> for more info on geogroups.</td> </tr> <tr> <td><a href="/method/channels.editPhoto">channels.editPhoto</a></td> <td>Change the photo of a <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> <td><a href="/method/channels.editTitle">channels.editTitle</a></td> <td>Edit the name of a <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> <td><a href="/method/channels.exportMessageLink">channels.exportMessageLink</a></td> <td>Get link and embed info of a message in a <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> <td><a href="/method/channels.getAdminLog">channels.getAdminLog</a></td> <td>Get the admin log of a <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> <td><a href="/method/channels.getAdminedPublicChannels">channels.getAdminedPublicChannels</a></td> <td>Get <a href="/api/channel">channels/supergroups/geogroups</a> we're admin in. Usually called when the user exceeds the <a href="/constructor/config">limit</a> for owned public <a href="/api/channel">channels/supergroups/geogroups</a>, and the user is given the choice to remove one of his channels/supergroups/geogroups.</td> </tr> <tr> <td><a href="/method/channels.getChannels">channels.getChannels</a></td> <td>Get info about <a href="/api/channel">channels/supergroups</a></td> </tr> <tr> <td><a href="/method/channels.getFullChannel">channels.getFullChannel</a></td> <td>Get full info about a <a href="/api/channel#supergroups">supergroup</a>, <a href="/api/channel#gigagroups">gigagroup</a> or <a href="/api/channel#channels">channel</a></td> </tr> <tr> <td><a href="/method/channels.getGroupsForDiscussion">channels.getGroupsForDiscussion</a></td> <td>Get all groups that can be used as <a href="/api/discussion">discussion groups</a>.<br><br>Returned <a href="/api/channel#basic-groups">basic group chats</a> must be first upgraded to <a href="/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 <a href="/method/channels.togglePreHistoryHidden">channels.togglePreHistoryHidden</a>, first.</td> </tr> <tr> <td><a href="/method/channels.getMessages">channels.getMessages</a></td> <td>Get <a href="/api/channel">channel/supergroup</a> messages</td> </tr> <tr> <td><a href="/method/channels.getParticipant">channels.getParticipant</a></td> <td>Get info about a <a href="/api/channel">channel/supergroup</a> participant</td> </tr> <tr> <td><a href="/method/channels.getParticipants">channels.getParticipants</a></td> <td>Get the participants of a <a href="/api/channel">supergroup/channel</a></td> </tr> <tr> <td><a href="/method/channels.inviteToChannel">channels.inviteToChannel</a></td> <td>Invite users to a channel/supergroup</td> </tr> <tr> <td><a href="/method/channels.joinChannel">channels.joinChannel</a></td> <td>Join a channel/supergroup</td> </tr> <tr> <td><a href="/method/channels.leaveChannel">channels.leaveChannel</a></td> <td>Leave a <a href="/api/channel">channel/supergroup</a></td> </tr> <tr> <td><a href="/method/channels.readHistory">channels.readHistory</a></td> <td>Mark <a href="/api/channel">channel/supergroup</a> history as read</td> </tr> <tr> <td><a href="/method/channels.readMessageContents">channels.readMessageContents</a></td> <td>Mark <a href="/api/channel">channel/supergroup</a> message contents as read</td> </tr> <tr> <td><a href="/method/channels.setDiscussionGroup">channels.setDiscussionGroup</a></td> <td>Associate a group to a channel as <a href="/api/discussion">discussion group</a> for that channel</td> </tr> <tr> <td><a href="/method/channels.setStickers">channels.setStickers</a></td> <td>Associate a stickerset to the supergroup</td> </tr> <tr> <td><a href="/method/channels.togglePreHistoryHidden">channels.togglePreHistoryHidden</a></td> <td>Hide/unhide message history for new channel/supergroup users</td> </tr> <tr> <td><a href="/method/channels.toggleSignatures">channels.toggleSignatures</a></td> <td>Enable/disable message signatures in channels</td> </tr> <tr> <td><a href="/method/channels.toggleSlowMode">channels.toggleSlowMode</a></td> <td>Toggle supergroup slow mode: if enabled, users will only be able to send one message every <code>seconds</code> seconds</td> </tr> <tr> <td><a href="/method/channels.toggleParticipantsHidden">channels.toggleParticipantsHidden</a></td> <td>Hide or display the participants list in a <a href="/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 <a href="/api/config#client-configuration">client configuration parameters »</a>.</td> </tr> </tbody> </table> <h3><a class="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"><i class="anchor-icon"></i></a>Working with <a href="/api/invites">chat invites and join requests</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.exportChatInvite">messages.exportChatInvite</a></td> <td>Export an invite link for a chat</td> </tr> <tr> <td><a href="/method/messages.getExportedChatInvite">messages.getExportedChatInvite</a></td> <td>Get info about a chat invite</td> </tr> <tr> <td><a href="/method/messages.getExportedChatInvites">messages.getExportedChatInvites</a></td> <td>Get info about the chat invites of a specific chat</td> </tr> <tr> <td><a href="/method/messages.editExportedChatInvite">messages.editExportedChatInvite</a></td> <td>Edit an exported chat invite</td> </tr> <tr> <td><a href="/method/messages.deleteRevokedExportedChatInvites">messages.deleteRevokedExportedChatInvites</a></td> <td>Delete all revoked chat invites</td> </tr> <tr> <td><a href="/method/messages.deleteExportedChatInvite">messages.deleteExportedChatInvite</a></td> <td>Delete a chat invite</td> </tr> <tr> <td><a href="/method/messages.getAdminsWithInvites">messages.getAdminsWithInvites</a></td> <td>Get info about chat invites generated by admins.</td> </tr> <tr> <td><a href="/method/messages.getChatInviteImporters">messages.getChatInviteImporters</a></td> <td>Get info about the users that joined the chat using a specific chat invite</td> </tr> <tr> <td><a href="/method/messages.checkChatInvite">messages.checkChatInvite</a></td> <td>Check the validity of a chat invite link and get basic info about it</td> </tr> <tr> <td><a href="/method/messages.importChatInvite">messages.importChatInvite</a></td> <td>Import a chat invite and join a private chat/supergroup/channel</td> </tr> <tr> <td><a href="/method/messages.hideChatJoinRequest">messages.hideChatJoinRequest</a></td> <td>Dismiss or approve a chat <a href="/api/invites#join-requests">join request</a> related to a specific chat or channel.</td> </tr> <tr> <td><a href="/method/messages.hideAllChatJoinRequests">messages.hideAllChatJoinRequests</a></td> <td>Dismiss or approve all <a href="/api/invites#join-requests">join requests</a> related to a specific chat or channel.</td> </tr> <tr> <td><a href="/method/channels.toggleJoinToSend">channels.toggleJoinToSend</a></td> <td>Set whether all users <a href="/api/discussion#requiring-users-to-join-the-group">should join a discussion group in order to comment on a post »</a></td> </tr> <tr> <td><a href="/method/channels.toggleJoinRequest">channels.toggleJoinRequest</a></td> <td>Set whether all users should <a href="/api/invites#join-requests">request admin approval to join the group »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-chats-supergroups-channels" id="working-with-chats-supergroups-channels" name="working-with-chats-supergroups-channels"><i class="anchor-icon"></i></a>Working with <a href="/api/channel">chats/supergroups/channels</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getMessageReadParticipants">messages.getMessageReadParticipants</a></td> <td>Get which users read a specific message: only available for groups and supergroups with less than <a href="/api/config#chat-read-mark-size-threshold"><code>chat_read_mark_size_threshold</code> members</a>, read receipts will be stored for <a href="/api/config#chat-read-mark-expire-period"><code>chat_read_mark_expire_period</code> seconds after the message was sent</a>, see <a href="/api/config#client-configuration">client configuration for more info »</a>.</td> </tr> <tr> <td><a href="/method/messages.addChatUser">messages.addChatUser</a></td> <td>Adds a user to a chat and sends a service message on it.</td> </tr> <tr> <td><a href="/method/messages.createChat">messages.createChat</a></td> <td>Creates a new chat.</td> </tr> <tr> <td><a href="/method/messages.deleteChatUser">messages.deleteChatUser</a></td> <td>Deletes a user from a chat and sends a service message on it.</td> </tr> <tr> <td><a href="/method/messages.editChatAbout">messages.editChatAbout</a></td> <td>Edit the description of a <a href="/api/channel">group/supergroup/channel</a>.</td> </tr> <tr> <td><a href="/method/messages.editChatAdmin">messages.editChatAdmin</a></td> <td>Make a user admin in a <a href="/api/channel#basic-groups">basic group</a>.</td> </tr> <tr> <td><a href="/method/messages.editChatDefaultBannedRights">messages.editChatDefaultBannedRights</a></td> <td>Edit the default banned rights of a <a href="/api/channel">channel/supergroup/group</a>.</td> </tr> <tr> <td><a href="/method/messages.editChatPhoto">messages.editChatPhoto</a></td> <td>Changes chat photo and sends a service message on it</td> </tr> <tr> <td><a href="/method/messages.editChatTitle">messages.editChatTitle</a></td> <td>Changes chat name and sends a service message on it.</td> </tr> <tr> <td><a href="/method/messages.getChats">messages.getChats</a></td> <td>Returns chat basic info on their IDs.</td> </tr> <tr> <td><a href="/method/messages.deleteChat">messages.deleteChat</a></td> <td>Delete a <a href="/api/channel">chat</a></td> </tr> <tr> <td><a href="/method/messages.getCommonChats">messages.getCommonChats</a></td> <td>Get chats in common with a user</td> </tr> <tr> <td><a href="/method/messages.getFullChat">messages.getFullChat</a></td> <td>Get full info about a <a href="/api/channel#basic-groups">basic group</a>.</td> </tr> <tr> <td><a href="/method/messages.migrateChat">messages.migrateChat</a></td> <td>Turn a <a href="/api/channel#migration">basic group into a supergroup</a></td> </tr> <tr> <td><a href="/method/channels.convertToGigagroup">channels.convertToGigagroup</a></td> <td>Convert a <a href="/api/channel">supergroup</a> to a <a href="/api/channel">gigagroup</a>, when requested by <a href="/api/config#channel-suggestions">channel suggestions</a>.</td> </tr> <tr> <td><a href="/method/channels.setEmojiStickers">channels.setEmojiStickers</a></td> <td>Set a <a href="/api/custom-emoji">custom emoji stickerset</a> for supergroups. Only usable after reaching at least the <a href="/api/boost">boost level »</a> specified in the <a href="/api/config#group-emoji-stickers-level-min"><code>group_emoji_stickers_level_min</code> »</a> config parameter.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-cloud-themes" id="working-with-cloud-themes" name="working-with-cloud-themes"><i class="anchor-icon"></i></a>Working with <a href="/api/themes">cloud themes</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.updateTheme">account.updateTheme</a></td> <td>Update theme</td> </tr> <tr> <td><a href="/method/account.uploadTheme">account.uploadTheme</a></td> <td>Upload theme</td> </tr> <tr> <td><a href="/method/account.getThemes">account.getThemes</a></td> <td>Get installed themes</td> </tr> <tr> <td><a href="/method/account.createTheme">account.createTheme</a></td> <td>Create a theme</td> </tr> <tr> <td><a href="/method/account.installTheme">account.installTheme</a></td> <td>Install a theme</td> </tr> <tr> <td><a href="/method/account.saveTheme">account.saveTheme</a></td> <td>Save a theme</td> </tr> <tr> <td><a href="/method/account.getTheme">account.getTheme</a></td> <td>Get theme information</td> </tr> <tr> <td><a href="/method/account.getChatThemes">account.getChatThemes</a></td> <td>Get all available chat <a href="/api/themes">themes »</a>.</td> </tr> <tr> <td><a href="/method/messages.setChatTheme">messages.setChatTheme</a></td> <td>Change the chat theme of a certain chat</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-custom-animated-emojis" id="working-with-custom-animated-emojis" name="working-with-custom-animated-emojis"><i class="anchor-icon"></i></a>Working with <a href="/api/custom-emoji">custom animated emojis</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getCustomEmojiDocuments">messages.getCustomEmojiDocuments</a></td> <td>Fetch <a href="/api/custom-emoji">custom emoji stickers »</a>.<br><br>Returns a list of <a href="/constructor/document">documents</a> with the animated custom emoji in TGS format, and a <a href="/constructor/documentAttributeCustomEmoji">documentAttributeCustomEmoji</a> attribute with the original emoji and info about the emoji stickerset this custom emoji belongs to.</td> </tr> <tr> <td><a href="/method/messages.getEmojiStickers">messages.getEmojiStickers</a></td> <td>Gets the list of currently installed <a href="/api/custom-emoji">custom emoji stickersets</a>.</td> </tr> <tr> <td><a href="/method/messages.getFeaturedEmojiStickers">messages.getFeaturedEmojiStickers</a></td> <td>Gets featured custom emoji stickersets.</td> </tr> <tr> <td><a href="/method/messages.searchCustomEmoji">messages.searchCustomEmoji</a></td> <td>Look for <a href="/api/custom-emoji">custom emojis</a> associated to a UTF8 emoji</td> </tr> <tr> <td><a href="/method/account.getDefaultProfilePhotoEmojis">account.getDefaultProfilePhotoEmojis</a></td> <td>Get a set of suggested <a href="/api/custom-emoji">custom emoji stickers</a> that can be <a href="/api/files#sticker-profile-pictures">used as profile picture</a></td> </tr> <tr> <td><a href="/method/account.getDefaultGroupPhotoEmojis">account.getDefaultGroupPhotoEmojis</a></td> <td>Get a set of suggested <a href="/api/custom-emoji">custom emoji stickers</a> that can be <a href="/api/files#sticker-profile-pictures">used as group picture</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-deep-links" id="working-with-deep-links" name="working-with-deep-links"><i class="anchor-icon"></i></a>Working with <a href="/api/links">deep links</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.startBot">messages.startBot</a></td> <td>Start a conversation with a bot using a <a href="/api/links#bot-links">deep linking parameter</a></td> </tr> <tr> <td><a href="/method/help.getDeepLinkInfo">help.getDeepLinkInfo</a></td> <td>Get info about an unsupported deep link, see <a href="/api/links#unsupported-links">here for more info »</a>.</td> </tr> <tr> <td><a href="/method/help.getRecentMeUrls">help.getRecentMeUrls</a></td> <td>Get recently used <code>t.me</code> links.<br><br>When installing official applications from "Download Telegram" buttons present in <a href="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 <a href="https://t.me">t.me</a> pages the user recently opened, before installing Telegram.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-drafts" id="working-with-drafts" name="working-with-drafts"><i class="anchor-icon"></i></a>Working with <a href="/api/drafts">drafts</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.clearAllDrafts">messages.clearAllDrafts</a></td> <td>Clear all <a href="/api/drafts">drafts</a>.</td> </tr> <tr> <td><a href="/method/messages.getAllDrafts">messages.getAllDrafts</a></td> <td>Return all message <a href="/api/drafts">drafts</a>. <br>Returns all the latest <a href="/constructor/updateDraftMessage">updateDraftMessage</a> updates related to all chats with drafts.</td> </tr> <tr> <td><a href="/method/messages.saveDraft">messages.saveDraft</a></td> <td>Save a message <a href="/api/drafts">draft</a> associated to a chat.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-emoji-categories" id="working-with-emoji-categories" name="working-with-emoji-categories"><i class="anchor-icon"></i></a>Working with <a href="/api/emoji-categories">emoji categories</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getEmojiStickerGroups">messages.getEmojiStickerGroups</a></td> <td>Represents a list of <a href="/api/emoji-categories">emoji categories</a>, to be used when choosing a sticker.</td> </tr> <tr> <td><a href="/method/messages.getEmojiGroups">messages.getEmojiGroups</a></td> <td>Represents a list of <a href="/api/emoji-categories">emoji categories</a>.</td> </tr> <tr> <td><a href="/method/messages.getEmojiStatusGroups">messages.getEmojiStatusGroups</a></td> <td>Represents a list of <a href="/api/emoji-categories">emoji categories</a>, to be used when selecting custom emojis to set as <a href="/api">custom emoji status</a>.</td> </tr> <tr> <td><a href="/method/messages.getEmojiProfilePhotoGroups">messages.getEmojiProfilePhotoGroups</a></td> <td>Represents a list of <a href="/api/emoji-categories">emoji categories</a>, to be used when selecting custom emojis to set as <a href="/api/files#sticker-profile-pictures">profile picture</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-emoji-keywords" id="working-with-emoji-keywords" name="working-with-emoji-keywords"><i class="anchor-icon"></i></a>Working with <a href="/api/custom-emoji#emoji-keywords">emoji keywords</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getEmojiKeywords">messages.getEmojiKeywords</a></td> <td>Get localized <a href="/api/custom-emoji#emoji-keywords">emoji keywords »</a>.</td> </tr> <tr> <td><a href="/method/messages.getEmojiKeywordsDifference">messages.getEmojiKeywordsDifference</a></td> <td>Get changed <a href="/api/custom-emoji#emoji-keywords">emoji keywords »</a>.</td> </tr> <tr> <td><a href="/method/messages.getEmojiKeywordsLanguages">messages.getEmojiKeywordsLanguages</a></td> <td>Obtain a list of related languages that must be used when fetching <a href="/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> </tr> <tr> <td><a href="/method/messages.getEmojiURL">messages.getEmojiURL</a></td> <td>Returns an HTTP URL which can be used to automatically log in into translation platform and suggest new <a href="/api/custom-emoji#emoji-keywords">emoji keywords »</a>. The URL will be valid for 30 seconds after generation.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-emoji-statuses" id="working-with-emoji-statuses" name="working-with-emoji-statuses"><i class="anchor-icon"></i></a>Working with <a href="/api/emoji-status">emoji statuses</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.updateEmojiStatus">account.updateEmojiStatus</a></td> <td>Set an <a href="/api/emoji-status">emoji status</a></td> </tr> <tr> <td><a href="/method/channels.updateEmojiStatus">channels.updateEmojiStatus</a></td> <td>Set an <a href="/api/emoji-status">emoji status</a> for a channel or supergroup.</td> </tr> <tr> <td><a href="/method/account.getDefaultEmojiStatuses">account.getDefaultEmojiStatuses</a></td> <td>Get a list of default suggested <a href="/api/emoji-status">emoji statuses</a></td> </tr> <tr> <td><a href="/method/account.getChannelDefaultEmojiStatuses">account.getChannelDefaultEmojiStatuses</a></td> <td>Get a list of default suggested <a href="/api/emoji-status">channel emoji statuses</a>.</td> </tr> <tr> <td><a href="/method/account.getChannelRestrictedStatusEmojis">account.getChannelRestrictedStatusEmojis</a></td> <td>Returns fetch the full list of <a href="/api/custom-emoji">custom emoji IDs »</a> that cannot be used in <a href="/api/emoji-status">channel emoji statuses »</a>.</td> </tr> <tr> <td><a href="/method/account.getRecentEmojiStatuses">account.getRecentEmojiStatuses</a></td> <td>Get recently used <a href="/api/emoji-status">emoji statuses</a></td> </tr> <tr> <td><a href="/method/account.clearRecentEmojiStatuses">account.clearRecentEmojiStatuses</a></td> <td>Clears list of recently used <a href="/api/emoji-status">emoji statuses</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-fact-checks" id="working-with-fact-checks" name="working-with-fact-checks"><i class="anchor-icon"></i></a>Working with <a href="/api/factcheck">fact-checks</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.editFactCheck">messages.editFactCheck</a></td> <td>Edit/create a <a href="/api/factcheck">fact-check</a> on a message.<br><br>Can only be used by independent fact-checkers as specified by the <a href="/api/config#can-edit-factcheck">appConfig.can_edit_factcheck</a> configuration flag.</td> </tr> <tr> <td><a href="/method/messages.deleteFactCheck">messages.deleteFactCheck</a></td> <td>Delete a <a href="/api/factcheck">fact-check</a> from a message.<br><br>Can only be used by independent fact-checkers as specified by the <a href="/api/config#can-edit-factcheck">appConfig.can_edit_factcheck</a> configuration flag.</td> </tr> <tr> <td><a href="/method/messages.getFactCheck">messages.getFactCheck</a></td> <td>Fetch one or more <a href="/api/factcheck">factchecks, see here »</a> for the full flow.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-files" id="working-with-files" name="working-with-files"><i class="anchor-icon"></i></a>Working with <a href="/api/files">files</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/help.getCdnConfig">help.getCdnConfig</a></td> <td>Get configuration for <a href="/cdn">CDN</a> file downloads.</td> </tr> <tr> <td><a href="/method/upload.getCdnFile">upload.getCdnFile</a></td> <td>Download a <a href="/cdn">CDN</a> file.</td> </tr> <tr> <td><a href="/method/upload.getCdnFileHashes">upload.getCdnFileHashes</a></td> <td>Get SHA256 hashes for verifying downloaded <a href="/cdn">CDN</a> files</td> </tr> <tr> <td><a href="/method/upload.reuploadCdnFile">upload.reuploadCdnFile</a></td> <td>Request a reupload of a certain file to a <a href="/cdn">CDN DC</a>.</td> </tr> <tr> <td><a href="/method/upload.getFile">upload.getFile</a></td> <td>Returns content of a whole file or its part.</td> </tr> <tr> <td><a href="/method/upload.getFileHashes">upload.getFileHashes</a></td> <td>Get SHA256 hashes for verifying downloaded files</td> </tr> <tr> <td><a href="/method/upload.getWebFile">upload.getWebFile</a></td> <td>Returns content of a web file, by proxying the request through telegram, see the <a href="/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> <a href="/api/config#mtproto-configuration">MTProto configuration field</a>.</td> </tr> <tr> <td><a href="/method/upload.saveBigFilePart">upload.saveBigFilePart</a></td> <td>Saves a part of a large file (over 10 MB in size) to be later passed to one of the methods.</td> </tr> <tr> <td><a href="/method/upload.saveFilePart">upload.saveFilePart</a></td> <td>Saves a part of file for further sending to one of the methods.</td> </tr> <tr> <td><a href="/method/messages.uploadEncryptedFile">messages.uploadEncryptedFile</a></td> <td>Upload encrypted file and associate it to a secret chat</td> </tr> <tr> <td><a href="/method/messages.uploadMedia">messages.uploadMedia</a></td> <td>Upload a file and associate it to a chat (without actually sending it to the chat)</td> </tr> <tr> <td><a href="/method/messages.getDocumentByHash">messages.getDocumentByHash</a></td> <td>Get a document by its SHA256 hash, mainly used for gifs</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-folder-tags" id="working-with-folder-tags" name="working-with-folder-tags"><i class="anchor-icon"></i></a>Working with <a href="/api/folders#folder-tags">folder tags</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.toggleDialogFilterTags">messages.toggleDialogFilterTags</a></td> <td>Enable or disable <a href="/api/folders#folder-tags">folder tags »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-folders" id="working-with-folders" name="working-with-folders"><i class="anchor-icon"></i></a>Working with <a href="/api/folders">folders</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.updateDialogFiltersOrder">messages.updateDialogFiltersOrder</a></td> <td>Reorder <a href="/api/folders">folders</a></td> </tr> <tr> <td><a href="/method/messages.getDialogFilters">messages.getDialogFilters</a></td> <td>Get <a href="/api/folders">folders</a></td> </tr> <tr> <td><a href="/method/messages.getSuggestedDialogFilters">messages.getSuggestedDialogFilters</a></td> <td>Get <a href="/api/folders">suggested folders</a></td> </tr> <tr> <td><a href="/method/messages.updateDialogFilter">messages.updateDialogFilter</a></td> <td>Update <a href="/api/folders">folder</a></td> </tr> <tr> <td><a href="/method/folders.editPeerFolders">folders.editPeerFolders</a></td> <td>Edit peers in <a href="/api/folders#peer-folders">peer folder</a></td> </tr> <tr> <td><a href="/method/chatlists.exportChatlistInvite">chatlists.exportChatlistInvite</a></td> <td>Export a <a href="/api/folders">folder »</a>, creating a <a href="/api/links#chat-folder-links">chat folder deep link »</a>.</td> </tr> <tr> <td><a href="/method/chatlists.deleteExportedInvite">chatlists.deleteExportedInvite</a></td> <td>Delete a previously created <a href="/api/links#chat-folder-links">chat folder deep link »</a>.</td> </tr> <tr> <td><a href="/method/chatlists.editExportedInvite">chatlists.editExportedInvite</a></td> <td>Edit a <a href="/api/links#chat-folder-links">chat folder deep link »</a>.</td> </tr> <tr> <td><a href="/method/chatlists.getExportedInvites">chatlists.getExportedInvites</a></td> <td>List all <a href="/api/links#chat-folder-links">chat folder deep links »</a> associated to a folder</td> </tr> <tr> <td><a href="/method/chatlists.checkChatlistInvite">chatlists.checkChatlistInvite</a></td> <td>Obtain information about a <a href="/api/links#chat-folder-links">chat folder deep link »</a>.</td> </tr> <tr> <td><a href="/method/chatlists.joinChatlistInvite">chatlists.joinChatlistInvite</a></td> <td>Import a <a href="/api/links#chat-folder-links">chat folder deep link »</a>, joining some or all the chats in the folder.</td> </tr> <tr> <td><a href="/method/chatlists.getChatlistUpdates">chatlists.getChatlistUpdates</a></td> <td>Fetch new chats associated with an imported <a href="/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 <a href="/api/config#chatlist-update-period">client configuration parameter »</a>).</td> </tr> <tr> <td><a href="/method/chatlists.joinChatlistUpdates">chatlists.joinChatlistUpdates</a></td> <td>Join channels and supergroups recently added to a <a href="/api/links#chat-folder-links">chat folder deep link »</a>.</td> </tr> <tr> <td><a href="/method/chatlists.hideChatlistUpdates">chatlists.hideChatlistUpdates</a></td> <td>Dismiss new pending peers recently added to a <a href="/api/links#chat-folder-links">chat folder deep link »</a>.</td> </tr> <tr> <td><a href="/method/chatlists.getLeaveChatlistSuggestions">chatlists.getLeaveChatlistSuggestions</a></td> <td>Returns identifiers of pinned or always included chats from a chat folder imported using a <a href="/api/links#chat-folder-links">chat folder deep link »</a>, which are suggested to be left when the chat folder is deleted.</td> </tr> <tr> <td><a href="/method/chatlists.leaveChatlist">chatlists.leaveChatlist</a></td> <td>Delete a folder imported using a <a href="/api/links#chat-folder-links">chat folder deep link »</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-forums" id="working-with-forums" name="working-with-forums"><i class="anchor-icon"></i></a>Working with <a href="/api/forum">forums</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/channels.toggleForum">channels.toggleForum</a></td> <td>Enable or disable <a href="/api/forum">forum functionality</a> in a supergroup.</td> </tr> <tr> <td><a href="/method/channels.createForumTopic">channels.createForumTopic</a></td> <td>Create a <a href="/api/forum">forum topic</a>; requires <a href="/api/rights"><code>manage_topics</code> rights</a>.</td> </tr> <tr> <td><a href="/method/channels.getForumTopics">channels.getForumTopics</a></td> <td>Get <a href="/api/forum">topics of a forum</a></td> </tr> <tr> <td><a href="/method/channels.getForumTopicsByID">channels.getForumTopicsByID</a></td> <td>Get forum topics by their ID</td> </tr> <tr> <td><a href="/method/channels.editForumTopic">channels.editForumTopic</a></td> <td>Edit <a href="/api/forum">forum topic</a>; requires <a href="/api/rights"><code>manage_topics</code> rights</a>.</td> </tr> <tr> <td><a href="/method/channels.updatePinnedForumTopic">channels.updatePinnedForumTopic</a></td> <td>Pin or unpin <a href="/api/forum">forum topics</a></td> </tr> <tr> <td><a href="/method/channels.reorderPinnedForumTopics">channels.reorderPinnedForumTopics</a></td> <td>Reorder pinned forum topics</td> </tr> <tr> <td><a href="/method/channels.deleteTopicHistory">channels.deleteTopicHistory</a></td> <td>Delete message history of a <a href="/api/forum">forum topic</a></td> </tr> <tr> <td><a href="/method/channels.toggleViewForumAsMessages">channels.toggleViewForumAsMessages</a></td> <td>Users may also choose to display messages from all topics of a <a href="/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 <a href="/constructor/channelFull">channelFull</a> or <a href="/constructor/dialog">dialog</a> and emit an <a href="/constructor/updateChannelViewForumAsMessages">updateChannelViewForumAsMessages</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-fragmentcom-usernames" id="working-with-fragmentcom-usernames" name="working-with-fragmentcom-usernames"><i class="anchor-icon"></i></a>Working with <a href="/api/fragment">fragment.com usernames</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.reorderUsernames">account.reorderUsernames</a></td> <td>Reorder usernames associated with the currently logged-in user.</td> </tr> <tr> <td><a href="/method/account.toggleUsername">account.toggleUsername</a></td> <td>Activate or deactivate a purchased <a href="https://fragment.com">fragment.com</a> username associated to the currently logged-in user.</td> </tr> <tr> <td><a href="/method/bots.reorderUsernames">bots.reorderUsernames</a></td> <td>Reorder usernames associated to a bot we own.</td> </tr> <tr> <td><a href="/method/bots.toggleUsername">bots.toggleUsername</a></td> <td>Activate or deactivate a purchased <a href="https://fragment.com">fragment.com</a> username associated to a bot we own.</td> </tr> <tr> <td><a href="/method/channels.reorderUsernames">channels.reorderUsernames</a></td> <td>Reorder active usernames</td> </tr> <tr> <td><a href="/method/channels.toggleUsername">channels.toggleUsername</a></td> <td>Activate or deactivate a purchased <a href="https://fragment.com">fragment.com</a> username associated to a <a href="/api/channel">supergroup or channel</a> we own.</td> </tr> <tr> <td><a href="/method/channels.deactivateAllUsernames">channels.deactivateAllUsernames</a></td> <td>Disable all purchased usernames of a supergroup or channel</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-games" id="working-with-games" name="working-with-games"><i class="anchor-icon"></i></a>Working with <a href="/api/bots/games">games</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getGameHighScores">messages.getGameHighScores</a></td> <td>Get highscores of a game</td> </tr> <tr> <td><a href="/method/messages.getInlineGameHighScores">messages.getInlineGameHighScores</a></td> <td>Get highscores of a game sent using an inline bot</td> </tr> <tr> <td><a href="/method/messages.setGameScore">messages.setGameScore</a></td> <td>Use this method to set the score of the specified user in a game sent as a normal message (bots only).</td> </tr> <tr> <td><a href="/method/messages.setInlineGameScore">messages.setInlineGameScore</a></td> <td>Use this method to set the score of the specified user in a game sent as an inline message (bots only).</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-gift-codes" id="working-with-gift-codes" name="working-with-gift-codes"><i class="anchor-icon"></i></a>Working with <a href="/api/links#premium-giftcode-links">gift codes</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/payments.checkGiftCode">payments.checkGiftCode</a></td> <td>Obtain information about a <a href="/api/giveaways">Telegram Premium giftcode »</a></td> </tr> <tr> <td><a href="/method/payments.applyGiftCode">payments.applyGiftCode</a></td> <td>Apply a <a href="/api/giveaways">Telegram Premium giftcode »</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-giveaways-amp-gifts" id="working-with-giveaways-amp-gifts" name="working-with-giveaways-amp-gifts"><i class="anchor-icon"></i></a>Working with <a href="/api/giveaways">giveaways & gifts</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/payments.getPremiumGiftCodeOptions">payments.getPremiumGiftCodeOptions</a></td> <td>Obtain a list of Telegram Premium <a href="/api/giveaways">giveaway/gift code »</a> options.</td> </tr> <tr> <td><a href="/method/payments.getGiveawayInfo">payments.getGiveawayInfo</a></td> <td>Obtain information about a <a href="/api/giveaways">Telegram Premium giveaway »</a>.</td> </tr> <tr> <td><a href="/method/payments.launchPrepaidGiveaway">payments.launchPrepaidGiveaway</a></td> <td>Launch a <a href="/api/giveaways">prepaid giveaway »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-instant-view-pages" id="working-with-instant-view-pages" name="working-with-instant-view-pages"><i class="anchor-icon"></i></a>Working with <a href="https://instantview.telegram.org">instant view pages</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getWebPage">messages.getWebPage</a></td> <td>Get <a href="https://instantview.telegram.org">instant view</a> page</td> </tr> <tr> <td><a href="/method/messages.getWebPagePreview">messages.getWebPagePreview</a></td> <td>Get preview of webpage</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-message-effects" id="working-with-message-effects" name="working-with-message-effects"><i class="anchor-icon"></i></a>Working with <a href="/api/effects">message effects</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getAvailableEffects">messages.getAvailableEffects</a></td> <td>Fetch the full list of usable <a href="/api/effects">animated message effects »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-message-reactions" id="working-with-message-reactions" name="working-with-message-reactions"><i class="anchor-icon"></i></a>Working with <a href="/api/reactions">message reactions</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.setDefaultReaction">messages.setDefaultReaction</a></td> <td>Change default emoji reaction to use in the quick reaction menu: the value is synced across devices and can be fetched using <a href="/method/help.getConfig">help.getConfig, <code>reactions_default</code> field</a>.</td> </tr> <tr> <td><a href="/method/messages.getMessagesReactions">messages.getMessagesReactions</a></td> <td>Get <a href="/api/reactions">message reactions »</a></td> </tr> <tr> <td><a href="/method/messages.sendReaction">messages.sendReaction</a></td> <td>React to message.<br><br>Starting from layer 159, the reaction will be sent from the peer specified using <a href="/method/messages.saveDefaultSendAs">messages.saveDefaultSendAs</a>.</td> </tr> <tr> <td><a href="/method/messages.getAvailableReactions">messages.getAvailableReactions</a></td> <td>Obtain available <a href="/api/reactions">message reactions »</a></td> </tr> <tr> <td><a href="/method/messages.getUnreadReactions">messages.getUnreadReactions</a></td> <td>Get unread reactions to messages you sent</td> </tr> <tr> <td><a href="/method/messages.readReactions">messages.readReactions</a></td> <td>Mark <a href="/api/reactions">message reactions »</a> as read</td> </tr> <tr> <td><a href="/method/messages.setChatAvailableReactions">messages.setChatAvailableReactions</a></td> <td>Change the set of <a href="/api/reactions">message reactions »</a> that can be used in a certain group, supergroup or channel</td> </tr> <tr> <td><a href="/method/messages.getMessageReactionsList">messages.getMessageReactionsList</a></td> <td>Get <a href="/api/reactions">message reaction</a> list, along with the sender of each reaction.</td> </tr> <tr> <td><a href="/method/messages.reportReaction">messages.reportReaction</a></td> <td>Report a <a href="/api/reactions">message reaction</a></td> </tr> <tr> <td><a href="/method/messages.getTopReactions">messages.getTopReactions</a></td> <td>Got popular <a href="/api/reactions">message reactions</a></td> </tr> <tr> <td><a href="/method/messages.getRecentReactions">messages.getRecentReactions</a></td> <td>Get recently used <a href="/api/reactions">message reactions</a></td> </tr> <tr> <td><a href="/method/messages.clearRecentReactions">messages.clearRecentReactions</a></td> <td>Clear recently used <a href="/api/reactions">message reactions</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-message-translation" id="working-with-message-translation" name="working-with-message-translation"><i class="anchor-icon"></i></a>Working with <a href="/api/translation">message translation</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.translateText">messages.translateText</a></td> <td>Translate a given text.<br><br><a href="/api/entities">Styled text entities</a> will only be preserved for <a href="/api/premium">Telegram Premium</a> users.</td> </tr> <tr> <td><a href="/method/messages.togglePeerTranslations">messages.togglePeerTranslations</a></td> <td>Show or hide the <a href="/api/translation">real-time chat translation popup</a> for a certain chat</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-paid-media" id="working-with-paid-media" name="working-with-paid-media"><i class="anchor-icon"></i></a>Working with <a href="/api/paid-media">paid media</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getExtendedMedia">messages.getExtendedMedia</a></td> <td>Fetch updated information about <a href="/api/paid-media">paid media, see here »</a> for the full flow.<br><br>This method will return an array of <a href="/constructor/updateMessageExtendedMedia">updateMessageExtendedMedia</a> updates, only for messages containing <strong>already bought</strong> paid media. <br>No information will be returned for messages containing not yet bought paid media.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-reaction-notification-settings-" id="working-with-reaction-notification-settings-" name="working-with-reaction-notification-settings-"><i class="anchor-icon"></i></a>Working with <a href="/api/reactions#notifications-about-reactions">reaction notification settings »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.getReactionsNotifySettings">account.getReactionsNotifySettings</a></td> <td>Get the current <a href="/api/reactions#notifications-about-reactions">reaction notification settings »</a>.</td> </tr> <tr> <td><a href="/method/account.setReactionsNotifySettings">account.setReactionsNotifySettings</a></td> <td>Change the <a href="/api/reactions#notifications-about-reactions">reaction notification settings »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-saved-message-dialogs-" id="working-with-saved-message-dialogs-" name="working-with-saved-message-dialogs-"><i class="anchor-icon"></i></a>Working with <a href="/api/saved-messages">saved message dialogs »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getSavedDialogs">messages.getSavedDialogs</a></td> <td>Returns the current saved dialog list, see <a href="/api/saved-messages">here »</a> for more info.</td> </tr> <tr> <td><a href="/method/messages.getSavedHistory">messages.getSavedHistory</a></td> <td>Returns <a href="/api/saved-messages">saved messages »</a> forwarded from a specific peer</td> </tr> <tr> <td><a href="/method/messages.deleteSavedHistory">messages.deleteSavedHistory</a></td> <td>Deletes messages forwarded from a specific peer to <a href="/api/saved-messages">saved messages »</a>.</td> </tr> <tr> <td><a href="/method/messages.getPinnedSavedDialogs">messages.getPinnedSavedDialogs</a></td> <td>Get pinned <a href="/api/saved-messages">saved dialogs, see here »</a> for more info.</td> </tr> <tr> <td><a href="/method/messages.toggleSavedDialogPin">messages.toggleSavedDialogPin</a></td> <td>Pin or unpin a <a href="/api/saved-messages">saved message dialog »</a>.</td> </tr> <tr> <td><a href="/method/messages.reorderPinnedSavedDialogs">messages.reorderPinnedSavedDialogs</a></td> <td>Reorder pinned <a href="/api/saved-messages">saved message dialogs »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-saved-message-tags-" id="working-with-saved-message-tags-" name="working-with-saved-message-tags-"><i class="anchor-icon"></i></a>Working with <a href="/api/saved-messages#tags">saved message tags »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getSavedReactionTags">messages.getSavedReactionTags</a></td> <td>Fetch the full list of <a href="/api/saved-messages#tags">saved message tags</a> created by the user.</td> </tr> <tr> <td><a href="/method/messages.updateSavedReactionTag">messages.updateSavedReactionTag</a></td> <td>Update the <a href="/api/saved-messages#tags">description of a saved message tag »</a>.</td> </tr> <tr> <td><a href="/method/messages.getDefaultTagReactions">messages.getDefaultTagReactions</a></td> <td>Fetch a default recommended list of <a href="/api/saved-messages#tags">saved message tag reactions</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-secret-chats" id="working-with-secret-chats" name="working-with-secret-chats"><i class="anchor-icon"></i></a>Working with <a href="/api/end-to-end">secret chats</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.setEncryptedTyping">messages.setEncryptedTyping</a></td> <td>Send typing event by the current user to a secret chat.</td> </tr> <tr> <td><a href="/method/messages.readEncryptedHistory">messages.readEncryptedHistory</a></td> <td>Marks message history within a secret chat as read.</td> </tr> <tr> <td><a href="/method/messages.acceptEncryption">messages.acceptEncryption</a></td> <td>Confirms creation of a secret chat</td> </tr> <tr> <td><a href="/method/messages.discardEncryption">messages.discardEncryption</a></td> <td>Cancels a request for creation and/or delete info on secret chat.</td> </tr> <tr> <td><a href="/method/messages.requestEncryption">messages.requestEncryption</a></td> <td>Sends a request to start a secret chat to the user.</td> </tr> <tr> <td><a href="/method/messages.sendEncrypted">messages.sendEncrypted</a></td> <td>Sends a text message to a secret chat.</td> </tr> <tr> <td><a href="/method/messages.sendEncryptedFile">messages.sendEncryptedFile</a></td> <td>Sends a message with a file attachment to a secret chat</td> </tr> <tr> <td><a href="/method/messages.sendEncryptedService">messages.sendEncryptedService</a></td> <td>Sends a service message to a secret chat.</td> </tr> <tr> <td><a href="/method/messages.getDhConfig">messages.getDhConfig</a></td> <td>Returns configuration parameters for Diffie-Hellman key generation. Can also return a random sequence of bytes of required length.</td> </tr> <tr> <td><a href="/method/messages.receivedQueue">messages.receivedQueue</a></td> <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> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-statistics" id="working-with-statistics" name="working-with-statistics"><i class="anchor-icon"></i></a>Working with <a href="/api/stats">statistics</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/stats.loadAsyncGraph">stats.loadAsyncGraph</a></td> <td>Load <a href="/api/stats">channel statistics graph</a> asynchronously</td> </tr> <tr> <td><a href="/method/stats.getBroadcastStats">stats.getBroadcastStats</a></td> <td>Get <a href="/api/stats">channel statistics</a></td> </tr> <tr> <td><a href="/method/stats.getMessagePublicForwards">stats.getMessagePublicForwards</a></td> <td>Obtains a list of messages, indicating to which other public channels was a channel message forwarded. <br>Will return a list of <a href="/constructor/message">messages</a> with <code>peer_id</code> equal to the public channel to which this message was forwarded.</td> </tr> <tr> <td><a href="/method/stats.getMegagroupStats">stats.getMegagroupStats</a></td> <td>Get <a href="/api/stats">supergroup statistics</a></td> </tr> <tr> <td><a href="/method/stats.getMessageStats">stats.getMessageStats</a></td> <td>Get <a href="/api/stats">message statistics</a></td> </tr> <tr> <td><a href="/method/stats.getStoryStats">stats.getStoryStats</a></td> <td>Get <a href="/api/stats">statistics</a> for a certain <a href="/api/stories">story</a>.</td> </tr> <tr> <td><a href="/method/stats.getStoryPublicForwards">stats.getStoryPublicForwards</a></td> <td>Obtain forwards of a <a href="/api/stories">story</a> as a message to public chats and reposts by public channels.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-stickers-" id="working-with-stickers-" name="working-with-stickers-"><i class="anchor-icon"></i></a>Working with <a href="/api/stickers">stickers »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getOldFeaturedStickers">messages.getOldFeaturedStickers</a></td> <td>Method for fetching previously featured stickers</td> </tr> <tr> <td><a href="/method/messages.toggleStickerSets">messages.toggleStickerSets</a></td> <td>Apply changes to multiple stickersets</td> </tr> <tr> <td><a href="/method/stickers.suggestShortName">stickers.suggestShortName</a></td> <td>Suggests a short name for a given stickerpack name</td> </tr> <tr> <td><a href="/method/stickers.replaceSticker">stickers.replaceSticker</a></td> <td>Replace a sticker in a <a href="/api/stickers">stickerset »</a>.</td> </tr> <tr> <td><a href="/method/stickers.checkShortName">stickers.checkShortName</a></td> <td>Check whether the given short name is available</td> </tr> <tr> <td><a href="/method/stickers.setStickerSetThumb">stickers.setStickerSetThumb</a></td> <td>Set stickerset thumbnail</td> </tr> <tr> <td><a href="/method/stickers.addStickerToSet">stickers.addStickerToSet</a></td> <td>Add a sticker to a stickerset. The sticker set must have been created by the current user/bot.</td> </tr> <tr> <td><a href="/method/stickers.changeStickerPosition">stickers.changeStickerPosition</a></td> <td>Changes the absolute position of a sticker in the set to which it belongs. The sticker set must have been created by the current user/bot.</td> </tr> <tr> <td><a href="/method/stickers.createStickerSet">stickers.createStickerSet</a></td> <td>Create a stickerset.</td> </tr> <tr> <td><a href="/method/stickers.changeSticker">stickers.changeSticker</a></td> <td>Update the keywords, emojis or <a href="/api/stickers#mask-stickers">mask coordinates</a> of a sticker.</td> </tr> <tr> <td><a href="/method/stickers.renameStickerSet">stickers.renameStickerSet</a></td> <td>Renames a stickerset.</td> </tr> <tr> <td><a href="/method/stickers.deleteStickerSet">stickers.deleteStickerSet</a></td> <td>Deletes a stickerset we created.</td> </tr> <tr> <td><a href="/method/messages.getMyStickers">messages.getMyStickers</a></td> <td>Fetch all <a href="/api/stickers">stickersets »</a> owned by the current user.</td> </tr> <tr> <td><a href="/method/stickers.removeStickerFromSet">stickers.removeStickerFromSet</a></td> <td>Remove a sticker from the set where it belongs. The sticker set must have been created by the current user/bot.</td> </tr> <tr> <td><a href="/method/messages.clearRecentStickers">messages.clearRecentStickers</a></td> <td>Clear recent stickers</td> </tr> <tr> <td><a href="/method/messages.faveSticker">messages.faveSticker</a></td> <td>Mark or unmark a sticker as favorite</td> </tr> <tr> <td><a href="/method/messages.getAllStickers">messages.getAllStickers</a></td> <td>Get all installed stickers</td> </tr> <tr> <td><a href="/method/messages.getArchivedStickers">messages.getArchivedStickers</a></td> <td>Get all archived stickers</td> </tr> <tr> <td><a href="/method/messages.getAttachedStickers">messages.getAttachedStickers</a></td> <td>Get stickers attached to a photo or video</td> </tr> <tr> <td><a href="/method/messages.getFavedStickers">messages.getFavedStickers</a></td> <td>Get faved stickers</td> </tr> <tr> <td><a href="/method/messages.getFeaturedStickers">messages.getFeaturedStickers</a></td> <td>Get featured stickers</td> </tr> <tr> <td><a href="/method/messages.getMaskStickers">messages.getMaskStickers</a></td> <td>Get installed mask stickers</td> </tr> <tr> <td><a href="/method/messages.getRecentStickers">messages.getRecentStickers</a></td> <td>Get recent stickers</td> </tr> <tr> <td><a href="/method/messages.getStickerSet">messages.getStickerSet</a></td> <td>Get info about a stickerset</td> </tr> <tr> <td><a href="/method/messages.getStickers">messages.getStickers</a></td> <td>Get stickers by emoji</td> </tr> <tr> <td><a href="/method/messages.saveRecentSticker">messages.saveRecentSticker</a></td> <td>Add/remove sticker from recent stickers list</td> </tr> <tr> <td><a href="/method/messages.installStickerSet">messages.installStickerSet</a></td> <td>Install a stickerset</td> </tr> <tr> <td><a href="/method/messages.readFeaturedStickers">messages.readFeaturedStickers</a></td> <td>Mark new featured stickers as read</td> </tr> <tr> <td><a href="/method/messages.reorderStickerSets">messages.reorderStickerSets</a></td> <td>Reorder installed stickersets</td> </tr> <tr> <td><a href="/method/messages.searchStickerSets">messages.searchStickerSets</a></td> <td>Search for stickersets</td> </tr> <tr> <td><a href="/method/messages.searchEmojiStickerSets">messages.searchEmojiStickerSets</a></td> <td>Search for <a href="/api/custom-emoji">custom emoji stickersets »</a></td> </tr> <tr> <td><a href="/method/messages.uninstallStickerSet">messages.uninstallStickerSet</a></td> <td>Uninstall a stickerset</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-stories" id="working-with-stories" name="working-with-stories"><i class="anchor-icon"></i></a>Working with <a href="/api/stories">stories</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/stories.searchPosts">stories.searchPosts</a></td> <td>Globally search for <a href="/api/stories">stories</a> using a hashtag or a <a href="/api/stories#location-tags">location media area</a>, see <a href="/api/stories#searching-stories">here »</a> for more info on the full flow.<br><br>Either <code>hashtag</code> <strong>or</strong> <code>area</code> <strong>must</strong> be set when invoking the method.</td> </tr> <tr> <td><a href="/method/stories.canSendStory">stories.canSendStory</a></td> <td>Check whether we can post stories as the specified peer.</td> </tr> <tr> <td><a href="/method/stories.sendStory">stories.sendStory</a></td> <td>Uploads a <a href="/api/stories">Telegram Story</a>.</td> </tr> <tr> <td><a href="/method/stories.editStory">stories.editStory</a></td> <td>Edit an uploaded <a href="/api/stories">story</a></td> </tr> <tr> <td><a href="/method/stories.deleteStories">stories.deleteStories</a></td> <td>Deletes some posted <a href="/api/stories">stories</a>.</td> </tr> <tr> <td><a href="/method/stories.togglePinnedToTop">stories.togglePinnedToTop</a></td> <td>Pin some stories to the top of the profile, see <a href="/api/stories#pinned-or-archived-stories">here »</a> for more info.</td> </tr> <tr> <td><a href="/method/stories.togglePinned">stories.togglePinned</a></td> <td>Pin or unpin one or more stories</td> </tr> <tr> <td><a href="/method/stories.getAllStories">stories.getAllStories</a></td> <td>Fetch the List of active (or active and hidden) stories, see <a href="/api/stories#watching-stories">here »</a> for more info on watching stories.</td> </tr> <tr> <td><a href="/method/stories.getPinnedStories">stories.getPinnedStories</a></td> <td>Fetch the <a href="/api/stories#pinned-or-archived-stories">stories</a> pinned on a peer's profile.</td> </tr> <tr> <td><a href="/method/stories.getStoriesArchive">stories.getStoriesArchive</a></td> <td>Fetch the <a href="/api/stories#pinned-or-archived-stories">story archive »</a> of a peer we control.</td> </tr> <tr> <td><a href="/method/stories.getStoriesByID">stories.getStoriesByID</a></td> <td>Obtain full info about a set of <a href="/api/stories">stories</a> by their IDs.</td> </tr> <tr> <td><a href="/method/stories.toggleAllStoriesHidden">stories.toggleAllStoriesHidden</a></td> <td>Hide the active stories of a specific peer, preventing them from being displayed on the action bar on the homescreen.</td> </tr> <tr> <td><a href="/method/stories.readStories">stories.readStories</a></td> <td>Mark all stories up to a certain ID as read, for a given peer; will emit an <a href="/constructor/updateReadStories">updateReadStories</a> update to all logged-in sessions.</td> </tr> <tr> <td><a href="/method/stories.incrementStoryViews">stories.incrementStoryViews</a></td> <td>Increment the view counter of one or more stories.</td> </tr> <tr> <td><a href="/method/stories.getStoryViewsList">stories.getStoryViewsList</a></td> <td>Obtain the list of users that have viewed a specific <a href="/api/stories">story we posted</a></td> </tr> <tr> <td><a href="/method/stories.getStoryReactionsList">stories.getStoryReactionsList</a></td> <td>Get the <a href="/api/reactions">reaction</a> and interaction list of a <a href="/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> </tr> <tr> <td><a href="/method/stories.getStoriesViews">stories.getStoriesViews</a></td> <td>Obtain info about the view count, forward count, reactions and recent viewers of one or more <a href="/api/stories">stories</a>.</td> </tr> <tr> <td><a href="/method/stories.exportStoryLink">stories.exportStoryLink</a></td> <td>Generate a <a href="/api/links#story-links">story deep link</a> for a specific story</td> </tr> <tr> <td><a href="/method/stories.report">stories.report</a></td> <td>Report a story.</td> </tr> <tr> <td><a href="/method/stories.activateStealthMode">stories.activateStealthMode</a></td> <td>Activates <a href="/api/stories#stealth-mode">stories stealth mode</a>, see <a href="/api/stories#stealth-mode">here »</a> for more info.<br><br>Will return an <a href="/constructor/updateStoriesStealthMode">updateStoriesStealthMode</a>.</td> </tr> <tr> <td><a href="/method/stories.getPeerStories">stories.getPeerStories</a></td> <td>Fetch the full active <a href="/api/stories#watching-stories">story list</a> of a specific peer.</td> </tr> <tr> <td><a href="/method/stories.getAllReadPeerStories">stories.getAllReadPeerStories</a></td> <td>Obtain the latest read story ID for all peers when first logging in, returned as a list of <a href="/constructor/updateReadStories">updateReadStories</a> updates, see <a href="/api/stories#watching-stories">here »</a> for more info.</td> </tr> <tr> <td><a href="/method/stories.getPeerMaxIDs">stories.getPeerMaxIDs</a></td> <td>Get the IDs of the maximum read stories for a set of peers.</td> </tr> <tr> <td><a href="/method/stories.getChatsToSend">stories.getChatsToSend</a></td> <td>Obtain a list of channels where the user can post <a href="/api/stories">stories</a></td> </tr> <tr> <td><a href="/method/stories.togglePeerStoriesHidden">stories.togglePeerStoriesHidden</a></td> <td>Hide the active stories of a user, preventing them from being displayed on the action bar on the homescreen, see <a href="/api/stories#hiding-stories-of-other-users">here »</a> for more info.</td> </tr> <tr> <td><a href="/method/stories.sendReaction">stories.sendReaction</a></td> <td>React to a story.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-telegram-passport" id="working-with-telegram-passport" name="working-with-telegram-passport"><i class="anchor-icon"></i></a>Working with <a href="/passport">telegram passport</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.sendVerifyPhoneCode">account.sendVerifyPhoneCode</a></td> <td>Send the verification phone code for telegram <a href="/passport">passport</a>.</td> </tr> <tr> <td><a href="/method/account.verifyPhone">account.verifyPhone</a></td> <td>Verify a phone number for telegram <a href="/passport">passport</a>.</td> </tr> <tr> <td><a href="/method/account.acceptAuthorization">account.acceptAuthorization</a></td> <td>Sends a Telegram Passport authorization form, effectively sharing data with the service</td> </tr> <tr> <td><a href="/method/account.getAuthorizationForm">account.getAuthorizationForm</a></td> <td>Returns a Telegram Passport authorization form for sharing data with a service</td> </tr> <tr> <td><a href="/method/account.getAuthorizations">account.getAuthorizations</a></td> <td>Get logged-in sessions</td> </tr> <tr> <td><a href="/method/account.deleteSecureValue">account.deleteSecureValue</a></td> <td>Delete stored <a href="/passport">Telegram Passport</a> documents, <a href="/passport/encryption#encryption">for more info see the passport docs »</a></td> </tr> <tr> <td><a href="/method/account.getAllSecureValues">account.getAllSecureValues</a></td> <td>Get all saved <a href="/passport">Telegram Passport</a> documents, <a href="/passport/encryption#encryption">for more info see the passport docs »</a></td> </tr> <tr> <td><a href="/method/account.getSecureValue">account.getSecureValue</a></td> <td>Get saved <a href="/passport">Telegram Passport</a> document, <a href="/passport/encryption#encryption">for more info see the passport docs »</a></td> </tr> <tr> <td><a href="/method/account.saveSecureValue">account.saveSecureValue</a></td> <td>Securely save <a href="/passport">Telegram Passport</a> document, <a href="/passport/encryption#encryption">for more info see the passport docs »</a></td> </tr> <tr> <td><a href="/method/help.getPassportConfig">help.getPassportConfig</a></td> <td>Get <a href="/passport">passport</a> configuration</td> </tr> <tr> <td><a href="/method/users.setSecureValueErrors">users.setSecureValueErrors</a></td> <td>Notify the user that the sent <a href="/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> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-temporary-profile-links" id="working-with-temporary-profile-links" name="working-with-temporary-profile-links"><i class="anchor-icon"></i></a>Working with <a href="/api/links#temporary-profile-links">temporary profile links</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/contacts.exportContactToken">contacts.exportContactToken</a></td> <td>Generates a <a href="/api/links#temporary-profile-links">temporary profile link</a> for the currently logged-in user.</td> </tr> <tr> <td><a href="/method/contacts.importContactToken">contacts.importContactToken</a></td> <td>Obtain user info from a <a href="/api/links#temporary-profile-links">temporary profile link</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-updates" id="working-with-updates" name="working-with-updates"><i class="anchor-icon"></i></a>Working with <a href="/api/updates">updates</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/updates.getChannelDifference">updates.getChannelDifference</a></td> <td>Returns the difference between the current state of updates of a certain channel and transmitted.</td> </tr> <tr> <td><a href="/method/updates.getDifference">updates.getDifference</a></td> <td>Get new <a href="/api/updates">updates</a>.</td> </tr> <tr> <td><a href="/method/updates.getState">updates.getState</a></td> <td>Returns a current state of updates.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-voice-message-transcription" id="working-with-voice-message-transcription" name="working-with-voice-message-transcription"><i class="anchor-icon"></i></a>Working with <a href="/api/transcribe">voice message transcription</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.transcribeAudio">messages.transcribeAudio</a></td> <td><a href="/api/transcribe">Transcribe voice message</a></td> </tr> <tr> <td><a href="/method/messages.rateTranscribedAudio">messages.rateTranscribedAudio</a></td> <td>Rate <a href="/api/transcribe">transcribed voice message</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-wallpapers-" id="working-with-wallpapers-" name="working-with-wallpapers-"><i class="anchor-icon"></i></a>Working with <a href="/api/wallpapers">wallpapers »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.getMultiWallPapers">account.getMultiWallPapers</a></td> <td>Get info about multiple <a href="/api/wallpapers">wallpapers</a></td> </tr> <tr> <td><a href="/method/account.getWallPaper">account.getWallPaper</a></td> <td>Get info about a certain <a href="/api/wallpapers">wallpaper</a></td> </tr> <tr> <td><a href="/method/account.getWallPapers">account.getWallPapers</a></td> <td>Returns a list of available <a href="/api/wallpapers">wallpapers</a>.</td> </tr> <tr> <td><a href="/method/account.installWallPaper">account.installWallPaper</a></td> <td>Install <a href="/api/wallpapers">wallpaper</a></td> </tr> <tr> <td><a href="/method/account.resetWallPapers">account.resetWallPapers</a></td> <td>Delete all installed <a href="/api/wallpapers">wallpapers</a>, reverting to the default wallpaper set.</td> </tr> <tr> <td><a href="/method/account.saveWallPaper">account.saveWallPaper</a></td> <td>Install/uninstall <a href="/api/wallpapers">wallpaper</a></td> </tr> <tr> <td><a href="/method/account.uploadWallPaper">account.uploadWallPaper</a></td> <td>Create and upload a new <a href="/api/wallpapers">wallpaper</a></td> </tr> <tr> <td><a href="/method/messages.setChatWallPaper">messages.setChatWallPaper</a></td> <td>Set a custom <a href="/api/wallpapers">wallpaper »</a> in a specific private chat with another user.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-bot-admin-right-suggestions" id="working-with-bot-admin-right-suggestions" name="working-with-bot-admin-right-suggestions"><i class="anchor-icon"></i></a>Working with bot admin right suggestions</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/bots.setBotBroadcastDefaultAdminRights">bots.setBotBroadcastDefaultAdminRights</a></td> <td>Set the default <a href="/api/rights#suggested-bot-rights">suggested admin rights</a> for bots being added as admins to channels, see <a href="/api/rights#suggested-bot-rights">here for more info on how to handle them »</a>.</td> </tr> <tr> <td><a href="/method/bots.setBotGroupDefaultAdminRights">bots.setBotGroupDefaultAdminRights</a></td> <td>Set the default <a href="/api/rights#suggested-bot-rights">suggested admin rights</a> for bots being added as admins to groups, see <a href="/api/rights#suggested-bot-rights">here for more info on how to handle them »</a>.</td> </tr> </tbody> </table> <h3><a class="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"><i class="anchor-icon"></i></a>Working with bot inline queries and callback buttons</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a></td> <td>Query an inline bot</td> </tr> <tr> <td><a href="/method/messages.setInlineBotResults">messages.setInlineBotResults</a></td> <td>Answer an inline query, for bots only</td> </tr> <tr> <td><a href="/method/messages.sendInlineBotResult">messages.sendInlineBotResult</a></td> <td>Send a result obtained using <a href="/method/messages.getInlineBotResults">messages.getInlineBotResults</a>.</td> </tr> <tr> <td><a href="/method/messages.getBotCallbackAnswer">messages.getBotCallbackAnswer</a></td> <td>Press an inline callback button and get a callback answer from the bot</td> </tr> <tr> <td><a href="/method/messages.setBotCallbackAnswer">messages.setBotCallbackAnswer</a></td> <td>Set the callback answer to a user button press (bots only)</td> </tr> <tr> <td><a href="/method/messages.editInlineBotMessage">messages.editInlineBotMessage</a></td> <td>Edit an inline bot message</td> </tr> <tr> <td><a href="/method/messages.sendBotRequestedPeer">messages.sendBotRequestedPeer</a></td> <td>Send one or more chosen peers, as requested by a <a href="/constructor/keyboardButtonRequestPeer">keyboardButtonRequestPeer</a> button.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-bots" id="working-with-bots" name="working-with-bots"><i class="anchor-icon"></i></a>Working with bots</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/bots.resetBotCommands">bots.resetBotCommands</a></td> <td>Clear bot commands for the specified bot scope and language code</td> </tr> <tr> <td><a href="/method/bots.getBotCommands">bots.getBotCommands</a></td> <td>Obtain a list of bot commands for the specified bot scope and language code</td> </tr> <tr> <td><a href="/method/bots.setBotCommands">bots.setBotCommands</a></td> <td>Set bot command list</td> </tr> <tr> <td><a href="/method/bots.setBotInfo">bots.setBotInfo</a></td> <td>Set localized name, about text and description of a bot (or of the current account, if called by a bot).</td> </tr> <tr> <td><a href="/method/bots.getBotInfo">bots.getBotInfo</a></td> <td>Get localized name, about text and description of a bot (or of the current account, if called by a bot).</td> </tr> </tbody> </table> <h3><a class="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"><i class="anchor-icon"></i></a>Working with bots (internal bot API use)</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/bots.answerWebhookJSONQuery">bots.answerWebhookJSONQuery</a></td> <td>Answers a custom query; for bots only</td> </tr> <tr> <td><a href="/method/bots.sendCustomRequest">bots.sendCustomRequest</a></td> <td>Sends a custom request; for bots only</td> </tr> <tr> <td><a href="/method/help.setBotUpdatesStatus">help.setBotUpdatesStatus</a></td> <td>Informs the server about the number of pending bot updates if they haven't been processed for a long time; for bots only</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-contacts-and-top-peers" id="working-with-contacts-and-top-peers" name="working-with-contacts-and-top-peers"><i class="anchor-icon"></i></a>Working with contacts and <a href="/api/top-rating">top peers</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.getContactSignUpNotification">account.getContactSignUpNotification</a></td> <td>Whether the user will receive notifications when contacts sign up</td> </tr> <tr> <td><a href="/method/account.setContactSignUpNotification">account.setContactSignUpNotification</a></td> <td>Toggle contact sign up notifications</td> </tr> <tr> <td><a href="/method/contacts.acceptContact">contacts.acceptContact</a></td> <td>If the <a href="/api/action-bar#add-contact">add contact action bar is active</a>, add that user as contact</td> </tr> <tr> <td><a href="/method/contacts.addContact">contacts.addContact</a></td> <td>Add an existing telegram user as contact.<br><br>Use <a href="/method/contacts.importContacts">contacts.importContacts</a> to add contacts by phone number, without knowing their Telegram ID.</td> </tr> <tr> <td><a href="/method/contacts.block">contacts.block</a></td> <td>Adds a peer to a blocklist, see <a href="/api/block">here »</a> for more info.</td> </tr> <tr> <td><a href="/method/contacts.deleteByPhones">contacts.deleteByPhones</a></td> <td>Delete contacts by phone number</td> </tr> <tr> <td><a href="/method/contacts.deleteContacts">contacts.deleteContacts</a></td> <td>Deletes several contacts from the list.</td> </tr> <tr> <td><a href="/method/contacts.getBlocked">contacts.getBlocked</a></td> <td>Returns the list of blocked users.</td> </tr> <tr> <td><a href="/method/contacts.getContactIDs">contacts.getContactIDs</a></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> </tr> <tr> <td><a href="/method/contacts.getContacts">contacts.getContacts</a></td> <td>Returns the current user's contact list.</td> </tr> <tr> <td><a href="/method/contacts.getLocated">contacts.getLocated</a></td> <td>Get users and geochats near you, see <a href="/api/nearby">here »</a> for more info.</td> </tr> <tr> <td><a href="/method/contacts.getSaved">contacts.getSaved</a></td> <td>Get all contacts, requires a <a href="/api/takeout">takeout session, see here » for more info</a>.</td> </tr> <tr> <td><a href="/method/contacts.getStatuses">contacts.getStatuses</a></td> <td>Use this method to obtain the online statuses of all contacts with an accessible Telegram account.</td> </tr> <tr> <td><a href="/method/contacts.getTopPeers">contacts.getTopPeers</a></td> <td>Get most used peers</td> </tr> <tr> <td><a href="/method/contacts.importContacts">contacts.importContacts</a></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 <a href="/method/contacts.addContact">contacts.addContact</a> to add Telegram contacts without actually using their phone number.</td> </tr> <tr> <td><a href="/method/contacts.resetSaved">contacts.resetSaved</a></td> <td>Removes all contacts without an associated Telegram account.</td> </tr> <tr> <td><a href="/method/contacts.resetTopPeerRating">contacts.resetTopPeerRating</a></td> <td>Reset <a href="/api/top-rating">rating</a> of top peer</td> </tr> <tr> <td><a href="/method/contacts.search">contacts.search</a></td> <td>Returns users found by username substring.</td> </tr> <tr> <td><a href="/method/contacts.toggleTopPeers">contacts.toggleTopPeers</a></td> <td>Enable/disable <a href="/api/top-rating">top peers</a></td> </tr> <tr> <td><a href="/method/contacts.unblock">contacts.unblock</a></td> <td>Deletes a peer from a blocklist, see <a href="/api/block">here »</a> for more info.</td> </tr> <tr> <td><a href="/method/contacts.setBlocked">contacts.setBlocked</a></td> <td>Replace the contents of an entire <a href="/api/block">blocklist, see here for more info »</a>.</td> </tr> <tr> <td><a href="/method/contacts.editCloseFriends">contacts.editCloseFriends</a></td> <td>Edit the <a href="/api/privacy">close friends list, see here »</a> for more info.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-dialogs" id="working-with-dialogs" name="working-with-dialogs"><i class="anchor-icon"></i></a>Working with dialogs</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getDialogs">messages.getDialogs</a></td> <td>Returns the current user dialog list.</td> </tr> <tr> <td><a href="/method/messages.getPeerDialogs">messages.getPeerDialogs</a></td> <td>Get dialog info of specified peers</td> </tr> <tr> <td><a href="/method/messages.getPinnedDialogs">messages.getPinnedDialogs</a></td> <td>Get pinned dialogs</td> </tr> <tr> <td><a href="/method/messages.toggleDialogPin">messages.toggleDialogPin</a></td> <td>Pin/unpin a dialog</td> </tr> <tr> <td><a href="/method/messages.reorderPinnedDialogs">messages.reorderPinnedDialogs</a></td> <td>Reorder pinned dialogs</td> </tr> <tr> <td><a href="/method/messages.getDialogUnreadMarks">messages.getDialogUnreadMarks</a></td> <td>Get dialogs manually marked as unread</td> </tr> <tr> <td><a href="/method/messages.markDialogUnread">messages.markDialogUnread</a></td> <td>Manually mark dialog as unread</td> </tr> <tr> <td><a href="/method/messages.getPeerSettings">messages.getPeerSettings</a></td> <td>Get peer settings</td> </tr> <tr> <td><a href="/method/messages.hidePeerSettingsBar">messages.hidePeerSettingsBar</a></td> <td>Should be called after the user hides the <a href="/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 <a href="/api/action-bar">action bar »</a>.</td> </tr> <tr> <td><a href="/method/messages.getOnlines">messages.getOnlines</a></td> <td>Get count of online users in a chat</td> </tr> <tr> <td><a href="/method/messages.sendScreenshotNotification">messages.sendScreenshotNotification</a></td> <td>Notify the other user in a private chat that a screenshot of the chat was taken</td> </tr> <tr> <td><a href="/method/messages.setTyping">messages.setTyping</a></td> <td>Sends a current user typing event (see <a href="/type/SendMessageAction">SendMessageAction</a> for all event types) to a conversation partner or group.</td> </tr> <tr> <td><a href="/method/messages.setHistoryTTL">messages.setHistoryTTL</a></td> <td>Set maximum Time-To-Live of all messages in the specified chat</td> </tr> </tbody> </table> <h3><a class="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"><i class="anchor-icon"></i></a>Working with group calls & live streaming</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/phone.exportGroupCallInvite">phone.exportGroupCallInvite</a></td> <td>Get an <a href="/api/links#video-chat-livestream-links">invite link</a> for a group call or livestream</td> </tr> <tr> <td><a href="/method/phone.getGroupCallJoinAs">phone.getGroupCallJoinAs</a></td> <td>Get a list of peers that can be used to join a group call, presenting yourself as a specific user/channel.</td> </tr> <tr> <td><a href="/method/phone.editGroupCallParticipant">phone.editGroupCallParticipant</a></td> <td>Edit information about a given group call participant<br><br>Note: <a href="/mtproto/TL-combinators#conditional-fields">flags</a>.N?<a href="/type/Bool">Bool</a> parameters can have three possible values:<br><br>- If the <a href="/mtproto/TL-combinators#conditional-fields">TL flag</a> is not set, the previous value will not be changed.<br>- If the <a href="/mtproto/TL-combinators#conditional-fields">TL flag</a> is set and contains a <a href="/constructor/boolTrue">boolTrue</a>, the previous value will be overwritten to <code>true</code>.<br>- If the <a href="/mtproto/TL-combinators#conditional-fields">TL flag</a> is set and contains a <a href="/constructor/boolFalse">boolFalse</a>, the previous value will be overwritten to <code>false</code>.</td> </tr> <tr> <td><a href="/method/phone.toggleGroupCallRecord">phone.toggleGroupCallRecord</a></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> </tr> <tr> <td><a href="/method/phone.editGroupCallTitle">phone.editGroupCallTitle</a></td> <td>Edit the title of a group call or livestream</td> </tr> <tr> <td><a href="/method/phone.getGroupParticipants">phone.getGroupParticipants</a></td> <td>Get group call participants</td> </tr> <tr> <td><a href="/method/phone.checkGroupCall">phone.checkGroupCall</a></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> </tr> <tr> <td><a href="/method/phone.createGroupCall">phone.createGroupCall</a></td> <td>Create a group call or livestream</td> </tr> <tr> <td><a href="/method/phone.toggleGroupCallStartSubscription">phone.toggleGroupCallStartSubscription</a></td> <td>Subscribe or unsubscribe to a scheduled group call</td> </tr> <tr> <td><a href="/method/phone.leaveGroupCall">phone.leaveGroupCall</a></td> <td>Leave a group call</td> </tr> <tr> <td><a href="/method/phone.toggleGroupCallSettings">phone.toggleGroupCallSettings</a></td> <td>Change group call settings</td> </tr> <tr> <td><a href="/method/phone.inviteToGroupCall">phone.inviteToGroupCall</a></td> <td>Invite a set of users to a group call.</td> </tr> <tr> <td><a href="/method/phone.getGroupCall">phone.getGroupCall</a></td> <td>Get info about a group call</td> </tr> <tr> <td><a href="/method/phone.joinGroupCall">phone.joinGroupCall</a></td> <td>Join a group call</td> </tr> <tr> <td><a href="/method/phone.leaveGroupCallPresentation">phone.leaveGroupCallPresentation</a></td> <td>Stop screen sharing in a group call</td> </tr> <tr> <td><a href="/method/phone.discardGroupCall">phone.discardGroupCall</a></td> <td>Terminate a group call</td> </tr> <tr> <td><a href="/method/phone.joinGroupCallPresentation">phone.joinGroupCallPresentation</a></td> <td>Start screen sharing in a call</td> </tr> <tr> <td><a href="/method/phone.startScheduledGroupCall">phone.startScheduledGroupCall</a></td> <td>Start a scheduled group call.</td> </tr> <tr> <td><a href="/method/phone.saveDefaultGroupCallJoinAs">phone.saveDefaultGroupCallJoinAs</a></td> <td>Set the default peer that will be used to join a group call in a specific dialog.</td> </tr> <tr> <td><a href="/method/phone.getGroupCallStreamChannels">phone.getGroupCallStreamChannels</a></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 <a href="/api/files#downloading-files">downloading livestream chunks</a>. <br>As usual, the media DC is preferred, if available.</td> </tr> <tr> <td><a href="/method/phone.getGroupCallStreamRtmpUrl">phone.getGroupCallStreamRtmpUrl</a></td> <td>Get RTMP URL and stream key for RTMP livestreams. Can be used even before creating the actual RTMP livestream with <a href="/method/phone.createGroupCall">phone.createGroupCall</a> (the <code>rtmp_stream</code> flag must be set).</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-imported-chats" id="working-with-imported-chats" name="working-with-imported-chats"><i class="anchor-icon"></i></a>Working with imported chats</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a></td> <td>Upload a media file associated with an <a href="/api/import">imported chat, click here for more info »</a>.</td> </tr> <tr> <td><a href="/method/messages.startHistoryImport">messages.startHistoryImport</a></td> <td>Complete the <a href="/api/import">history import process</a>, importing all messages into the chat. <br>To be called only after initializing the import with <a href="/method/messages.initHistoryImport">messages.initHistoryImport</a> and uploading all files using <a href="/method/messages.uploadImportedMedia">messages.uploadImportedMedia</a>.</td> </tr> <tr> <td><a href="/method/messages.checkHistoryImportPeer">messages.checkHistoryImportPeer</a></td> <td>Check whether chat history exported from another chat app can be <a href="/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 <a href="/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> </tr> <tr> <td><a href="/method/messages.checkHistoryImport">messages.checkHistoryImport</a></td> <td>Obtains information about a chat export file, generated by a foreign chat app, <a href="/api/import">click here for more info about imported chats »</a>.</td> </tr> <tr> <td><a href="/method/messages.initHistoryImport">messages.initHistoryImport</a></td> <td>Import chat history from a foreign chat app into a specific Telegram chat, <a href="/api/import">click here for more info about imported chats »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-localization-packs" id="working-with-localization-packs" name="working-with-localization-packs"><i class="anchor-icon"></i></a>Working with localization packs</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/langpack.getDifference">langpack.getDifference</a></td> <td>Get new strings in language pack</td> </tr> <tr> <td><a href="/method/langpack.getLangPack">langpack.getLangPack</a></td> <td>Get localization pack strings</td> </tr> <tr> <td><a href="/method/langpack.getLanguage">langpack.getLanguage</a></td> <td>Get information about a language in a localization pack</td> </tr> <tr> <td><a href="/method/langpack.getLanguages">langpack.getLanguages</a></td> <td>Get information about all languages in a localization pack</td> </tr> <tr> <td><a href="/method/langpack.getStrings">langpack.getStrings</a></td> <td>Get strings from a language pack</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-media-autodownload-settings" id="working-with-media-autodownload-settings" name="working-with-media-autodownload-settings"><i class="anchor-icon"></i></a>Working with media autodownload settings</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.getAutoDownloadSettings">account.getAutoDownloadSettings</a></td> <td>Get media autodownload settings</td> </tr> <tr> <td><a href="/method/account.saveAutoDownloadSettings">account.saveAutoDownloadSettings</a></td> <td>Change media autodownload settings</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-media-autosave-settings" id="working-with-media-autosave-settings" name="working-with-media-autosave-settings"><i class="anchor-icon"></i></a>Working with media autosave settings</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.getAutoSaveSettings">account.getAutoSaveSettings</a></td> <td>Get autosave settings</td> </tr> <tr> <td><a href="/method/account.saveAutoSaveSettings">account.saveAutoSaveSettings</a></td> <td>Modify autosave settings</td> </tr> <tr> <td><a href="/method/account.deleteAutoSaveExceptions">account.deleteAutoSaveExceptions</a></td> <td>Clear all peer-specific autosave settings.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-message-threads" id="working-with-message-threads" name="working-with-message-threads"><i class="anchor-icon"></i></a>Working with message <a href="/api/threads">threads</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getReplies">messages.getReplies</a></td> <td>Get messages in a reply thread</td> </tr> <tr> <td><a href="/method/contacts.blockFromReplies">contacts.blockFromReplies</a></td> <td>Stop getting notifications about <a href="/api/discussion">discussion replies</a> of a certain user in <code>@replies</code></td> </tr> <tr> <td><a href="/method/messages.getDiscussionMessage">messages.getDiscussionMessage</a></td> <td>Get <a href="/api/threads">discussion message</a> from the <a href="/api/discussion">associated discussion group</a> of a channel to show it on top of the comment section, without actually joining the group</td> </tr> <tr> <td><a href="/method/messages.readDiscussion">messages.readDiscussion</a></td> <td>Mark a <a href="/api/threads">thread</a> as read</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-messages" id="working-with-messages" name="working-with-messages"><i class="anchor-icon"></i></a>Working with messages</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.deleteHistory">messages.deleteHistory</a></td> <td>Deletes communication history.</td> </tr> <tr> <td><a href="/method/messages.deleteMessages">messages.deleteMessages</a></td> <td>Deletes messages by their identifiers.</td> </tr> <tr> <td><a href="/method/messages.editMessage">messages.editMessage</a></td> <td>Edit message</td> </tr> <tr> <td><a href="/method/messages.forwardMessages">messages.forwardMessages</a></td> <td>Forwards messages by their IDs.</td> </tr> <tr> <td><a href="/method/messages.getHistory">messages.getHistory</a></td> <td>Returns the conversation history with one interlocutor / within a chat</td> </tr> <tr> <td><a href="/method/messages.getSearchResultsPositions">messages.getSearchResultsPositions</a></td> <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> </tr> <tr> <td><a href="/method/messages.getMessageEditData">messages.getMessageEditData</a></td> <td>Find out if a media message's caption can be edited</td> </tr> <tr> <td><a href="/method/messages.getOutboxReadDate">messages.getOutboxReadDate</a></td> <td>Get the exact read date of one of our messages, sent to a private chat with another user.<br><br>Can be only done for private outgoing messages not older than <a href="/api/config#pm-read-date-expire-period">appConfig.pm_read_date_expire_period »</a>.<br><br>If the <code>peer</code>'s <a href="/constructor/userFull">userFull</a>.<code>read_dates_private</code> flag is set, we will not be able to fetch the exact read date of messages we send to them, and a <code>USER_PRIVACY_RESTRICTED</code> RPC error will be emitted. <br>The exact read date of messages might still be unavailable for other reasons, see <a href="/constructor/globalPrivacySettings">here »</a> for more info. <br>To set <a href="/constructor/userFull">userFull</a>.<code>read_dates_private</code> for ourselves invoke <a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a>, setting the <code>settings.hide_read_marks</code> flag.</td> </tr> <tr> <td><a href="/method/messages.getMessages">messages.getMessages</a></td> <td>Returns the list of messages by their IDs.</td> </tr> <tr> <td><a href="/method/messages.getMessagesViews">messages.getMessagesViews</a></td> <td>Get and increase the view counter of a message sent or forwarded from a <a href="/api/channel">channel</a></td> </tr> <tr> <td><a href="/method/messages.getRecentLocations">messages.getRecentLocations</a></td> <td>Get live location history of a certain user</td> </tr> <tr> <td><a href="/method/messages.getSearchCounters">messages.getSearchCounters</a></td> <td>Get the number of results that would be found by a <a href="/method/messages.search">messages.search</a> call with the same parameters</td> </tr> <tr> <td><a href="/method/messages.getUnreadMentions">messages.getUnreadMentions</a></td> <td>Get unread messages where we were mentioned</td> </tr> <tr> <td><a href="/method/messages.readHistory">messages.readHistory</a></td> <td>Marks message history as read.</td> </tr> <tr> <td><a href="/method/messages.readMentions">messages.readMentions</a></td> <td>Mark mentions as read</td> </tr> <tr> <td><a href="/method/messages.readMessageContents">messages.readMessageContents</a></td> <td>Notifies the sender about the recipient having listened a voice message or watched a video.</td> </tr> <tr> <td><a href="/method/messages.receivedMessages">messages.receivedMessages</a></td> <td>Confirms receipt of messages by a client, cancels PUSH-notification sending.</td> </tr> <tr> <td><a href="/method/messages.search">messages.search</a></td> <td>Search for messages.</td> </tr> <tr> <td><a href="/method/messages.getSearchResultsCalendar">messages.getSearchResultsCalendar</a></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> </tr> <tr> <td><a href="/method/messages.searchGlobal">messages.searchGlobal</a></td> <td>Search for messages and peers globally</td> </tr> <tr> <td><a href="/method/messages.searchSentMedia">messages.searchSentMedia</a></td> <td>View and search recently sent media. <br>This method does not support pagination.</td> </tr> <tr> <td><a href="/method/channels.searchPosts">channels.searchPosts</a></td> <td>Globally search for posts from public <a href="/api/channel">channels »</a> (<em>including</em> those we aren't a member of) containing a specific hashtag.</td> </tr> <tr> <td><a href="/method/messages.sendMedia">messages.sendMedia</a></td> <td>Send a media</td> </tr> <tr> <td><a href="/method/messages.sendMessage">messages.sendMessage</a></td> <td>Sends a message to a chat</td> </tr> <tr> <td><a href="/method/messages.sendMultiMedia">messages.sendMultiMedia</a></td> <td>Send an <a href="/api/files#albums-grouped-media">album or grouped media</a></td> </tr> <tr> <td><a href="/method/messages.updatePinnedMessage">messages.updatePinnedMessage</a></td> <td>Pin a message</td> </tr> <tr> <td><a href="/method/messages.unpinAllMessages">messages.unpinAllMessages</a></td> <td><a href="/api/pin">Unpin</a> all pinned messages</td> </tr> <tr> <td><a href="/method/messages.toggleNoForwards">messages.toggleNoForwards</a></td> <td>Enable or disable <a href="https://telegram.org/blog/protected-content-delete-by-date-and-more">content protection</a> on a channel or chat</td> </tr> <tr> <td><a href="/method/messages.saveDefaultSendAs">messages.saveDefaultSendAs</a></td> <td>Change the default peer that should be used when sending messages, reactions, poll votes to a specific group</td> </tr> <tr> <td><a href="/method/channels.getSendAs">channels.getSendAs</a></td> <td>Obtains a list of peers that can be used to send messages in a specific group</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-notification-settings" id="working-with-notification-settings" name="working-with-notification-settings"><i class="anchor-icon"></i></a>Working with notification settings</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.registerDevice">account.registerDevice</a></td> <td>Register device to receive <a href="/api/push-updates">PUSH notifications</a></td> </tr> <tr> <td><a href="/method/account.unregisterDevice">account.unregisterDevice</a></td> <td>Deletes a device by its token, stops sending PUSH-notifications to it.</td> </tr> <tr> <td><a href="/method/account.updateDeviceLocked">account.updateDeviceLocked</a></td> <td>When client-side passcode lock feature is enabled, will not show message texts in incoming <a href="/api/push-updates">PUSH notifications</a>.</td> </tr> <tr> <td><a href="/method/account.getNotifyExceptions">account.getNotifyExceptions</a></td> <td>Returns list of chats with non-default notification settings</td> </tr> <tr> <td><a href="/method/account.getNotifySettings">account.getNotifySettings</a></td> <td>Gets current notification settings for a given user/group, from all users/all groups.</td> </tr> <tr> <td><a href="/method/account.updateNotifySettings">account.updateNotifySettings</a></td> <td>Edits notification settings from a given user/group, from all users/all groups.</td> </tr> <tr> <td><a href="/method/account.resetNotifySettings">account.resetNotifySettings</a></td> <td>Resets all notification settings from users and groups.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-notification-sounds" id="working-with-notification-sounds" name="working-with-notification-sounds"><i class="anchor-icon"></i></a>Working with notification sounds</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.getSavedRingtones">account.getSavedRingtones</a></td> <td>Fetch saved notification sounds</td> </tr> <tr> <td><a href="/method/account.saveRingtone">account.saveRingtone</a></td> <td>Save or remove saved notification sound.<br><br>If the notification sound is already in MP3 format, <a href="/constructor/account.savedRingtone">account.savedRingtone</a> will be returned. <br>Otherwise, it will be automatically converted and a <a href="/constructor/account.savedRingtoneConverted">account.savedRingtoneConverted</a> will be returned, containing a new <a href="/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> </tr> <tr> <td><a href="/method/account.uploadRingtone">account.uploadRingtone</a></td> <td>Upload notification sound, use <a href="/method/account.saveRingtone">account.saveRingtone</a> to convert it and add it to the list of saved notification sounds.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-other-users" id="working-with-other-users" name="working-with-other-users"><i class="anchor-icon"></i></a>Working with other users</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/users.getFullUser">users.getFullUser</a></td> <td>Returns extended user info by ID.</td> </tr> <tr> <td><a href="/method/users.getUsers">users.getUsers</a></td> <td>Returns basic user info according to their identifiers.</td> </tr> <tr> <td><a href="/method/contacts.resolvePhone">contacts.resolvePhone</a></td> <td>Resolve a phone number to get user info, if their privacy settings allow it.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-payments" id="working-with-payments" name="working-with-payments"><i class="anchor-icon"></i></a>Working with payments</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/payments.getSavedInfo">payments.getSavedInfo</a></td> <td>Get saved payment information</td> </tr> <tr> <td><a href="/method/payments.clearSavedInfo">payments.clearSavedInfo</a></td> <td>Clear saved payment information</td> </tr> <tr> <td><a href="/method/payments.getPaymentForm">payments.getPaymentForm</a></td> <td>Get a payment form</td> </tr> <tr> <td><a href="/method/payments.validateRequestedInfo">payments.validateRequestedInfo</a></td> <td>Submit requested order information for validation</td> </tr> <tr> <td><a href="/method/messages.setBotShippingResults">messages.setBotShippingResults</a></td> <td>If you sent an invoice requesting a shipping address and the parameter is_flexible was specified, the bot will receive an <a href="/constructor/updateBotShippingQuery">updateBotShippingQuery</a> update. Use this method to reply to shipping queries.</td> </tr> <tr> <td><a href="/method/account.getTmpPassword">account.getTmpPassword</a></td> <td>Get temporary payment password</td> </tr> <tr> <td><a href="/method/payments.sendPaymentForm">payments.sendPaymentForm</a></td> <td>Send compiled payment form</td> </tr> <tr> <td><a href="/method/messages.setBotPrecheckoutResults">messages.setBotPrecheckoutResults</a></td> <td>Once the user has confirmed their payment and shipping details, the bot receives an <a href="/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> </tr> <tr> <td><a href="/method/payments.getPaymentReceipt">payments.getPaymentReceipt</a></td> <td>Get payment receipt</td> </tr> <tr> <td><a href="/method/payments.exportInvoice">payments.exportInvoice</a></td> <td>Generate an <a href="/api/links#invoice-links">invoice deep link</a></td> </tr> <tr> <td><a href="/method/payments.getBankCardData">payments.getBankCardData</a></td> <td>Get info about a credit card</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-polls" id="working-with-polls" name="working-with-polls"><i class="anchor-icon"></i></a>Working with polls</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getPollResults">messages.getPollResults</a></td> <td>Get poll results</td> </tr> <tr> <td><a href="/method/messages.getPollVotes">messages.getPollVotes</a></td> <td>Get poll results for non-anonymous polls</td> </tr> <tr> <td><a href="/method/messages.sendVote">messages.sendVote</a></td> <td>Vote in a <a href="/constructor/poll">poll</a><br><br>Starting from layer 159, the vote will be sent from the peer specified using <a href="/method/messages.saveDefaultSendAs">messages.saveDefaultSendAs</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-scheduled-messages" id="working-with-scheduled-messages" name="working-with-scheduled-messages"><i class="anchor-icon"></i></a>Working with scheduled messages</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.sendScheduledMessages">messages.sendScheduledMessages</a></td> <td>Send scheduled messages right away</td> </tr> <tr> <td><a href="/method/messages.getScheduledHistory">messages.getScheduledHistory</a></td> <td>Get scheduled messages</td> </tr> <tr> <td><a href="/method/messages.deleteScheduledMessages">messages.deleteScheduledMessages</a></td> <td>Delete scheduled messages</td> </tr> <tr> <td><a href="/method/messages.getScheduledMessages">messages.getScheduledMessages</a></td> <td>Get scheduled messages</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-sensitive-content-nsfw" id="working-with-sensitive-content-nsfw" name="working-with-sensitive-content-nsfw"><i class="anchor-icon"></i></a>Working with sensitive content (NSFW)</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.getContentSettings">account.getContentSettings</a></td> <td>Get sensitive content settings</td> </tr> <tr> <td><a href="/method/account.setContentSettings">account.setContentSettings</a></td> <td>Set sensitive content settings (for viewing or hiding NSFW content)</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-sponsored-messages" id="working-with-sponsored-messages" name="working-with-sponsored-messages"><i class="anchor-icon"></i></a>Working with sponsored messages</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/channels.getSponsoredMessages">channels.getSponsoredMessages</a></td> <td>Get a list of sponsored messages</td> </tr> <tr> <td><a href="/method/channels.viewSponsoredMessage">channels.viewSponsoredMessage</a></td> <td>Mark a specific sponsored message as read</td> </tr> <tr> <td><a href="/method/channels.clickSponsoredMessage">channels.clickSponsoredMessage</a></td> <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> </tr> <tr> <td><a href="/method/channels.reportSponsoredMessage">channels.reportSponsoredMessage</a></td> <td>Report a <a href="/api/sponsored-messages">sponsored message »</a>, see <a href="/api/sponsored-messages#reporting-sponsored-messages">here »</a> for more info on the full flow.</td> </tr> <tr> <td><a href="/method/channels.restrictSponsoredMessages">channels.restrictSponsoredMessages</a></td> <td>Disable ads on the specified channel, for all users.<br><br>Available only after reaching at least the <a href="/api/boost">boost level »</a> specified in the <a href="/api/config#channel-restrict-sponsored-level-min"><code>channel_restrict_sponsored_level_min</code> »</a> config parameter.</td> </tr> <tr> <td><a href="/method/account.toggleSponsoredMessages">account.toggleSponsoredMessages</a></td> <td>Disable or re-enable Telegram ads for the current <a href="/api/premium">Premium</a> account.<br><br>Useful for business owners that may want to launch and view their own Telegram ads via the <a href="https://ads.telegram.org">Telegram ad platform »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-the-telegram-business-intro-" id="working-with-the-telegram-business-intro-" name="working-with-the-telegram-business-intro-"><i class="anchor-icon"></i></a>Working with the <a href="/api/business#business-introduction">Telegram Business intro »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.updateBusinessIntro">account.updateBusinessIntro</a></td> <td>Set or remove the <a href="/api/business#business-introduction">Telegram Business introduction »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-the-telegram-business-location" id="working-with-the-telegram-business-location" name="working-with-the-telegram-business-location"><i class="anchor-icon"></i></a>Working with the <a href="/api/business#location">Telegram Business location</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.updateBusinessLocation">account.updateBusinessLocation</a></td> <td><a href="/api/business#location">Businesses »</a> may advertise their location using this method, see <a href="/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> </tr> </tbody> </table> <h3><a class="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-"><i class="anchor-icon"></i></a>Working with the <a href="/bots/webapps#launching-mini-apps-from-the-attachment-menu">attachment menu »</a> of <a href="/bots/webapps">mini bot apps »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/messages.getAttachMenuBots">messages.getAttachMenuBots</a></td> <td>Returns installed attachment menu <a href="/api/bots/attach">bot mini apps »</a></td> </tr> <tr> <td><a href="/method/messages.getAttachMenuBot">messages.getAttachMenuBot</a></td> <td>Returns attachment menu entry for a <a href="/api/bots/attach">bot mini app that can be launched from the attachment menu »</a></td> </tr> <tr> <td><a href="/method/messages.toggleBotInAttachMenu">messages.toggleBotInAttachMenu</a></td> <td>Enable or disable <a href="/api/bots/attach">web bot attachment menu »</a></td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-the-channel-ad-revenue" id="working-with-the-channel-ad-revenue" name="working-with-the-channel-ad-revenue"><i class="anchor-icon"></i></a>Working with the <a href="/api/revenue">channel ad revenue</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/stats.getBroadcastRevenueStats">stats.getBroadcastRevenueStats</a></td> <td>Get <a href="/api/revenue">channel ad revenue statistics »</a>.</td> </tr> <tr> <td><a href="/method/stats.getBroadcastRevenueWithdrawalUrl">stats.getBroadcastRevenueWithdrawalUrl</a></td> <td>Withdraw funds from a channel's <a href="/api/revenue">ad revenue balance »</a>.</td> </tr> <tr> <td><a href="/method/stats.getBroadcastRevenueTransactions">stats.getBroadcastRevenueTransactions</a></td> <td>Fetch <a href="/api/revenue">channel ad revenue transaction history »</a>.</td> </tr> </tbody> </table> <h3><a class="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"><i class="anchor-icon"></i></a>Working with the <a href="/api/antispam">native anti-spam system</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/channels.toggleAntiSpam">channels.toggleAntiSpam</a></td> <td>Enable or disable the <a href="/api/antispam">native antispam system</a>.</td> </tr> <tr> <td><a href="/method/channels.reportAntiSpamFalsePositive">channels.reportAntiSpamFalsePositive</a></td> <td>Report a <a href="/api/antispam">native antispam</a> false positive</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-the-privacy-settings" id="working-with-the-privacy-settings" name="working-with-the-privacy-settings"><i class="anchor-icon"></i></a>Working with the <a href="/api/privacy">privacy settings</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.getPrivacy">account.getPrivacy</a></td> <td>Get privacy settings of current account</td> </tr> <tr> <td><a href="/method/account.setPrivacy">account.setPrivacy</a></td> <td>Change privacy settings of current account</td> </tr> <tr> <td><a href="/method/account.setGlobalPrivacySettings">account.setGlobalPrivacySettings</a></td> <td>Set global privacy settings</td> </tr> <tr> <td><a href="/method/account.getGlobalPrivacySettings">account.getGlobalPrivacySettings</a></td> <td>Get global privacy settings</td> </tr> <tr> <td><a href="/method/users.getIsPremiumRequiredToContact">users.getIsPremiumRequiredToContact</a></td> <td>Check whether we can write to the specified user (this method can only be called by non-<a href="/api/premium">Premium</a> users), see <a href="/api/privacy#require-premium-for-new-non-contact-users">here »</a> for more info on the full flow.</td> </tr> <tr> <td><a href="/method/messages.setDefaultHistoryTTL">messages.setDefaultHistoryTTL</a></td> <td>Changes the default value of the Time-To-Live setting, applied to all new chats.</td> </tr> <tr> <td><a href="/method/messages.getDefaultHistoryTTL">messages.getDefaultHistoryTTL</a></td> <td>Gets the default value of the Time-To-Live setting, applied to all new chats.</td> </tr> </tbody> </table> <h3><a class="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"><i class="anchor-icon"></i></a>Working with the <a href="/api/takeout">takeout API, see here » for more info</a>.</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.initTakeoutSession">account.initTakeoutSession</a></td> <td>Initialize a <a href="/api/takeout">takeout session, see here » for more info</a>.</td> </tr> <tr> <td><a href="/method/account.finishTakeoutSession">account.finishTakeoutSession</a></td> <td>Terminate a <a href="/api/takeout">takeout session, see here » for more info</a>.</td> </tr> <tr> <td><a href="/method/messages.getSplitRanges">messages.getSplitRanges</a></td> <td>Get message ranges for saving the user's chat history</td> </tr> <tr> <td><a href="/method/channels.getLeftChannels">channels.getLeftChannels</a></td> <td>Get a list of <a href="/api/channel">channels/supergroups</a> we left, requires a <a href="/api/takeout">takeout session, see here » for more info</a>.</td> </tr> <tr> <td><a href="/method/invokeWithMessagesRange">invokeWithMessagesRange</a></td> <td>Invoke with the given message range</td> </tr> <tr> <td><a href="/method/invokeWithTakeout">invokeWithTakeout</a></td> <td>Invoke a method within a <a href="/api/takeout">takeout session, see here » for more info</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-the-user-profile" id="working-with-the-user-profile" name="working-with-the-user-profile"><i class="anchor-icon"></i></a>Working with the <a href="/api/profile">user profile</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/photos.deletePhotos">photos.deletePhotos</a></td> <td>Deletes profile photos. The method returns a list of successfully deleted photo IDs.</td> </tr> <tr> <td><a href="/method/photos.getUserPhotos">photos.getUserPhotos</a></td> <td>Returns the list of user photos.</td> </tr> <tr> <td><a href="/method/photos.updateProfilePhoto">photos.updateProfilePhoto</a></td> <td>Installs a previously uploaded photo as a profile photo.</td> </tr> <tr> <td><a href="/method/photos.uploadProfilePhoto">photos.uploadProfilePhoto</a></td> <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> </tr> <tr> <td><a href="/method/photos.uploadContactProfilePhoto">photos.uploadContactProfilePhoto</a></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> </tr> <tr> <td><a href="/method/account.updateProfile">account.updateProfile</a></td> <td>Updates user profile.</td> </tr> <tr> <td><a href="/method/account.updateBirthday">account.updateBirthday</a></td> <td>Update our <a href="/api/profile#birthday">birthday, see here »</a> for more info.</td> </tr> <tr> <td><a href="/method/contacts.getBirthdays">contacts.getBirthdays</a></td> <td>Fetch all users with birthdays that fall within +1/-1 days, relative to the current day: this method should be invoked by clients every 6-8 hours, and if the result is non-empty, it should be used to appropriately update locally cached birthday information in <a href="/constructor/user">user</a>.<code>birthday</code>.<br><br><a href="/api/profile#birthday">See here »</a> for more info.</td> </tr> <tr> <td><a href="/method/account.updatePersonalChannel">account.updatePersonalChannel</a></td> <td>Associate (or remove) a personal <a href="/api/channel">channel »</a>, that will be listed on our personal <a href="/api/profile#personal-channel">profile page »</a>.<br><br>Changing it will emit an <a href="/constructor/updateUser">updateUser</a> update.</td> </tr> <tr> <td><a href="/method/account.updateStatus">account.updateStatus</a></td> <td>Updates online user status.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-the-bot-menu-button-" id="working-with-the-bot-menu-button-" name="working-with-the-bot-menu-button-"><i class="anchor-icon"></i></a>Working with the bot <a href="/bots/webapps#launching-mini-apps-from-the-menu-button">menu button »</a></h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/bots.setBotMenuButton">bots.setBotMenuButton</a></td> <td>Sets the <a href="/api/bots/menu">menu button action »</a> for a given user or for all users</td> </tr> <tr> <td><a href="/method/bots.getBotMenuButton">bots.getBotMenuButton</a></td> <td>Gets the menu button action for a given user or for all users, previously set using <a href="/method/bots.setBotMenuButton">bots.setBotMenuButton</a>; users can see this information in the <a href="/constructor/botInfo">botInfo</a> constructor.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-the-users-account" id="working-with-the-users-account" name="working-with-the-users-account"><i class="anchor-icon"></i></a>Working with the user's account</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/account.changePhone">account.changePhone</a></td> <td>Change the phone number of the current account</td> </tr> <tr> <td><a href="/method/account.confirmPhone">account.confirmPhone</a></td> <td>Confirm a phone number to cancel account deletion, for more info <a href="/api/account-deletion">click here »</a></td> </tr> <tr> <td><a href="/method/account.deleteAccount">account.deleteAccount</a></td> <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 <a href="/api/srp#password-recovery">here »</a> for more info on password recovery, and <a href="/api/account-deletion">here »</a> for more info on account deletion.</td> </tr> <tr> <td><a href="/method/account.getAccountTTL">account.getAccountTTL</a></td> <td>Get days to live of account</td> </tr> <tr> <td><a href="/method/account.resetAuthorization">account.resetAuthorization</a></td> <td>Log out an active <a href="/api/auth">authorized session</a> by its hash</td> </tr> <tr> <td><a href="/method/account.sendChangePhoneCode">account.sendChangePhoneCode</a></td> <td>Verify a new phone number to associate to the current account</td> </tr> <tr> <td><a href="/method/account.sendConfirmPhoneCode">account.sendConfirmPhoneCode</a></td> <td>Send confirmation code to cancel account deletion, for more info <a href="/api/account-deletion">click here »</a></td> </tr> <tr> <td><a href="/method/account.setAccountTTL">account.setAccountTTL</a></td> <td>Set account self-destruction period</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-timezones" id="working-with-timezones" name="working-with-timezones"><i class="anchor-icon"></i></a>Working with timezones</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/help.getTimezonesList">help.getTimezonesList</a></td> <td>Returns timezone information that may be used elsewhere in the API, such as to set <a href="/api/business#opening-hours">Telegram Business opening hours »</a>.</td> </tr> </tbody> </table> <h3><a class="anchor" href="#working-with-usernames" id="working-with-usernames" name="working-with-usernames"><i class="anchor-icon"></i></a>Working with usernames</h3> <table class="table"> <thead> <tr> <th>Name</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><a href="/method/channels.checkUsername">channels.checkUsername</a></td> <td>Check if a username is free and can be assigned to a channel/supergroup</td> </tr> <tr> <td><a href="/method/channels.updateUsername">channels.updateUsername</a></td> <td>Change or remove the username of a supergroup/channel</td> </tr> <tr> <td><a href="/method/account.updateUsername">account.updateUsername</a></td> <td>Changes username for the current user.</td> </tr> <tr> <td><a href="/method/account.checkUsername">account.checkUsername</a></td> <td>Validates a username and checks availability.</td> </tr> <tr> <td><a href="/method/contacts.resolveUsername">contacts.resolveUsername</a></td> <td>Resolve a @username to get peer info</td> </tr> </tbody> </table></div> </div> </div> </div> <div class="footer_wrap"> <div class="footer_columns_wrap footer_desktop"> <div class="footer_column footer_column_telegram"> <h5>Telegram</h5> <div class="footer_telegram_description"></div> Telegram is a cloud-based mobile and desktop messaging app with a focus on security and speed. </div> <div class="footer_column"> <h5><a href="//telegram.org/faq">About</a></h5> <ul> <li><a href="//telegram.org/faq">FAQ</a></li> <li><a href="//telegram.org/privacy">Privacy</a></li> <li><a href="//telegram.org/press">Press</a></li> </ul> </div> <div class="footer_column"> <h5><a href="//telegram.org/apps#mobile-apps">Mobile Apps</a></h5> <ul> <li><a href="//telegram.org/dl/ios">iPhone/iPad</a></li> <li><a href="//telegram.org/android">Android</a></li> <li><a href="//telegram.org/dl/web">Mobile Web</a></li> </ul> </div> <div class="footer_column"> <h5><a href="//telegram.org/apps#desktop-apps">Desktop Apps</a></h5> <ul> <li><a href="//desktop.telegram.org/">PC/Mac/Linux</a></li> <li><a href="//macos.telegram.org/">macOS</a></li> <li><a href="//telegram.org/dl/web">Web-browser</a></li> </ul> </div> <div class="footer_column footer_column_platform"> <h5><a href="/">Platform</a></h5> <ul> <li><a href="/api">API</a></li> <li><a href="//translations.telegram.org/">Translations</a></li> <li><a href="//instantview.telegram.org/">Instant View</a></li> </ul> </div> </div> <div class="footer_columns_wrap footer_mobile"> <div class="footer_column"> <h5><a href="//telegram.org/faq">About</a></h5> </div> <div class="footer_column"> <h5><a href="//telegram.org/blog">Blog</a></h5> </div> <div class="footer_column"> <h5><a href="//telegram.org/apps">Apps</a></h5> </div> <div class="footer_column"> <h5><a href="/">Platform</a></h5> </div> <div class="footer_column"> <h5><a href="//telegram.org/press">Press</a></h5> </div> </div> </div> </div> <script src="/js/main.js?47"></script> <script>backToTopInit("Go up"); removePreloadInit(); </script> </body> </html> <!-- page generated in 15.4ms -->