<?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: Tell A Bot</title>
    <description>The latest articles on DEV Community by Tell A Bot (@tellabot_sms).</description>
    <link>https://dev.to/tellabot_sms</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3948051%2F5e166d5b-7fbd-479c-ab81-2ac7d755d6a2.jpeg</url>
      <title>DEV Community: Tell A Bot</title>
      <link>https://dev.to/tellabot_sms</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tellabot_sms"/>
    <language>en</language>
    <item>
      <title>How to Verify WhatsApp Without Using Your Real Phone Number</title>
      <dc:creator>Tell A Bot</dc:creator>
      <pubDate>Tue, 26 May 2026 07:19:21 +0000</pubDate>
      <link>https://dev.to/tellabot_sms/how-to-verify-whatsapp-without-using-your-real-phone-number-3c0</link>
      <guid>https://dev.to/tellabot_sms/how-to-verify-whatsapp-without-using-your-real-phone-number-3c0</guid>
      <description>&lt;p&gt;You want to use WhatsApp, but you don't want to hand over your real phone number. Maybe you're a freelancer managing client communication. Maybe you're traveling and need a separate account. Or maybe you simply value your privacy and don't want every app tied to your personal SIM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why People Avoid Using Their Real Number for WhatsApp&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every time you register for WhatsApp with your personal number, that number becomes permanently linked to your account. Anyone you message can see it. If your account gets compromised, your real number is exposed. And if you ever want to separate your personal and professional communication, you're stuck.&lt;/p&gt;

&lt;p&gt;This is especially relevant for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Freelancers and small business owners&lt;/strong&gt; who want a dedicated work number without a second SIM card&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Travelers&lt;/strong&gt; who need a temporary WhatsApp account while abroad&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Privacy-conscious users&lt;/strong&gt; who don't want to share personal contact details with strangers in group chats&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Developers and testers&lt;/strong&gt; who need multiple accounts for QA purposes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The common advice is "just get a second SIM card." But that means another contract, another monthly bill, and another physical card to manage. There's a better way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding Your Options: Mobile and VoIP (Virtual) Numbers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Before picking a service, it helps to understand the types of temporary numbers available:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Mobile numbers&lt;/strong&gt; are tied to real mobile carriers and physical SIM cards. They have higher acceptance rates with strict platforms like WhatsApp, but they're typically more expensive and harder to get.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;VoIP numbers&lt;/strong&gt; are internet-based phone numbers. They don't require a physical SIM card and are managed entirely online. Services like Google Voice, TextNow, and many temporary number providers use VoIP numbers. They're affordable, instant, and work well for many platforms, but unfortunately not WhatsApp.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here's what actually matters when choosing a temporary number for WhatsApp:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Private:&lt;/strong&gt; Only you see the incoming SMS. This is the biggest factor - shared public numbers almost never work with WhatsApp.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;US-based:&lt;/strong&gt; American +1 numbers have high acceptance rates across most platforms.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Fresh rotation:&lt;/strong&gt; The provider regularly adds new numbers that haven't been burned by mass registrations.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Instant delivery:&lt;/strong&gt; Verification codes should arrive within seconds, not minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step-by-Step: How to Get a Temporary Number for WhatsApp Verification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The process takes about two minutes. Here's how it works using Tell A Bot:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Step 1. Create an account and add funds.&lt;/strong&gt; &lt;a href="https://www.tellabot.com/signup.php" rel="noopener noreferrer"&gt;Sign up at Tell A Bot&lt;/a&gt;, then top up your balance. Minimum deposit is $5 via crypto (BTC, LTC, USDT and others). Payments are processed automatically.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Step 2. Request a number for WhatsApp.&lt;/strong&gt; Go to Services → One Time US Numbers and &lt;strong&gt;make a priority request&lt;/strong&gt; for a US number. As a rule, WhatsApp numbers are in a high demand, and almost always sold out. We wrote an article about &lt;a href="https://otp.support/priority-requests/" rel="noopener noreferrer"&gt;priority requests and how they work&lt;/a&gt;, make sure to read it. Also a video manual on Priority Requests is available on YouTube.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Step 3. Start WhatsApp registration.&lt;/strong&gt; Open WhatsApp and begin the signup process. Select United States (+1) as the country and enter the temporary number you received.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Step 4. Receive the SMS verification code.&lt;/strong&gt; WhatsApp will send a 6-digit code via SMS. It will appear on Tell A Bot's website within seconds. No physical phone needed.&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Step 5. Enter the code.&lt;/strong&gt; Type the verification code into WhatsApp. Done - your account is active, linked to the temporary number instead of your personal one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No second SIM card, no contract, no monthly fee.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What About Free Public Numbers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We have a section for &lt;a href="https://www.tellabot.com/free-sms/" rel="noopener noreferrer"&gt;free US numbers&lt;/a&gt; at Tell A Bot, also there are many other websites offering free temporary phone numbers for SMS verification. While they can work for some low-security services, there is a very low chance they will work for WhatsApp specifically:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;WhatsApp blocks most free numbers&lt;/strong&gt; because they've been used thousands of times for registrations&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Your verification code is visible to everyone,&lt;/strong&gt; creating an obvious security risk&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Numbers go offline unpredictably,&lt;/strong&gt; so you might lose access to your account entirely&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Success rate is very low&lt;/strong&gt; - most free numbers are VoIP and automatically rejected by WhatsApp&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That said, free numbers can be useful to test how a service works before paying. Tell A Bot offers free public numbers for exactly this purpose - try the platform, see the interface, and then decide if you want a private number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can You Reuse the Number Later?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Temporary numbers are designed for one-time verification. Once you've verified your WhatsApp account, the number expires (typically after 15 minutes). Your WhatsApp account remains active as long as you keep using it.&lt;/p&gt;

