SMS Verification API — real non-VoIP numbers. getNumber, getSMS, getStatus for developers & resellers
The OTP Grove REST API v1 lets you automate real non-VoIP SMS verification — non-VoIP number API buy, bulk reseller access, SMS-Activate API alternative. All charges deduct from your wallet. Get your API key from the dashboard API Key page.
Standard developer accounts: 60 requests/minute (standard) · 300+/minute (reseller). Reseller/enterprise tiers receive higher limits — contact support for mass SMS verification API volume.
Webhook SMS delivery available for reseller/enterprise tiers — contact support.
non-voip number API buy, real SIM API access, OTP API real non-voip, getNumber API real SIM, getSMS API non-voip, REST API real phone numbers, SMS-activate API alternative cheaper, bulk real SIM numbers API.
Every request must include your API key using one of the following methods:
Authorization: Bearer YOUR_API_KEY?api_key=YOUR_API_KEYBearer header example:
Query string example:
Invalid or missing keys receive 401 with {"error": "Invalid or missing API key"}.
The type parameter is used by /services/ and /buy/.
| type | Description |
|---|---|
usa1 | Temp Number USA-1 (USA non-VoIP numbers) |
usa2 | Temp Number USA-2 (alternate USA route) |
global | Global Temp Number — requires country parameter |
longterm | Long-Term Providers — requires country parameter |
dataplan | Data plans — optional country filter |
For type=global, use GET /api/v1/countries/ to list valid country names.
Returns your OTP Grove wallet balance.
| Parameter | Required | Description |
|---|---|---|
| None | ||
Example response:
List available services and prices for a product line. Only services with price > $0.00 are returned.
| Parameter | Required | Description |
|---|---|---|
type | Yes | usa1, usa2, global, longterm, or dataplan |
country | Varies | Required for global and longterm. Optional filter for dataplan (e.g. Afghanistan) |
Global example:
Long-term example:
Data plan example:
Stable service IDs: Service IDs are stable database IDs (e.g. 1358186) — they do not change when the catalog syncs. Always use the id returned by /api/v1/services/ when calling /api/v1/buy/.
Example response (usa1 / usa2 / global): JSON array; response header X-Powered-By: OTPGrove API
Example response (longterm):
Example response (dataplan):
Use the id from this list as service_id when placing an order.
List all countries available for type=global with service counts.
| Parameter | Required | Description |
|---|---|---|
| None | ||
Example response:
Use the name value as the country parameter in /services/ and /buy/.
Purchase a service. Funds are charged from your wallet immediately.
| Field | Required | Description |
|---|---|---|
service_id | Yes | Integer id from /services/ response (stable database ID) |
type | Yes | usa1, usa2, global, longterm, or dataplan |
country | Varies | Required for global and longterm. Optional for dataplan |
area_code | No | US state code or Random Location (usa1 / usa2 only; default: Random Location) |
quantity | No | Integer quantity (longterm / dataplan only; default: 1) |
Parameters by type:
usa1 / usa2: service_id (required), area_code (optional)global: service_id (required), country (required)longterm: service_id (required), country (required), quantity (optional)dataplan: service_id (required), country (optional), quantity (optional)USA-1 buy example:
Global buy example:
Long-term buy example:
Data plan buy example:
Example response:
Poll for SMS content or order details. The order_id must belong to your account. Supports all order types: usa1, usa2, global, longterm, dataplan.
| Parameter | Required | Description |
|---|---|---|
order_id | Yes | Order ID string from /buy/ response |
Example response (temp number):
Status values: pending, received, cancelled, timeout.
Check order status without the full SMS payload. The order_id must belong to your account. Supports all order types: usa1, usa2, global, longterm, dataplan.
| Parameter | Required | Description |
|---|---|---|
order_id | Yes | Order ID string from /buy/ response |
Example response:
Status values: pending, received, cancelled, timeout.
Cancel a pending temp-number order. Refund is credited to your wallet when no SMS was received.
Cancel is only supported for usa1, usa2, and global orders. For longterm and dataplan orders, cancel returns:
| Field | Required | Description |
|---|---|---|
order_id | Yes | Order ID string from /buy/ response |
Example response:
| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request — response body: {"error": "..."} |
| 401 | Unauthorized — invalid or missing API key |
| 404 | Not found — e.g. invalid service_id or order_id |
| HTTP | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request — invalid parameters |
| 401 | Invalid or missing API key |
| 404 | Service or order not found |
| 429 | Rate limit exceeded — retry after 60s |
| 500 | Server error — contact support |
Yes. OTPGrove REST API starts from about $0.10 per real non-VoIP OTP with no $30 minimum. SMS-Activate shut down — migrate getNumber/getSMS scripts to /api/v1/ endpoints.
Yes. Every usa1/usa2/global temp number via API is a real non-VoIP carrier number — not VoIP. Ideal for WhatsApp, Google, Telegram OTP automation.
Register free at /register/, fund your wallet, then copy your API key from the dashboard API Key page. Start integrating in minutes.
Yes. High-volume developers and resellers get bulk non-VoIP API access with volume discounts. Contact support for wholesale rates above 10,000 OTP/month.
Standard accounts: 60 requests/minute per API key. Bulk/reseller tiers: 300+ requests/minute. Contact support to raise limits.
Webhook delivery for incoming SMS is on the roadmap for reseller tiers. Currently poll GET /api/v1/sms/ every 3–5 seconds for OTP.