USAVerify Logo USAVerify
Developer REST API v1.0

Automate SMS OTP Verification

Integrate authentic USA Non-VoIP physical carrier SIMs (AT&T, Verizon, T-Mobile) and 200+ worldwide carrier numbers directly into your bots, software, and registration pipelines.

1. Authentication

All API requests require your Bearer API token in the Authorization header or passed as an api_key query parameter.

HEADER FORMAT
Authorization: Bearer YOUR_SECRET_API_KEY

Base URL for all REST endpoints: https://usaverifypro.com/api

2. Get User Balance & Profile

Retrieve your real-time account balance and profile details.

GET /api/me
cURL REQUEST
curl -X GET "https://usaverifypro.com/api/me" \
 -H "Authorization: Bearer YOUR_API_KEY"
JSON RESPONSE (200 OK)
{
 "ok": true,
 "email": "user@example.com",
 "balance": 25.50,
 "currency": "USD"
}

3. Rent Real USA Physical Non-VoIP Number

Rent a clean physical SIM line from AT&T, Verizon, or T-Mobile tailored for specific services.

POST /api/order
ParameterTypeDescription
service string Service code (e.g. wa for WhatsApp, tg for Telegram, openai for ChatGPT, go for Google).
max_price float (optional) Maximum price limit you are willing to pay.
PYTHON EXAMPLE
import requests

res = requests.post(
 "https://usaverifypro.com/api/order",
 headers={"Authorization": "Bearer YOUR_API_KEY"},
 json={"service": "wa"} # WhatsApp
)
data = res.json()
print("Order ID:", data["id"])
print("Phone Number:", data["number"]) # e.g. +14159021234

4. Receive SMS OTP Code (Automatic Multi-Code)

Check the status of an active number rental to retrieve incoming SMS codes. Supports automatic multi-code resends.

GET /api/check_sms?id=ORDER_ID
JSON RESPONSE (CODE DELIVERED)
{
 "status": "STATUS_OK",
 "code": "849201",
 "codes": ["849201"],
 "number": "+14159021234"
}

5. Cancel Order & Auto-Refund

Cancel an active order if you wish to release the line early. If no SMS was received, your balance is refunded 100% automatically.

POST /api/cancel
PAYLOAD
{
 "id": "1948201",
 "status": "8" // 8 = Cancel & Refund
}

6. Zero-Dependency Python Client (usaverify.py)

Save this complete wrapper file as usaverify.py directly in your project root. It uses only standard requests and connects directly to our 4 core endpoints (/api/me, /api/order, /api/check_sms, /api/cancel):

usaverify.py (CLIENT CLASS)
import time
import requests

class USAVerify:
 def __init__(self, api_key: str, base_url: str = "https://usaverifypro.com/api"):
 self.api_key = api_key
 self.base_url = base_url.rstrip("/")
 self.session = requests.Session()
 self.session.headers.update({
 "Authorization": f"Bearer {self.api_key}",
 "Content-Type": "application/json",
 "User-Agent": "USAVerify-SDK/1.0.0"
 })

 def get_me(self) -> dict:
 """Get account profile and live balance.""" res = self.session.get(f"{self.base_url}/me")
 res.raise_for_status()
 return res.json()

 def get_balance(self) -> float:
 """Get live wallet balance as float.""" return float(self.get_me().get("balance", 0.0))

 def rent_number(self, service: str = "wa") -> dict:
 """Rent a physical Tier-1 US non-VoIP number for SMS OTP.""" res = self.session.post(f"{self.base_url}/order", json={"service": service})
 res.raise_for_status()
 return res.json()

 def check_sms(self, order_id: str) -> dict:
 """Check status of active rental and retrieve received OTP.""" res = self.session.get(f"{self.base_url}/check_sms", params={"id": str(order_id)})
 res.raise_for_status()
 return res.json()

 def get_sms_code(self, order_id: str, timeout: int = 120, poll_interval: int = 4) -> str:
 """Poll for incoming OTP code until received or timeout expires.""" start = time.time()
 while time.time() - start < timeout:
 data = self.check_sms(order_id)
 if data.get("ok"):
 code = data.get("code") or data.get("sms_code")
 if code and code not in ["waiting", "pending"]:
 return str(code)
 time.sleep(poll_interval)
 raise TimeoutError(f"SMS code not received within {timeout}s for order {order_id}")

 def cancel_order(self, order_id: str) -> dict:
 """Cancel order early and trigger 100% automated refund.""" res = self.session.post(f"{self.base_url}/cancel", json={"id": str(order_id), "status": "8"})
 res.raise_for_status()
 return res.json()

Usage Quickstart

main.py
from usaverify import USAVerify

client = USAVerify(api_key="YOUR_API_KEY")

# 1. Rent physical line
order = client.rent_number(service="wa")
print(f"Rented Phone Number: {order['phone']} (Order ID: {order['id']})")

# 2. Wait for incoming OTP code
code = client.get_sms_code(order_id=order["id"], timeout=120)
print(f" Received SMS OTP Code: {code}")
Machine-Readable OpenAPI 3.0 Specification

Discover and generate automated client SDKs or integrate AI agent tools.

Download openapi.json →