Skip to main content

Documentation Index

Fetch the complete documentation index at: https://virtualsms.io/docs/llms.txt

Use this file to discover all available pages before exploring further.

1. Create an account

Sign up at virtualsms.io — free, no credit card required.

2. Top up your balance

Go to Dashboard → Deposit. We accept:
  • USDT (TRC20, ERC20, BEP20)
  • Bitcoin, Ethereum, BNB
  • Minimum deposit: $1

3. Get your API key

Go to Settings → API and copy your key.

4. Buy a number

curl -X POST https://virtualsms.io/api/v1/customer/purchase \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"service": "tg", "country": "GB"}'
Response shape:
{
  "success": true,
  "order_id": "550e8400-e29b-41d4-a716-446655440000",
  "phone_number": "+447911123456",
  "service": "tg",
  "country": "GB",
  "price": 0.50,
  "status": "pending",
  "expires_at": "2026-04-29T12:30:00Z"
}

5. Wait for the SMS

Poll the order status every 3-5 seconds:
curl https://virtualsms.io/api/v1/customer/order/ORDER_ID \
  -H "x-api-key: YOUR_API_KEY"
The messages array is empty while waiting and populated once SMS arrives.
Skip the polling — connect to wss://virtualsms.io/ws/orders for real-time SMS delivery. See the WebSocket guide.

Done

Use the phone number on the service, enter the OTP code when it arrives. After a 2-minute hold period you can POST /api/v1/customer/cancel/{order_id} to release a number with no SMS received and get a full refund.
Using an AI agent? Skip all this — use our MCP server and let Claude or any other agent handle the entire flow with one tool call.