&lt;p&gt;However, if WhatsApp ever decides to re-verify your account, which may happen after reinstalling the app, switching devices, or triggering additional security checks, you may need access to the number again. Since one-time numbers are temporary by design, &lt;a href="https://otp.support/reuse-one-time-number/" rel="noopener noreferrer"&gt;they may no longer be available at that point&lt;/a&gt;. Because of this, it is strongly recommended to add additional recovery methods to your WhatsApp account whenever possible, such as linking an email address and enabling extra security options.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Does This Work for WhatsApp Business Too?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Yes. &lt;a href="https://business.whatsapp.com/" rel="noopener noreferrer"&gt;WhatsApp Business&lt;/a&gt; uses the same SMS verification process as the regular version. A temporary US number works identically for WhatsApp Business registration. This is useful for entrepreneurs and small businesses who want to set up a business presence on WhatsApp without publishing their personal mobile number.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Will Google Voice Number Work For WhatsApp?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many older guides recommend Google Voice for WhatsApp verification. Unfortunately Google Voice numbers are VoIP-based, and presently do not work for WhatsApp. If you already have a Google Voice number, you may have a try. But if you need a reliable solution, a dedicated temporary number service gives you much better odds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why You Should Check Out Tell A Bot&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many SMS verification services are either overpriced, unreliable with popular platforms, or make you jump through hoops just to get a single code. We wanted something different:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;700+ supported platforms&lt;/strong&gt; including WhatsApp, Telegram, Instagram, Tinder, Discord, and more&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://www.tellabot.com/" rel="noopener noreferrer"&gt;Private temporary US phone numbers&lt;/a&gt;&lt;/strong&gt; - only you see the incoming SMS codes&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Prices starting at $0.10&lt;/strong&gt; per number - no subscriptions, no hidden fees&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;Crypto payments&lt;/strong&gt; (BTC, LTC, USDT) for users who prefer anonymous payments&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;50% discount on number reuse&lt;/strong&gt; if the same number is still available&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;&lt;a href="https://www.tellabot.com/api_command_reference.php" rel="noopener noreferrer"&gt;Developer API&lt;/a&gt;&lt;/strong&gt; for those who need to automate verifications at scale&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We're not the biggest service out there, but we focus on simplicity and keeping things affordable. Thousands of users across 100+ countries, a straightforward process, and no unnecessary complexity. Sign up, top up, get your number, receive your code. That's it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Verifying WhatsApp without your real phone number in 2026 is straightforward. The key is using a private temporary number from a reliable provider - not a free public number that compromises your security, and not an outdated Google Voice setup that might stop working any day.&lt;/p&gt;

&lt;p&gt;Whether you're protecting your privacy, separating work and personal communication, or running a business, a temporary US number gets the job done in under two minutes for less than a dollar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Found this guide useful?&lt;/strong&gt; Share it with someone who values their privacy. Please make sure to follow us on X &lt;a href="https://x.com/TellABotSMS" rel="noopener noreferrer"&gt;(@TellABotSMS)&lt;/a&gt; - we will be publishing important news and updates there.&lt;/p&gt;

</description>
      <category>sms</category>
      <category>privacy</category>
      <category>security</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Python SDK for Tell A Bot API: Automate Your SMS Verification</title>
      <dc:creator>Tell A Bot</dc:creator>
      <pubDate>Sun, 24 May 2026 06:38:41 +0000</pubDate>
      <link>https://dev.to/tellabot_sms/python-sdk-for-tell-a-bot-api-automate-your-sms-verification-2c3f</link>
      <guid>https://dev.to/tellabot_sms/python-sdk-for-tell-a-bot-api-automate-your-sms-verification-2c3f</guid>
      <description>&lt;p&gt;If you've ever built a bot, scraper, or testing pipeline that needs to verify a phone number, you know the pain: SIM cards, forwarding services, juggling multiple numbers manually. &lt;a href="https://www.tellabot.com" rel="noopener noreferrer"&gt;Tell A Bot&lt;/a&gt; solves this — it gives you temporary US phone numbers on demand, receives the SMS, and hands you back the OTP code. All via API.&lt;/p&gt;

