SMS Verification API

Use the BinOTP API to rent virtual phone numbers, receive OTP codes and cancel orders from your own app or script. Every endpoint returns JSON and authenticates with your API key.

Quick Start

Base URL:
https://binotp.com/api/v1
Your API key:
Sign up free to get your API key — you'll find it on your Account page after signing in.
Authentication — we recommend sending the API key in a header:
X-API-Key: YOUR_API_KEY
The old way ?apikey=... still works so existing integrations keep running, but it is not recommended: a key in the URL gets recorded in server logs, browser history and the Referer header.

Limits and notes

  • 60 requests per minute per API key, across all endpoints. Going over returns error 429.
  • Up to 5 orders can wait for a code at the same time.
  • Call get-sms about every 5 seconds — polling faster won't make the code arrive sooner.
  • If an order expires without a code, get-sms returns status "expired" and the refunded field shows the amount returned to your balance.

Code examples

Rent a Google (opt4) number in the US, then check for the code every 5 seconds until there is a result.

# 1. Rent a Google (opt4) number in the US
curl -X POST "https://binotp.com/api/v1/rent-number" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"service": "opt4", "country": "US"}'

# 2. Check for the SMS code (repeat every 5 seconds until status is not "waiting_sms")
curl "https://binotp.com/api/v1/get-sms?orderId=ORDER_ID" \
  -H "X-API-Key: YOUR_API_KEY"

Endpoints

8
GET/api/v1/me

Get account info

Returns your balance and account information.

PARAMETERS:
NameTypeRequiredDescription
apikeystringRequiredYour API key
RESPONSE:
{ "success": true, "balance": 10.00, "email": "user@example.com", "username": "demo" }

Error codes

On error the API returns one of the HTTP codes below with a JSON body where success is false and error describes the problem (always in English):

{ "success": false, "error": "Insufficient balance" }
HTTPerror (example)Meaning
400Missing service or country codeA required parameter is missing or invalid.
400Insufficient balanceYour balance is too low — top up and try again.
400Temporarily out of stock, please try againNo numbers available right now for this service/country — retry later or pick another country.
400Price is $0.25 which exceeds your maxPrice of $0.20…The current price is above your maxPrice — raise maxPrice or check /prices.
401Invalid or missing API keyThe API key is missing or wrong, or the account is disabled.
404Order not foundThere is no such order in your account.
409Cannot cancel: SMS code already received…The order already has a code, so it can't be cancelled — call get-sms to read it.
409Cannot cancel yet: please wait about 2 minutes after purchase…Cancelling is not possible right after purchase — retry in a few minutes.
429Too many requests. Limit: 60/minMore than 60 requests per minute.
429You already have 5 active orders (max 5)…Too many orders waiting for a code — wait for codes or expiry, or cancel some.
429Cannot cancel yet: please wait … minute(s) after purchase…Cancelling is not possible right after purchase — retry in a few minutes.
503Service temporarily unavailableThe service is temporarily unavailable — retry later.