What the API does
The VirtSMS public API lets you do everything the web dashboard does, programmatically. You request a virtual number for a given country and service, poll for the SMS code when it lands, and cancel or release the number when you are finished. Pricing, your balance, and your order history are all available as JSON, so you can build the whole flow into your own scripts and services without a human in the loop.
It is a plain REST API. Every endpoint lives under https://api.virtsms.com/api/v1/, takes and returns JSON, and authenticates with a single API key. There is no SDK to install and no special protocol to learn. If your language can make an HTTP request, it can use VirtSMS.
QA & test automation
Run real phone-verification flows in your end-to-end test suite without burning physical SIM cards or waiting on a human to read a code.
Multi-account operations
Provision and verify accounts in bulk across regions, with each number scoped to the country and service you actually need.
Growth automation
Wire verification into onboarding pipelines and internal tooling so the slow manual step disappears entirely.
Endpoints overview
A complete order is usually three calls: create an activation to get a number, poll the SMS endpoint until the code arrives, then either let it complete or cancel it. The core endpoints are below. The full reference, with request bodies and response shapes for every route, lives in the API documentation.
| Method | Endpoint | What it does |
|---|---|---|
| GET | /v1/countries | List available countries |
| GET | /v1/services | List supported services |
| GET | /v1/pricing | Live prices per country and service |
| POST | /v1/activations | Order a number for a service |
| GET | /v1/activations/:id/sms | Poll for the received code |
| POST | /v1/activations/:id/cancel | Cancel and refund a number |
| GET | /v1/balance | Check your account balance |
Authentication and rate limits
Generate an API key from your dashboard once your account is funded, then send it as a bearer token on every request. There are no separate OAuth flows or session tokens to manage. The key is the credential, so keep it server-side and out of client code.
Every endpoint is rate limited per key to keep the platform stable and fair. The limits are generous enough for normal automation and batch workloads. If you have a high-volume use case that needs more headroom, get in touch through the contact page and we can talk about it. Exact per-route limits are documented in the API reference.
Pricing model
There is no monthly fee and no per-seat cost. You top up a prepaid balance and pay per verification, with prices that vary by country and service based on real provider supply. High-supply regions are cheap, premium markets cost more, and the live numbers are always available from the /v1/pricing endpoint so your code can make cost-aware decisions before ordering.
๐ก If a code never arrives within the activation window, that order is refunded to your balance automatically. You only pay for verifications that actually deliver, which matters a lot when you are running thousands of them through the API.
Getting started
Create an account, add a balance, and generate an API key. From there it is three steps: list the countries and services you want, order a number, and poll for the code. The API documentation walks through a complete request-to-code example end to end.
Prefer to drive VirtSMS from an AI assistant instead of raw HTTP? We publish an MCP server, virtsms-mcp on npm, that exposes the same capabilities to tools like Claude and ChatGPT. You can order numbers, rent numbers, and check your balance in natural language. See the MCP server page for setup.