Python SDK for Tell A Bot API: Automate Your SMS Verification The article announces the release of a Python SDK for the Tell A Bot API, which provides temporary US phone numbers to receive SMS messages and OTP codes for over 700 services. The SDK allows developers to automate phone verification in bots, scrapers, and testing pipelines by requesting numbers, waiting for SMS, and extracting PIN codes via API calls or webhooks. Key features include balance checking, number rejection, error handling, and service listing with pricing and availability. 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. Tell A Bot solves this — it gives you temporary US phone numbers on demand, receives the SMS, and hands you back the OTP code. All via API. We just published a Python SDK on GitHub, so I wanted to walk through what it looks like in practice. Tell A Bot 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. Common use cases: pip install get-sms-online Or directly from GitHub: pip install git+https://github.com/getsms-online/get.sms.online-python.git Generate your API key at Account → Profile in Tell A Bot's members area. from getsms import GetSMSClient, GetSMSError client = GetSMSClient user="your username", api key="your api key" Check your balance first print f"Balance: ${client.balance }" Request a number for WhatsApp and wait for the SMS requests = client.request number "WhatsApp" req = requests 0 print f"Your number: +{req 'mdn' }" sms = client.wait for sms req "id" , timeout=900 if sms: print f"SMS: {sms 'reply' }" print f"Code: {sms 'pin' }" else: print "No SMS received in time" wait for sms polls the API every 15 seconds the recommended minimum and returns the message once an SMS arrives, or None on timeout. from getsms import GetSMSClient, GetSMSError client = GetSMSClient user="your username", api key="your api key" try: requests = client.request number "Google" req = requests 0 sms = client.wait for sms req "id" if sms: print f"Got code: {sms 'pin' }" else: print "Timed out — no SMS received" except GetSMSError as e: API-level errors: invalid service name, no numbers available, etc. print f"API error: {e}" except Exception as e: Network errors print f"Request failed: {e}" If the assigned number looks wrong or you want to skip it, reject it — it won't be offered to you again: requests = client.request number "Telegram" req = requests 0 if req "mdn" .startswith "1212" : client.reject req "id" NYC numbers blocked by the service? Skip it. If you're handling volume, configure a webhook URL at Account → Profile. Tell A Bot will POST to your endpoint the moment an SMS arrives, with fields including event , id , reply , pin , and price . No polling loop needed. All services services = client.list services for s in services: print f"{s 'name' }: ${s 'price' } {s 'otp available' } available " Single service — also returns recommended markup for priority bidding info = client.list services "Google" print info 0 "recommended markup"