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).

Callback URL: Integrate your system with the smsVerificationService communication infrastructure using the following secure callback endpoints. Inbound SMS deliveries are POSTed to /api/callback on your deployed domain. Wallet deposit notifications use /api/wallet/callback.
Quick start

Use this section to test the API quickly.

  • Base URL: https://smsverificationservice.com
  • Authentication: Send your API key in the Authorization header 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_date is an absolute UTC timestamp.
  • Responses: JSON with success, plus data (200 OK) or error (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"
Authentication & request format

All /api/v1/... endpoints require:

Authorization: Bearer <your_api_key>
Content-Type: application/json   (POST only)
Accept: application/json
Tip: Generate / rotate your API key from the Dashboard → API page. Keep it secret — it grants full account access.
Rate limits & errors

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.

429 example
{
  "error": "Rate limit exceeded. Maximum 60 requests per minute."
}
401 example
{
  "error": "Invalid API key"
}
Tip: Validation errors on POST bodies return Django JSON error envelopes with HTTP 400 / 402 / 404 / 500 — always check response.status_code AND parse the JSON body.
Get account balance
GET https://smsverificationservice.com/api/v1/balance/

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}.

NameRequiredDescription
AuthorizationYesBearer <api_key>
curl -X GET "https://smsverificationservice.com/api/v1/balance/" \
  -H "Authorization: Bearer your_api_key_here"
200 OK
{
  "balance": 50.00,
  "currency": "USD"
}
401 Unauthorized
{
  "error": "Invalid API key"
}
List USA temporary services
GET https://smsverificationservice.com/api/v1/services/temporary/

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"
200 OK
{
  "success": true,
  "data": {
    "services": [
      { "service_id": 1012, "name": "WhatsApp", "price": 0.40 },
      { "service_id": 22,   "name": "Telegram", "price": 0.30 }
    ]
  }
}
401 Unauthorized
{
  "success": false,
  "error": "Invalid or missing API key"
}
List USA rental services
GET https://smsverificationservice.com/api/v1/services/rental/

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"
200 OK
[
  {
    "name": "WhatsApp",
    "sell_price_3days": 4.00,
    "sell_price_30days": 12.00,
    "price_3days": 4.00,
    "price_30days": 12.00
  }
]
401 Unauthorized
{
  "error": "Invalid API key"
}
List 1-day rental services
GET https://smsverificationservice.com/api/v1/services/rent-1day/

USA 1-day rental products. Use the returned service_id to place an order via /api/v1/order/rent-1day/.

200 OK
{
  "success": true,
  "data": {
    "services": [
      { "service_id": 4421, "name": "Tinder",   "price": 1.20 },
      { "service_id": 4422, "name": "Discord", "price": 1.50 }
    ]
  }
}
List 30-day rental services
GET https://smsverificationservice.com/api/v1/services/rent-30days/

USA 30-day rental products. Use the returned service_id to place an order via /api/v1/order/rent-30days/.

200 OK
{
  "success": true,
  "data": {
    "services": [
      { "service_id": 7821, "name": "Instagram", "price": 12.00 }
    ]
  }
}
List best temporary services
GET https://smsverificationservice.com/api/v1/services/best-temp/

Curated short-term USA services with the highest delivery success rate.

200 OK
{
  "success": true,
  "data": {
    "services": [
      { "service_id": 1012, "name": "WhatsApp", "price": 0.40, "country": "US" }
    ]
  }
}
List eSIM plans
GET https://smsverificationservice.com/api/v1/services/esim/

Active eSIM data plans. Returns a raw JSON array.

200 OK
[
  {
    "name": "USA 5GB / 30 days",
    "data_gb": 5.0,
    "validity_days": 30,
    "sell_price": 12.00,
    "price": 12.00
  }
]
Global Numbers

Global Numbers let you receive SMS verifications on phone numbers issued in countries other than the United States. The flow is:

  1. Call /api/v1/global/countries/ to list available countries.
  2. Call /api/v1/global/services/?country_id=1 to see services + prices for that country.
  3. Call POST /api/v1/order/global/ with the chosen service_id + country_id to purchase a number.
  4. Poll GET /api/v1/order/{order_id}/status/ until the OTP arrives.
  5. If you no longer need the number, call POST /api/v1/order/{order_id}/cancel/.
