Integrate NonVoipOtp SMS verification and instant OTP across 204 countries
The NonVoipOtp REST API lets you automate phone verification using our platform inventory. All charges are deducted from your NonVoipOtp wallet. Obtain your API key from the dashboard API Key page after logging in.
Every request must include your API key using one of the following methods:
Authorization: Bearer YOUR_API_KEY?api_key=YOUR_API_KEYInvalid or missing keys receive 401 Unauthorized.
For POST requests (/buy/, /renew/, /cancel/), use the
Authorization: Bearer header, or append ?api_key=YOUR_API_KEY
to the request URL.
After logging in, open API Key in the dashboard sidebar. Your key is created automatically on first visit. Copy it from that page and use it in API requests. The same wallet balance shown in the dashboard is used for API purchases.
GET /api/v1/services/?type=usa1 (or usa2 / usa3 / global / longterm) and pick an id.POST /api/v1/buy/ with that service_id and the same type.GET /api/v1/sms/?order_id=… until status is received (use the code field for the OTP).POST /api/v1/renew/ for another SMS on the same short-term number, or POST /api/v1/cancel/ to refund a pending order.GET /api/v1/services/ returns the same rates you see in the dashboard for your account.id from the list when buying.service_id — This is the row number in the /services/ response (starting at 1). Call /services/ immediately before /buy/; IDs can change when the catalog updates.WhatsApp and WhatsApp (Server-2)). Use the id of the exact row you want. The server field is 1, 2, or 3.type=longterm, pass product=usa-1d (or usa-3d / usa-7d / usa-14d / usa-30d) on both /services/ and /buy/.type=dedicated for private-line inventory (same as the Long Term dedicated section in the dashboard).page and limit (max 500) to /services/ for paged results. Without them the response stays a full JSON array for compatibility. With pagination the body is {"results":[...],"total":N,"page":1,"page_size":100,"pages":N,"has_next":true,"has_previous":false}. Row id values stay absolute (stable for /buy/).q=whatsapp filters the service list by name/code.{"error": "NonVoipOtp balance is too low."} or {"error": "nonvoipotp.com out of stock"}. Upstream provider names are never exposed.GET /api/v1/balance/ always returns your live wallet (and closes overdue pending orders first so timeout refunds appear immediately). Buy / cancel / renew responses also include a balance field when funds change./sms/ or /status/ until received, cancelled, or timeout.
Public prices match the pricing page
and dashboard Temp Number USA-1 rates. Live data is loaded from our pricing API:
/pricing/api/usa1/
| Service | Price (USD) |
|---|---|
| 009ibbq | $0.50 |
| 10-4 Wex | $0.50 |
| 101plus | $0.50 |
| 101Sweets | $0.50 |
| 163СOM | $0.03 |
| 1688 | $1.72 |
| 1q | $0.30 |
| 1StopMove | $0.50 |
| 1xbet | $1.72 |
| 24betting | $0.03 |
| 25Clicks | $0.50 |
| 2domains | $1.72 |
| 2Number | $0.50 |
| 2redbeans | $0.30 |
| 32Red | $1.72 |
Showing up to 15 services. Use GET /api/v1/services/?type=usa1 for the full list with API purchase IDs.
| type | Description |
|---|---|
usa1 | Temp Number USA-1 (full dashboard catalog) |
usa2 | Temp Number USA-2 |
usa3 | Temp Number USA-3 |
global | Global Temp Number — requires country (Server-1 / Server-2 / Server-3 rows) |
longterm | Long Term USA — use product=usa-1d|usa-3d|usa-7d|usa-14d|usa-30d |
dedicated | Dedicated / private-line numbers |
Returns your NonVoipOtp wallet balance.
Example response:
List available services and prices for a product line.
| Parameter | Required | Description |
|---|---|---|
type | Yes | usa1, usa2, usa3, global, longterm, or dedicated |
country | For global | Country name (e.g. Germany) when type=global |
product | For longterm | usa-1d, usa-3d, usa-7d, usa-14d, or usa-30d |
q | No | Optional name/code search filter |
page / limit | No | Optional pagination (default response remains a full array) |
Example response:
Use the id from this list as service_id when buying a number.
Purchase a verification number. Funds are charged from your wallet immediately.
| Field | Required | Description |
|---|---|---|
service_id | Yes | ID from /services/ response |
type | Yes | usa1, usa2, usa3, global, longterm, or dedicated |
country | For global | Country name when type=global |
product | For longterm | Duration product id (e.g. usa-1d) |
area_code | No | US state code or Random Location (usa1/usa2/usa3) |
Example response:
Poll for the SMS verification code. Returns both raw code digits and a formatted sms string.
| Parameter | Required | Description |
|---|---|---|
order_id | Yes | Order ID from /buy/ |
Example response:
Check order status (includes code when SMS already arrived).
Example response:
Status values: pending, received, cancelled, timeout.
Request another SMS on the same short-term number after the first OTP (USA-1 / USA-2 / USA-3 when renew is available). Charges the original sell price again.
Example response:
Cancel a pending order. Refund is credited to your wallet when no SMS was received.
Example response:
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad Request |
| 401 | Unauthorized |
| 404 | Not Found |
| 500 | Server Error |