API Documentation
Use your API key to integrate with the smsVerificationService REST API.
Log in to create API keys under Dashboard → API. Configure your server to receive inbound SMS via webhook (see HTTP callback below).
/api/callback on your deployed domain. Wallet deposit notifications use /api/wallet/callback.
Endpoints in this page
- Authentication
- Rate limits & errors
- Wallet balance
- USA temporary services
- USA rental services
- 1-day rental services
- 30-day rental services
- Best temporary services
- eSIM plans
- Global countries
- Global services
- Order temporary number
- Order rental number
- Order best temporary
- Order 1-day rental
- Order 30-day rental
- Order global number
- Order eSIM
- List orders
- Order status / SMS
- Cancel order
- Renew order
- HTTP callback (incoming SMS)
Use this section to test the API quickly.
- Base URL: https://smsverificationservice.com
- Authentication: Send your API key in the
Authorizationheader as a Bearer token (no email/password in the body). - Body formats: JSON (
application/json) only for POST endpoints. - Time: All datetimes are UTC (ISO 8601). Long-term order
expiry_dateis an absolute UTC timestamp. - Responses: JSON with
success, plusdata(200 OK) orerror(4xx/5xx). Some legacy endpoints return raw arrays — see each endpoint.
curl -X GET "https://smsverificationservice.com/api/v1/balance/" \ -H "Authorization: Bearer your_api_key_here" \ -H "Accept: application/json"
All /api/v1/... endpoints require:
Authorization: Bearer <your_api_key> Content-Type: application/json (POST only) Accept: application/json
Requests are throttled to 60 requests / API key / minute. Exceeding the limit returns HTTP 429. Always honour Retry-After when present and back off exponentially.
{
"error": "Rate limit exceeded. Maximum 60 requests per minute."
}
{
"error": "Invalid API key"
}
response.status_code AND parse the JSON body.Returns the current wallet balance in USD for the authenticated API key. /api/v1/wallet/balance/ is an alias and returns the same payload wrapped in {success, data}.
| Name | Required | Description |
|---|---|---|
Authorization | Yes | Bearer <api_key> |
curl -X GET "https://smsverificationservice.com/api/v1/balance/" \ -H "Authorization: Bearer your_api_key_here"
{
"balance": 50.00,
"currency": "USD"
}
{
"error": "Invalid API key"
}
USA short-term services available for SMS verification, with sell prices.
curl -X GET "https://smsverificationservice.com/api/v1/services/temporary/" \ -H "Authorization: Bearer your_api_key_here"
{
"success": true,
"data": {
"services": [
{ "service_id": 1012, "name": "WhatsApp", "price": 0.40 },
{ "service_id": 22, "name": "Telegram", "price": 0.30 }
]
}
}
{
"success": false,
"error": "Invalid or missing API key"
}
USA rental numbers with both 3-day and 30-day prices. Returns a raw JSON array.
curl -X GET "https://smsverificationservice.com/api/v1/services/rental/" \ -H "Authorization: Bearer your_api_key_here"
[
{
"name": "WhatsApp",
"sell_price_3days": 4.00,
"sell_price_30days": 12.00,
"price_3days": 4.00,
"price_30days": 12.00
}
]
{
"error": "Invalid API key"
}
USA 1-day rental products. Use the returned service_id to place an order via /api/v1/order/rent-1day/.
{
"success": true,
"data": {
"services": [
{ "service_id": 4421, "name": "Tinder", "price": 1.20 },
{ "service_id": 4422, "name": "Discord", "price": 1.50 }
]
}
}
USA 30-day rental products. Use the returned service_id to place an order via /api/v1/order/rent-30days/.
{
"success": true,
"data": {
"services": [
{ "service_id": 7821, "name": "Instagram", "price": 12.00 }
]
}
}
Curated short-term USA services with the highest delivery success rate.
{
"success": true,
"data": {
"services": [
{ "service_id": 1012, "name": "WhatsApp", "price": 0.40, "country": "US" }
]
}
}
Active eSIM data plans. Returns a raw JSON array.
[
{
"name": "USA 5GB / 30 days",
"data_gb": 5.0,
"validity_days": 30,
"sell_price": 12.00,
"price": 12.00
}
]
Global Numbers let you receive SMS verifications on phone numbers issued in countries other than the United States. The flow is:
- Call
/api/v1/global/countries/to list available countries. - Call
/api/v1/global/services/?country_id=1to see services + prices for that country. - Call
POST /api/v1/order/global/with the chosenservice_id+country_idto purchase a number. - Poll
GET /api/v1/order/{order_id}/status/until the OTP arrives. - If you no longer need the number, call
POST /api/v1/order/{order_id}/cancel/.
List every country (excluding USA) for which we currently have at least one in-stock service.
curl -X GET "https://smsverificationservice.com/api/v1/global/countries/" \ -H "Authorization: Bearer your_api_key_here"
{
"countries": [
{ "country_id": 4, "country_name": "United Kingdom" },
{ "country_id": 17, "country_name": "Germany" },
{ "country_id": 9, "country_name": "India" }
]
}
{
"error": "Invalid API key"
}
List the services available in the given country, with the sell price you will be charged.
| Name | Type | Required | Description |
|---|---|---|---|
country_id | integer | Yes | Returned by /api/v1/global/countries/. |
curl -X GET "https://smsverificationservice.com/api/v1/global/services/?country_id=4" \ -H "Authorization: Bearer your_api_key_here"
{
"country_id": 4,
"country_name": "United Kingdom",
"offers": [
{
"service_id": 1012,
"service_name": "WhatsApp",
"country_id": 4,
"country_name": "United Kingdom",
"sell_price": 0.95,
"price": 0.95
}
]
}
{
"error": "country_id query parameter is required"
}
Place an order for a USA short-term verification number. Wallet is debited at sell_price; if the provider fails the debit is rolled back.
| Name | Type | Required | Description |
|---|---|---|---|
service_id | integer / string | Yes | From /api/v1/services/temporary/. |
area_code | string (3 digits) | No | Optional 3-digit US area code (e.g. "212"). |
curl -X POST "https://smsverificationservice.com/api/v1/order/temporary/" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{ "service_id": 1012 }'
{
"success": true,
"data": {
"order_id": 458731,
"phone": "+1 415 555 0123",
"status": "pending"
}
}
{
"success": false,
"error": "Insufficient balance"
}
Place an order for a USA rental number with a fixed duration (3 or 30 days). The order is active immediately and an expiry_date is returned.
| Name | Type | Required | Description |
|---|---|---|---|
service | string | Yes | Service name (case-insensitive) from /api/v1/services/rental/. |
duration | integer | Yes | 3 or 30. |
curl -X POST "https://smsverificationservice.com/api/v1/order/rental/" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{ "service": "WhatsApp", "duration": 3 }'
{
"success": true,
"order_id": 458732,
"phone": "+1 415 555 0124",
"sell_price": 4.00,
"price": 4.00,
"status": "active",
"expiry_date": "2026-05-14T05:00:00Z"
}
{
"error": "Service not found"
}
Place a short-term order using the curated best-temp catalog (see /api/v1/services/best-temp/).
| Name | Type | Required | Description |
|---|---|---|---|
service_id | integer | Yes | From /api/v1/services/best-temp/. |
curl -X POST "https://smsverificationservice.com/api/v1/order/best-temp/" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{ "service_id": 1012 }'
{
"success": true,
"data": {
"order_id": 458733,
"status": "pending",
"phone": "+1 415 555 0125"
}
}
Place a 1-day USA rental order. Use service_id from /api/v1/services/rent-1day/.
curl -X POST "https://smsverificationservice.com/api/v1/order/rent-1day/" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{ "service_id": 4421 }'
{
"success": true,
"data": {
"order_id": 458734,
"status": "pending",
"phone": "+1 415 555 0126"
}
}
Place a 30-day USA rental order. Use service_id from /api/v1/services/rent-30days/.
curl -X POST "https://smsverificationservice.com/api/v1/order/rent-30days/" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{ "service_id": 7821 }'
{
"success": true,
"data": {
"order_id": 458735,
"status": "pending",
"phone": "+1 415 555 0127"
}
}
Purchase a non-USA verification number. Wallet is debited at the price returned by /api/v1/global/services/ for that country.
| Name | Type | Required | Description |
|---|---|---|---|
service_id | integer | Yes | From /api/v1/global/services/. |
country_id | integer | Yes | From /api/v1/global/countries/. |
curl -X POST "https://smsverificationservice.com/api/v1/order/global/" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{ "service_id": 1012, "country_id": 4 }'
{
"success": true,
"data": {
"order_id": 458736,
"status": "pending",
"phone": "+44 20 7946 0017"
}
}
{
"success": false,
"error": "Service not available"
}
Order an eSIM data plan. The activation_code is returned in the response.
| Name | Type | Required | Description |
|---|---|---|---|
plan | string | Yes | Plan name (case-insensitive) from /api/v1/services/esim/. |
curl -X POST "https://smsverificationservice.com/api/v1/order/esim/" \
-H "Authorization: Bearer your_api_key_here" \
-H "Content-Type: application/json" \
-d '{ "plan": "USA 5GB / 30 days" }'
{
"success": true,
"order_id": 458737,
"activation_code": "SIM-1234567890",
"sell_price": 12.00,
"price": 12.00,
"status": "active"
}
Returns the 50 most recent orders for the authenticated account, newest first. Returns a raw JSON array.
curl -X GET "https://smsverificationservice.com/api/v1/orders/" \ -H "Authorization: Bearer your_api_key_here"
[
{
"order_id": 458736,
"service": "WhatsApp (UK)",
"status": "completed",
"sell_price": 0.95,
"price": 0.95,
"phone": "+44 20 7946 0017",
"created_at": "2026-05-12T05:33:21Z"
}
]
Get the current status of one of your orders. Poll this endpoint to receive the OTP / SMS code as soon as the upstream provider delivers it. For 1-day / 30-day rentals the response also includes time_left_seconds / days_left.
| Name | Type | Required | Description |
|---|---|---|---|
order_id | integer | Yes | The order id returned when you placed the order. |
curl -X GET "https://smsverificationservice.com/api/v1/order/458736/status/" \ -H "Authorization: Bearer your_api_key_here"
{
"success": true,
"data": {
"order_id": 458736,
"status": "completed",
"otp": "548921",
"message": "Your WhatsApp code is 548921",
"phone": "+44 20 7946 0017"
}
}
{
"success": false,
"error": "Order not found"
}
Cancel an eligible order. Refundable orders return the funds to your wallet automatically. Already-cancelled or completed orders return HTTP 400.
| Name | Type | Required | Description |
|---|---|---|---|
order_id | integer | Yes | The order id to cancel. |
curl -X POST "https://smsverificationservice.com/api/v1/order/458736/cancel/" \ -H "Authorization: Bearer your_api_key_here"
{
"success": true,
"data": {
"order_id": 458736,
"status": "cancelled"
}
}
{
"success": false,
"error": "Order cannot be cancelled"
}
Extend a rental order at the current sell price. The wallet is debited atomically; on success the order keeps the same number with a new expiry_date.
curl -X POST "https://smsverificationservice.com/api/v1/order/458732/renew/" \ -H "Authorization: Bearer your_api_key_here"
{
"success": true,
"data": {
"order_id": 458732,
"status": "active",
"phone": "+1 415 555 0124"
}
}
When the upstream provider delivers an SMS, smsVerificationService POSTs the payload to your configured callback URL (typically POST /api/callback). You do not call this endpoint — your server receives it. Configure the URL in Dashboard → API → Callbacks.
{
"event": "incoming_message",
"message": {
"order_id": 454303,
"number": "16095170503",
"service": "paypal",
"sender": "8843",
"sms": "Your PayPal OTP is 545",
"type": "str"
}
}