Global countries
GET https://smsverificationservice.com/api/v1/global/countries/

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"
200 OK
{
  "countries": [
    { "country_id": 4,  "country_name": "United Kingdom" },
    { "country_id": 17, "country_name": "Germany" },
    { "country_id": 9,  "country_name": "India" }
  ]
}
401 Unauthorized
{
  "error": "Invalid API key"
}
Global services for a country
GET https://smsverificationservice.com/api/v1/global/services/?country_id=1

List the services available in the given country, with the sell price you will be charged.

NameTypeRequiredDescription
country_idintegerYesReturned 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"
200 OK
{
  "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
    }
  ]
}
400 Bad Request
{
  "error": "country_id query parameter is required"
}
Order a USA temporary number
POST https://smsverificationservice.com/api/v1/order/temporary/

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.

NameTypeRequiredDescription
service_idinteger / stringYesFrom /api/v1/services/temporary/.
area_codestring (3 digits)NoOptional 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 }'
201 Created
{
  "success": true,
  "data": {
    "order_id": 458731,
    "phone": "+1 415 555 0123",
    "status": "pending"
  }
}
400 / 402 / 404
{
  "success": false,
  "error": "Insufficient balance"
}
Order a USA rental number
POST https://smsverificationservice.com/api/v1/order/rental/

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.

NameTypeRequiredDescription
servicestringYesService name (case-insensitive) from /api/v1/services/rental/.
durationintegerYes3 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 }'
201 Created
{
  "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"
}
404 Not Found
{
  "error": "Service not found"
}
Order a best-temp USA number
POST https://smsverificationservice.com/api/v1/order/best-temp/

Place a short-term order using the curated best-temp catalog (see /api/v1/services/best-temp/).

NameTypeRequiredDescription
service_idintegerYesFrom /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"
  }
}
Order a 1-day rental number
POST https://smsverificationservice.com/api/v1/order/rent-1day/

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"
  }
}
Order a 30-day rental number
POST https://smsverificationservice.com/api/v1/order/rent-30days/

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"
  }
}
Order a Global Number
POST https://smsverificationservice.com/api/v1/order/global/

Purchase a non-USA verification number. Wallet is debited at the price returned by /api/v1/global/services/ for that country.

NameTypeRequiredDescription
service_idintegerYesFrom /api/v1/global/services/.
country_idintegerYesFrom /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 }'
201 Created
{
  "success": true,
  "data": {
    "order_id": 458736,
    "status": "pending",
    "phone": "+44 20 7946 0017"
  }
}
400 / 404
{
  "success": false,
  "error": "Service not available"
}
Order an eSIM
POST https://smsverificationservice.com/api/v1/order/esim/

Order an eSIM data plan. The activation_code is returned in the response.

NameTypeRequiredDescription
planstringYesPlan 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"
}
List your orders
GET https://smsverificationservice.com/api/v1/orders/

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 order status & SMS / OTP
GET https://smsverificationservice.com/api/v1/order/<order_id>/status/

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.

NameTypeRequiredDescription
order_idintegerYesThe 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"
200 OK
{
  "success": true,
  "data": {
    "order_id": 458736,
    "status": "completed",
    "otp": "548921",
    "message": "Your WhatsApp code is 548921",
    "phone": "+44 20 7946 0017"
  }
}
404 Not Found
{
  "success": false,
  "error": "Order not found"
}
Cancel an order
POST https://smsverificationservice.com/api/v1/order/<order_id>/cancel/

Cancel an eligible order. Refundable orders return the funds to your wallet automatically. Already-cancelled or completed orders return HTTP 400.

NameTypeRequiredDescription
order_idintegerYesThe order id to cancel.
curl -X POST "https://smsverificationservice.com/api/v1/order/458736/cancel/" \
  -H "Authorization: Bearer your_api_key_here"
200 OK
{
  "success": true,
  "data": {
    "order_id": 458736,
    "status": "cancelled"
  }
}
400 Bad Request
{
  "success": false,
  "error": "Order cannot be cancelled"
}
Renew a rental order
POST https://smsverificationservice.com/api/v1/order/<order_id>/renew/

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"
  }
}
HTTP callback (incoming SMS)

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"
  }
}
Tip: Always respond with HTTP 200 within 5 seconds. Non-2xx responses are retried with exponential backoff for up to 24 hours.