<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: dripl_ai</title>
    <description>The latest articles on DEV Community by dripl_ai (veltrisgroup).</description>
    <link>https://dev.to/veltrisgroup</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F15578%2Fc2de061c-7e27-4bf1-bee1-dff4829f5c0f.png</url>
      <title>DEV Community: dripl_ai</title>
      <link>https://dev.to/veltrisgroup</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/veltrisgroup"/>
    <language>en</language>
    <item>
      <title>Telegram flood wait: what “A wait of X seconds is required” means, and how to stay under the limits</title>
      <dc:creator>veltrisltd</dc:creator>
      <pubDate>Sun, 25 Oct 2026 13:55:50 +0000</pubDate>
      <link>https://dev.to/veltrisgroup/telegram-flood-wait-what-a-wait-of-x-seconds-is-required-means-and-how-to-stay-under-the-limits-1lg4</link>
      <guid>https://dev.to/veltrisgroup/telegram-flood-wait-what-a-wait-of-x-seconds-is-required-means-and-how-to-stay-under-the-limits-1lg4</guid>
      <description>&lt;p&gt;&lt;strong&gt;In short&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A flood wait is a timer, not a ban: Telegram names the seconds, and the fix is to wait all of them before trying that request again.&lt;/li&gt;
&lt;li&gt;Telegram publishes limits for bots only; for user accounts it doesn’t, so pace each account conservatively instead of hunting for the edge.&lt;/li&gt;
&lt;li&gt;Retry loops and bursts make waits come back. Space messages out, and never move the same send to another account to keep going.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A Telegram flood wait is Telegram telling an account or bot to stop repeating a request for a set time. The error &lt;code&gt;FLOOD_WAIT_X&lt;/code&gt; means “A wait of X seconds is required”. On its own it isn’t a ban. Wait the full X seconds, try once more, then space your sends out so it stops coming back.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a Telegram flood wait?
&lt;/h2&gt;

&lt;p&gt;Telegram’s &lt;a href="https://core.telegram.org/api/errors" rel="noopener noreferrer"&gt;API error reference&lt;/a&gt; files it under error code &lt;strong&gt;420 FLOOD&lt;/strong&gt;: “The maximum allowed number of attempts to invoke the given method with the given input parameters has been exceeded.” The example Telegram gives is asking for a large number of login codes by SMS for the same phone number.&lt;/p&gt;

&lt;p&gt;Two things in that definition matter. The limit is per &lt;em&gt;method and input&lt;/em&gt;: a wait applies to that request (for example, codes for one phone number), not necessarily to everything the account does. And it counts &lt;em&gt;attempts&lt;/em&gt;, so a failed request that you fire again straight away is one more attempt, not a fresh start.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flood wait when you log in to the Telegram app
&lt;/h3&gt;

&lt;p&gt;If you aren’t writing code and simply get told to wait while signing in, the cause is the same mechanism. Asking for a login code again and again for one number triggers &lt;code&gt;PHONE_NUMBER_FLOOD&lt;/code&gt; (“You asked for the code too many times”, per &lt;a href="https://core.telegram.org/method/auth.sendCode" rel="noopener noreferrer"&gt;auth.sendCode&lt;/a&gt;), and each number gets only a certain number of login attempts per day, after which Telegram returns a FLOOD error until the next day. The fix is to stop requesting codes and wait; there is nothing to repair on the account.&lt;/p&gt;

&lt;h3&gt;
  
  
  What the number X tells you
&lt;/h3&gt;

&lt;p&gt;X is the number of seconds Telegram wants you to wait before repeating the request. Telegram doesn’t publish a range or a maximum, and it doesn’t explain how it picks the number, so treat each value as an instruction rather than a guess to beat. Your code should read the number from the error, not assume a fixed pause.&lt;/p&gt;

