Key-based auth
One header on every request. Rotate or revoke from the dashboard.
Real-time operations
Numbers are issued instantly; status reflects the live pool.
Rate limited
100 requests per 15 minutes per IP, reported in response headers.
Base URL
Every path below is relative to this origin. HTTPS only.
https://verifypulse.com/api/v1Getting an API key
- 1Log in to your VerifyPulse account
- 2Open the API Keys section in your dashboard
- 3Create a new key with a descriptive name
- 4Store it securely — it is shown only once
Sending the key
header — preferred
X-API-Key: your_api_key_herequery parameter
?api_key=your_api_key_hereendpoints8 total
- GET
/balanceGet your current account balance - GET
/countriesGet list of available countries for SMS verification - GET
/servicesGet available services for a specific country and operator - POST
/buy-numberPurchase a phone number for SMS verification - GET
/numbersGet list of all your purchased numbers - GET
/numbers/{number_id}/statusCheck the status of a number and get the SMS code if received - POST
/numbers/{number_id}/cancelCancel a number and get a refund (if within the time limit) - POST
/numbers/{number_id}/repeatBuy a new number with the same parameters as an existing one
GET /balance — 200
{
"success": true,
"balance": 25.50,
"currency": "USD"
}POST /buy-number — 200
{
"success": true,
"number": {
"id": "abc123def456",
"number": "+79001234567",
"number_id": "12345",
"country": "Russia",
"country_id": "0",
"operator": "any",
"service": "vk",
"price": 0.15,
"status": "active",
"created_at": "2024-01-15T10:30:00.000Z"
}
}node · axios
const axios = require('axios');
const API_KEY = 'your_api_key_here';
const BASE_URL = 'https://verifypulse.com/api/v1';
// Get balance
async function getBalance() {
try {
const response = await axios.get(`${BASE_URL}/balance`, {
headers: { 'X-API-Key': API_KEY }
});
console.log('Balance:', response.data.balance);
} catch (error) {
console.error('Error:', error.response.data.error);
}
}
// Buy a number
async function buyNumber() {
try {
const response = await axios.post(`${BASE_URL}/buy-number`, {
country: 'Russia',
countryID: '0',
operator: 'any',
service: 'vk'
}, {
headers: { 'X-API-Key': API_KEY }
});
console.log('Number:', response.data.number);
} catch (error) {
console.error('Error:', error.response.data.error);
}
}python · requests
import requests
API_KEY = 'your_api_key_here'
BASE_URL = 'https://verifypulse.com/api/v1'
headers = {'X-API-Key': API_KEY}
# Get balance
def get_balance():
response = requests.get(f'{BASE_URL}/balance', headers=headers)
if response.status_code == 200:
data = response.json()
print(f"Balance: {data['balance']}")
else:
print(f"Error: {response.json()['error']}")
# Buy a number
def buy_number():
data = {
'country': 'Russia',
'countryID': '0',
'operator': 'any',
'service': 'vk'
}
response = requests.post(f'{BASE_URL}/buy-number', json=data, headers=headers)
if response.status_code == 200:
data = response.json()
print(f"Number: {data['number']}")
else:
print(f"Error: {response.json()['error']}")shell · curl
# Get balance
curl -H "X-API-Key: your_api_key_here" \
https://verifypulse.com/api/v1/balance
# Buy a number
curl -X POST \
-H "X-API-Key: your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"country":"Russia","countryID":"0","operator":"any","service":"vk"}' \
https://verifypulse.com/api/v1/buy-number
# Check number status
curl -H "X-API-Key: your_api_key_here" \
https://verifypulse.com/api/v1/numbers/12345/statuserror envelope
{
"success": false,
"error": "Error message description"
}400
Bad Request
Invalid parameters or insufficient balance
401
Unauthorized
Invalid or missing API key
404
Not Found
Resource not found
429
Too Many Requests
Rate limit exceeded
Best practices
- Store API keys securely — never expose them in client-side code
- Use HTTPS for all API requests
- Implement proper error handling for every call
- Use exponential backoff when retrying transient errors
- Monitor your usage so you do not hit the rate limit
Ready to wire it up?
Generate a key, or open a ticket if something in here does not behave as documented.