Log in

SMS verification API

Buy numbers, check codes and cancel with a single HTTP request. It uses handler_api, widely used in the virtual number industry, so sign-up programs and bots connect by just adding the URL and key.

Get an API key

After logging in, create a key in the API menu on the Account screen. The key is shown only once when created, so save it right away. The API uses the same balance and prices as the website.

Base URL

https://nuviosms.com/stubs/handler_api.php?api_key=API_KEY&action=...

Main requests

actionWhat it doesSample response
getBalanceCheck balanceACCESS_BALANCE:12.50
getPrices&service=telegram&country=gbPrices and available numbers by service and country{"gb":{"telegram":{"cost":0.207,"count":8877728}}}
getNumber&service=telegram&country=gbBuy a numberACCESS_NUMBER:ID:PHONE
getStatus&id=IDCheck codeSTATUS_WAIT_CODE / STATUS_OK:CODE
setStatus&id=ID&status=8Cancel number (before a code arrives, full refund)ACCESS_CANCEL
setStatus&id=ID&status=3Get one more code on the same numberACCESS_RETRY_GET
setStatus&id=ID&status=6FinishACCESS_ACTIVATION

Parameter

NameRequiredDescription
api_keyAllAPI key created on the Account screen
actionAllgetBalance, getPrices, getNumber, getStatus, setStatus
servicegetNumberService code (e.g. telegram, whatsapp, google). Same as the services page URL
countrygetNumberTwo-letter country code (e.g. gb, us, id)
idgetStatus, setStatusNumber ID returned by getNumber (starts with N-)
statussetStatus8 cancel, 3 one more code, 6 finish, 1 ready

Response text and meaning

ResponseMeaningMoney
ACCESS_NUMBER:ID:PHONEYou got a numberNumber price is charged
STATUS_WAIT_CODEWaiting for the codeUnchanged
STATUS_OK:CODECode receivedPayment complete
STATUS_WAIT_RETRY:CODEWaiting for the next code (previous codes included)No extra cost
STATUS_CANCELCancelled or time is upRefunded if no code arrived
ACCESS_CANCELCancelledFull refund
ACCESS_RETRY_GETWaiting for one more code on the same numberNo extra cost
ACCESS_ACTIVATIONYou finished using the numberUnchanged
NO_BALANCEGet it right after you top upNot charged
NO_NUMBERSNumbers for that country are not available right nowNot charged
NO_ACTIVATIONSYou have 20 open numbersNot charged
EARLY_CANCEL_DENIEDFor numbers with a code, finish (6) instead of cancellingUnchanged
BAD_KEYInvalid API keyNot charged
BAD_SERVICE / BAD_COUNTRYInvalid service or country codeNot charged
NO_ACTIVATIONNumber ID not foundUnchanged
TOO_MANY_REQUESTSExceeded 300 requests per minuteNot charged

Examples by language

import time, requests

BASE = "https://nuviosms.com/stubs/handler_api.php"
KEY = "API_KEY"

def call(**p):
    return requests.get(BASE, params={"api_key": KEY, **p}, timeout=30).text

r = call(action="getNumber", service="telegram", country="gb")
if not r.startswith("ACCESS_NUMBER"):
    raise SystemExit(r)
_, num_id, phone = r.split(":")
print("Number:", phone)

for _ in range(240):                      # 20 minutes
    s = call(action="getStatus", id=num_id)
    if s.startswith("STATUS_OK"):
        print("Code:", s.split(":")[1])
        call(action="setStatus", id=num_id, status=6)
        break
    time.sleep(5)

How it works

  • Get a number with getNumber, enter it on the sign-up screen, then call getStatus every 5 seconds.
  • STATUS_OK:code. When a code arrives, enter it and finish with setStatus 6.
  • If no code arrives within 20 minutes, the number price is automatically refunded to your balance.
  • Send up to 300 requests per minute.