&lt;h3&gt;
  
  
  How it shows up in Telethon and the Bot API
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;User accounts and MTProto libraries.&lt;/strong&gt; In Telethon, a Python MTProto library, it arrives as &lt;code&gt;FloodWaitError&lt;/code&gt; with the wait in &lt;code&gt;.seconds&lt;/code&gt;. By default the library sleeps through flood waits shorter than 60 seconds on its own, so your code only sees the longer ones (&lt;a href="https://docs.telethon.dev/en/stable/concepts/errors.html" rel="noopener noreferrer"&gt;Telethon docs&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bots on the HTTP Bot API.&lt;/strong&gt; The same idea comes back as a 429 Too Many Requests error. Its &lt;code&gt;retry_after&lt;/code&gt; field is, in Telegram’s words, “the number of seconds left to wait before the request can be repeated” (&lt;a href="https://core.telegram.org/bots/api" rel="noopener noreferrer"&gt;Bot API reference&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Flood wait, slow mode, 429 or FLOOD_PREMIUM_WAIT: which is it?
&lt;/h2&gt;

&lt;p&gt;Several Telegram errors carry a number of seconds, and they don’t all mean you sent too much. Read the error’s name before you change anything.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Telegram errors that ask you to wait&lt;/em&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Error&lt;/th&gt;
&lt;th&gt;Where you meet it&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;th&gt;What to do&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;FLOOD_WAIT_X&lt;/code&gt; (420)&lt;/td&gt;
&lt;td&gt;Any API method, from a user account or an MTProto bot&lt;/td&gt;
&lt;td&gt;You repeated a request too often; wait X seconds&lt;/td&gt;
&lt;td&gt;Pause that action for all X seconds, then try once more&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;SLOWMODE_WAIT_X&lt;/code&gt; (420)&lt;/td&gt;
&lt;td&gt;Posting in a group where an admin turned on slow mode&lt;/td&gt;
&lt;td&gt;Slow mode is on in that chat: wait X seconds before sending another message there&lt;/td&gt;
&lt;td&gt;Wait before posting in that group again; it is the group’s own setting, not a mark against the account&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;429 Too Many Requests&lt;/td&gt;
&lt;td&gt;Bots on the HTTP Bot API&lt;/td&gt;
&lt;td&gt;The bot went over a flood limit; &lt;code&gt;retry_after&lt;/code&gt; gives the seconds left&lt;/td&gt;
&lt;td&gt;Wait &lt;code&gt;retry_after&lt;/code&gt; seconds, then repeat the request&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;FLOOD_PREMIUM_WAIT_X&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Uploading or downloading files on an account without Premium&lt;/td&gt;
&lt;td&gt;Transfer speed is limited, and the client repeats the request after X seconds&lt;/td&gt;
&lt;td&gt;Nothing to fix in your sending; it concerns file speed, not messages&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;PHONE_NUMBER_FLOOD&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Asking for a login code&lt;/td&gt;
&lt;td&gt;“You asked for the code too many times.”&lt;/td&gt;
&lt;td&gt;Stop requesting codes and try again later&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Slow mode is not new: Telegram added it for groups in &lt;a href="https://telegram.org/blog/silent-messages-slow-mode" rel="noopener noreferrer"&gt;August 2019&lt;/a&gt;, and a timer in the app shows how long you have to wait. &lt;code&gt;FLOOD_PREMIUM_WAIT_X&lt;/code&gt; is not new either, and it is not about messages at all. Telegram’s &lt;a href="https://core.telegram.org/api/files" rel="noopener noreferrer"&gt;file transfer documentation&lt;/a&gt; says it limits upload or download speed for accounts without Premium, and that it “can only be received when the user has uploaded tens of gigabytes or more.”&lt;/p&gt;

&lt;p&gt;If a message fails with a different error, or with no wait at all, the cause is usually somewhere else: a chat you can’t write in, a restriction, a session that needs signing in again. The guide to &lt;a href="https://dripl.ai/blog/telegram-message-not-sending" rel="noopener noreferrer"&gt;why a Telegram message isn’t sending&lt;/a&gt; walks through those.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which Telegram rate limits are published?
&lt;/h2&gt;

&lt;p&gt;For bots, Telegram publishes rough figures in its &lt;a href="https://core.telegram.org/bots/faq" rel="noopener noreferrer"&gt;Bots FAQ&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In a single chat, avoid more than about one message per second. Telegram may allow short bursts, but “eventually you’ll begin receiving 429 errors.”&lt;/li&gt;
&lt;li&gt;In a group, a bot can’t send more than 20 messages per minute.&lt;/li&gt;
&lt;li&gt;For bulk notifications, a bot can’t broadcast to more than about 30 users per second unless it turns on paid broadcasts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For user accounts, Telegram publishes no message limits at all. The only figure in its &lt;a href="https://core.telegram.org/api/auth" rel="noopener noreferrer"&gt;authorisation documentation&lt;/a&gt; is about sign-in: each phone number gets a certain number of login attempts per day, with 5 given as an example that is “subject to change”, after which the API returns a FLOOD error until the next day.&lt;/p&gt;

&lt;p&gt;Library authors say the same. The grammY bot framework’s &lt;a href="https://grammy.dev/advanced/flood" rel="noopener noreferrer"&gt;guide to flood limits&lt;/a&gt; puts it bluntly: the exact numbers “are unspecified”, and they shift with the requests, the number of users and other factors. Any tool or blog that quotes a precise daily message limit for user accounts is guessing.&lt;/p&gt;

&lt;p&gt;Since Telegram’s &lt;a href="https://telegram.org/blog/ai-bot-revolution-11-new-features" rel="noopener noreferrer"&gt;7 May 2026 update&lt;/a&gt;, bots can respond to other bots, and any user can connect a bot to their profile to answer messages on their behalf, under Settings &amp;gt; Chat Automation. Telegram hasn’t published separate limits for either, so treat them like any other bot or account: read the wait, and respect it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why a short flood wait turns into a long one
&lt;/h2&gt;

&lt;p&gt;Telegram doesn’t document how it sets X, but the definition above tells you what it counts: repeated attempts at the same method. The patterns that keep adding attempts are easy to spot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Retry loops.&lt;/strong&gt; A script that catches the error and tries again at once, or every few seconds, keeps adding attempts while the timer runs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Bursts.&lt;/strong&gt; Fifty messages in a few seconds look very different from fifty spread over an hour, even when the daily total is the same.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Repeating the same request.&lt;/strong&gt; Resolving the same username, asking for the same login code or re-joining the same group over and over.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Many workers, one account.&lt;/strong&gt; Several processes sending from one account at once, each unaware the others were told to wait.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A flood wait is also different from a spam limit. Telegram’s &lt;a href="https://telegram.org/faq_spam" rel="noopener noreferrer"&gt;spam FAQ&lt;/a&gt; describes a limit on an account that others reported for unwanted messages: for a first time it lasts “a few days or so”, and the account can still message people who have its number saved as a contact, and reply to anyone who messages it first. If that is what you are seeing, the guide to &lt;a href="https://dripl.ai/blog/telegram-account-frozen" rel="noopener noreferrer"&gt;a frozen or limited Telegram account&lt;/a&gt; covers the appeal.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to handle a Telegram flood wait correctly
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Read the error’s name and number.&lt;/strong&gt; Check it is &lt;code&gt;FLOOD_WAIT_X&lt;/code&gt; or a 429, not slow mode or a file-speed limit, and note X or &lt;code&gt;retry_after&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Stop that action for the whole wait.&lt;/strong&gt; Pause the request that failed, for that account or bot, for all X seconds. Don’t send a “quick test” in the meantime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reschedule long waits instead of sleeping.&lt;/strong&gt; A wait of a few seconds can be slept through. For minutes or hours, record when the wait ends and move the job to that time, so a worker isn’t held up and nothing retries early.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Try once, then look at your pace.&lt;/strong&gt; When the wait is over, repeat the request once. If waits keep coming back, the fix is fewer or slower requests, not a smarter retry.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep a record.&lt;/strong&gt; Log each wait with the account, the action and X. A pattern, such as waits every morning when a batch starts, shows you what to spread out.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;A sketch in Python with Telethon: wait the full time, then try once more&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;telethon&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;errors&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;send_once_more_after_wait&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;reschedule&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send_message&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;chat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="n"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;FloodWaitError&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="c1"&gt;# Telegram asked for e.seconds. Don't retry before that.
&lt;/span&gt;        &lt;span class="c1"&gt;# Short waits never reach here: Telethon sleeps through
&lt;/span&gt;        &lt;span class="c1"&gt;# those under its flood_sleep_threshold (60 s by default).
&lt;/span&gt;        &lt;span class="nf"&gt;reschedule&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;delay_seconds&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;seconds&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For bots, the grammY guide gives the same advice in two steps: wait for the number of seconds Telegram specifies, then retry the request. Its auto-retry plugin does exactly that.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pacing several accounts: caps, gaps and jitter
&lt;/h2&gt;

&lt;p&gt;If you run &lt;a href="https://dripl.ai/blog/how-many-telegram-accounts-can-i-have" rel="noopener noreferrer"&gt;several accounts&lt;/a&gt;, for a team or for different channels, give each one its own pace rather than one shared queue. Three settings do most of the work:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Caps.&lt;/strong&gt; A daily and an hourly ceiling per account, set well below anything that has caused a wait before.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A minimum gap.&lt;/strong&gt; A few seconds between one message and the next from the same account, so nothing goes out in a burst.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Jitter.&lt;/strong&gt; A small random extra on each gap, so a batch doesn’t fire on the exact same beat every time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Don’t move the send to another account.&lt;/strong&gt; When one account gets a flood wait, switching the same messages to a second account to keep the volume up defeats the point of the limit and can look like the &lt;a href="https://core.telegram.org/api/obtaining_api_id" rel="noopener noreferrer"&gt;flooding&lt;/a&gt; that Telegram says gets API users banned forever. Treat the wait as a sign the plan sends too much, too fast, and slow the whole plan down.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you use the Telegram API for flooding, spamming, faking subscriber and view counters of channels, you will be banned forever.&lt;/p&gt;

&lt;p&gt;— &lt;a href="https://core.telegram.org/api/obtaining_api_id" rel="noopener noreferrer"&gt;Telegram: Creating your Telegram Application&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Telegram’s &lt;a href="https://core.telegram.org/api/terms" rel="noopener noreferrer"&gt;API Terms of Service&lt;/a&gt; also forbid making actions on behalf of a user without the user’s knowledge and consent. Message people who expect to hear from you, in groups and channels where you are welcome, and pacing becomes a matter of courtesy rather than a race against a timer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Paid broadcasts for large bots: when they make sense
&lt;/h2&gt;

&lt;p&gt;Paid broadcasts are the one documented way to raise a Telegram sending limit, and they are for bots only. According to the Bots FAQ, a bot that turns them on in &lt;code&gt;@BotFather&lt;/code&gt; can broadcast up to 1,000 messages per second. Each message over the free 30 per second costs 0.1 Stars from the bot’s balance, and Telegram charges only for messages that are delivered.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The bot needs at least 100,000 Stars on its balance and at least 100,000 monthly active users.&lt;/li&gt;
&lt;li&gt;On the HTTP Bot API it is the &lt;code&gt;allow_paid_broadcast&lt;/code&gt; parameter on send methods; in MTProto it is the &lt;code&gt;allow_paid_floodskip&lt;/code&gt; flag on &lt;code&gt;messages.sendMessage&lt;/code&gt;, marked bots only.&lt;/li&gt;
&lt;li&gt;Without it, Telegram suggests spreading a large broadcast over a longer stretch, 8 to 12 hours for example.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For most bots, spreading the broadcast is the better answer: the recipients opted in, and nobody minds a notice that arrives an hour later. Paid broadcasts make sense for time-sensitive notices to a very large audience that already asked for them. There is no equivalent for user accounts, and nothing in Telegram’s documentation says Premium removes flood waits on messages; the Premium error covers file speed.&lt;/p&gt;

&lt;h2&gt;
  
  
  A checklist for staying under Telegram’s rate limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Keep one sender per account at a time, so every worker sees the same wait.&lt;/li&gt;
&lt;li&gt;Cache what you look up, such as resolved usernames, instead of asking Telegram again.&lt;/li&gt;
&lt;li&gt;Start big batches slowly and spread them over hours, not minutes.&lt;/li&gt;
&lt;li&gt;Send only to people and chats that expect your messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;How long does a Telegram flood wait last?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Exactly as long as the number in the error: &lt;code&gt;FLOOD_WAIT_X&lt;/code&gt; asks for X seconds, and a bot’s 429 gives &lt;code&gt;retry_after&lt;/code&gt; seconds. Telegram doesn’t publish a range or a maximum, so read the number each time. Retrying before it runs out doesn’t shorten it; the request fails again and counts as one more attempt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can you skip a Telegram flood wait?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not for a user account: Telegram documents no way to end a wait early, and moving the same send to another account defeats the limit and risks looking like the flooding Telegram says gets API users &lt;a href="https://core.telegram.org/api/obtaining_api_id" rel="noopener noreferrer"&gt;banned forever&lt;/a&gt;. The only documented way to raise a limit is paid broadcasts, for large bots. For everyone else, wait it out and slow the pace.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does Telegram Premium remove flood waits?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Not the ones on sending messages, as far as Telegram documents. The error that mentions Premium, &lt;code&gt;FLOOD_PREMIUM_WAIT_X&lt;/code&gt;, is about upload and download speed on accounts without Premium, and Telegram says it only appears after tens of gigabytes of transfers. A &lt;code&gt;FLOOD_WAIT_X&lt;/code&gt; on messages calls for a slower pace, not a subscription.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How many messages per second can a Telegram bot send?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Telegram’s Bots FAQ says about one per second in a single chat, no more than 20 per minute in a group, and about 30 per second across users for bulk notifications. Bots with at least 100,000 monthly active users and 100,000 Stars can turn on paid broadcasts for up to 1,000 per second, paying 0.1 Stars per message over the free 30.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why do I get a flood wait when logging in to Telegram?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because the login code was requested, or a login tried, too many times. Telegram’s own example of a 420 FLOOD is asking for many SMS codes for one number, and &lt;code&gt;PHONE_NUMBER_FLOOD&lt;/code&gt; means “You asked for the code too many times.” Stop requesting codes, use the one you already have if it is still valid, and try again later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://core.telegram.org/api/errors" rel="noopener noreferrer"&gt;Telegram API: error handling (420 FLOOD)&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://core.telegram.org/method/messages.sendMessage" rel="noopener noreferrer"&gt;Telegram API: messages.sendMessage, possible errors&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://core.telegram.org/bots/faq" rel="noopener noreferrer"&gt;Telegram Bots FAQ: hitting limits and paid broadcasts&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://core.telegram.org/bots/api" rel="noopener noreferrer"&gt;Telegram Bot API: ResponseParameters, retry_after&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://core.telegram.org/api/files" rel="noopener noreferrer"&gt;Telegram API: uploading and downloading files (FLOOD_PREMIUM_WAIT_X)&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://core.telegram.org/api/auth" rel="noopener noreferrer"&gt;Telegram API: user authorisation, login attempt limits&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://core.telegram.org/method/auth.sendCode" rel="noopener noreferrer"&gt;Telegram API: auth.sendCode, PHONE_NUMBER_FLOOD&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://core.telegram.org/api/terms" rel="noopener noreferrer"&gt;Telegram API Terms of Service (section 1.4, user consent)&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://core.telegram.org/api/obtaining_api_id" rel="noopener noreferrer"&gt;Telegram API: Creating your Telegram Application (using the api_id)&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://telegram.org/faq_spam" rel="noopener noreferrer"&gt;Telegram FAQ: spam limits&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://telegram.org/blog/silent-messages-slow-mode" rel="noopener noreferrer"&gt;Telegram blog: Silent Messages, Slow Mode (9 August 2019)&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://telegram.org/blog/ai-bot-revolution-11-new-features" rel="noopener noreferrer"&gt;Telegram blog: bot-to-bot chats and Chat Automation (7 May 2026)&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://docs.telethon.dev/en/stable/concepts/errors.html" rel="noopener noreferrer"&gt;Telethon documentation: RPC errors and FloodWaitError&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://grammy.dev/advanced/flood" rel="noopener noreferrer"&gt;grammY: Scaling Up IV, flood limits&lt;/a&gt; (accessed 2026-09-30)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Originally published on the &lt;a href="https://dripl.ai/blog/telegram-floodwait-error" rel="noopener noreferrer"&gt;Dripl.ai blog&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Disclosure: this guide was generated with AI and checked against the sources listed above.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>telegram</category>
      <category>api</category>
      <category>python</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
