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

# API Introduction

> VirtualSMS REST API reference with interactive playground.

<a href="https://god.gw.postman.com/run-collection/54876613-9b8478c6-b270-4694-ae06-545dd193e790?action=collection%2Ffork&collection-url=entityId%3D54876613-9b8478c6-b270-4694-ae06-545dd193e790%26entityType%3Dcollection%26workspaceId%3D9dd25cbf-c96e-494a-b010-74020fa15695" target="_blank" rel="noopener">
  <img src="https://run.pstmn.io/button.svg" alt="Run in Postman" />
</a>

The VirtualSMS REST API is the single interface behind [SMS verification](https://virtualsms.io/verifications). The same API also covers [dedicated rentals](https://virtualsms.io/rentals) and [matching-country proxies](https://virtualsms.io/proxies): one API, one prepaid balance.

## Base URL

```
https://virtualsms.io/api/v1
```

All requests require `x-api-key` header. Responses are JSON.

## Authentication

```bash theme={null}
curl https://virtualsms.io/api/v1/customer/balance \
  -H "x-api-key: YOUR_API_KEY"
```

<Tip>
  Each endpoint page below includes a built-in **Try It** panel on the right side. Enter your API key and test requests directly from the docs.
</Tip>

## Two API Styles

### Modern REST API (recommended)

Full-featured with JSON responses, WebSocket support, and webhooks.

```
https://virtualsms.io/api/v1/
```

### Legacy (sms-activate compatible)

Drop-in replacement for DaisySMS. Same action names, response formats, and error codes.

```
https://virtualsms.io/stubs/handler_api.php
```

## Rate Limits

* 60 requests/minute per API key
* 429 status returned when exceeded

## Response Format

Success responses return JSON with the requested data. Error responses include:

```json theme={null}
{
  "error": "insufficient_balance",
  "message": "Balance too low for this order"
}
```