&lt;p&gt;We just published a &lt;strong&gt;Python SDK&lt;/strong&gt; on GitHub, so I wanted to walk through what it looks like in practice.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Tell A Bot?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.tellabot.com" rel="noopener noreferrer"&gt;Tell A Bot&lt;/a&gt; is a service for receiving SMS online using temporary US phone numbers. You request a number for one of 700+ supported services, the number waits for an incoming SMS, and once it arrives you read the message and the extracted PIN code through the API.&lt;/p&gt;

&lt;p&gt;Common use cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Automating account registration or verification flows in tests&lt;/li&gt;
&lt;li&gt;Receiving OTP codes in scripts without a physical SIM&lt;/li&gt;
&lt;li&gt;Spinning up multiple accounts for a service during development&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;get-sms-online
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or directly from GitHub:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;git+https://github.com/getsms-online/get.sms.online-python.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Generate your API key at &lt;strong&gt;Account → Profile&lt;/strong&gt; in Tell A Bot's members area.&lt;/p&gt;

&lt;h2&gt;
  
  
  The simplest case — request a number and wait for the code
&lt;/h2&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;getsms&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;GetSMSClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;GetSMSError&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;GetSMSClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_api_key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Check your balance first
&lt;/span&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Balance: $&lt;/span&gt;&lt;span class="si"&gt;{&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;balance&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Request a number for WhatsApp and wait for the SMS
&lt;/span&gt;&lt;span class="n"&gt;requests&lt;/span&gt; &lt;span class="o"&gt;=&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;request_number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;WhatsApp&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Your number: +&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;mdn&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;sms&lt;/span&gt; &lt;span class="o"&gt;=&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;wait_for_sms&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt; &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;900&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;sms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;SMS: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sms&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;reply&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Code: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sms&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;pin&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;No SMS received in time&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;wait_for_sms&lt;/code&gt; polls the API every 15 seconds (the recommended minimum) and returns the message once an SMS arrives, or &lt;code&gt;None&lt;/code&gt; on timeout.&lt;/p&gt;

&lt;h2&gt;
  
  
  Error handling
&lt;/h2&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;getsms&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;GetSMSClient&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;GetSMSError&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;GetSMSClient&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_username&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;api_key&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;your_api_key&lt;/span&gt;&lt;span class="sh"&gt;"&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="n"&gt;requests&lt;/span&gt; &lt;span class="o"&gt;=&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;request_number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Google&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="n"&gt;sms&lt;/span&gt; &lt;span class="o"&gt;=&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;wait_for_sms&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;sms&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Got code: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;sms&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;pin&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Timed out — no SMS received&lt;/span&gt;&lt;span class="sh"&gt;"&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;GetSMSError&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;# API-level errors: invalid service name, no numbers available, etc.
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;API error: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;except&lt;/span&gt; &lt;span class="nb"&gt;Exception&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;# Network errors
&lt;/span&gt;    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Request failed: &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;e&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Reject a number you don't want
&lt;/h2&gt;

&lt;p&gt;If the assigned number looks wrong or you want to skip it, reject it — it won't be offered to you again:&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="n"&gt;requests&lt;/span&gt; &lt;span class="o"&gt;=&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;request_number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Telegram&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;req&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;mdn&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;startswith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;1212&lt;/span&gt;&lt;span class="sh"&gt;"&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="nf"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;req&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;id&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;   &lt;span class="c1"&gt;# NYC numbers blocked by the service? Skip it.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Webhooks instead of polling
&lt;/h2&gt;

&lt;p&gt;If you're handling volume, configure a webhook URL at &lt;strong&gt;Account → Profile&lt;/strong&gt;. Tell A Bot will POST to your endpoint the moment an SMS arrives, with fields including &lt;code&gt;event&lt;/code&gt;, &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;reply&lt;/code&gt;, &lt;code&gt;pin&lt;/code&gt;, and &lt;code&gt;price&lt;/code&gt;. No polling loop needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Check available services and pricing
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# All services
&lt;/span&gt;&lt;span class="n"&gt;services&lt;/span&gt; &lt;span class="o"&gt;=&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;list_services&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;services&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt;: $&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;price&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; (&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="s"&gt;otp_available&lt;/span&gt;&lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s"&gt; available)&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# Single service — also returns recommended_markup for priority bidding
&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt; &lt;span class="o"&gt;=&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;list_services&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Google&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;info&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;][&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;recommended_markup&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.tellabot.com" rel="noopener noreferrer"&gt;Tell A Bot&lt;/a&gt; — sign up, manage numbers, configure webhooks&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.tellabot.com/api_command_reference.php" rel="noopener noreferrer"&gt;API reference&lt;/a&gt; — full documentation&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/getsms-online/get.sms.online-python" rel="noopener noreferrer"&gt;Python SDK on GitHub&lt;/a&gt; — source&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>python</category>
      <category>sms</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
