Developer API Reference
This comprehensive API documentation provides developers and integrators with everything needed to implement SMS verification services. All responses are in JSON format.
Not Technical? No Time for API Development?
Skip the development hassle and start selling in minutes with our ready-made whitelabel reseller software! Get a complete SMS verification platform with admin & client dashboards, payment integration, and everything you need.
Authentication
All endpoints require a Bearer token in the Authorization header.
How to Get Your API Key
- Sign in to your Proxnum account and navigate to your Profile page
- Scroll to the "API Keys management" section
- Click "Create API key" to generate a new key
- Copy the displayed API token
Include your API token in every request:
Authorization: Bearer YOUR_API_TOKEN_HERE Accept: application/json Content-Type: application/json
Quick links:
- Canonical country codes (used as
countryin the API) - Canonical service codes (used as
servicein the API)
Common Response Format
Errors use a normalized structure so your integration can switch on code reliably. All error responses follow this pattern:
{
"success": false,
"code": "no_numbers",
"message": "No numbers available for the selected service and country"
}
Endpoints
GET /api/v1/resell/price?service=&country=
Get base and sell price for a given service and country. Use this to estimate cost before placing a chargeable order.
Parameters (query): service (string), country (int)
Example request:
curl -s -X GET "https://proxnum.com/api/v1/resell/price?service=ig&country=6" \ -H "Authorization: Bearer $TOKEN" \ -H "Accept: application/json"
Success response:
{
"country": "6",
"service": "ig",
"base_price": 0.0334,
"sell_price": 0.1114892
}
GET /api/v1/prices
Get comprehensive pricing for all available services and countries. This endpoint returns base prices and your reseller sell prices for all combinations.
Parameters (query, optional):
service(string) - Filter by specific service code (e.g., 'ig', 'wa', 'tg')country(int) - Filter by specific country code
Example request (all prices):
curl -s -X GET "https://proxnum.com/api/v1/prices" \ -H "Authorization: Bearer $TOKEN" \ -H "Accept: application/json"
Example request (filtered by country):
curl -s -X GET "https://proxnum.com/api/v1/prices?country=6" \ -H "Authorization: Bearer $TOKEN" \ -H "Accept: application/json"
Success response (filtered by country):
{
"success": true,
"prices": {
"6": {
"ig": {
"base_price": 0.0334,
"sell_price": 0.1114892,
"available": 245
},
"wa": {
"base_price": 0.0389,
"sell_price": 0.1298737,
"available": 189
},
"tg": {
"base_price": 0.0223,
"sell_price": 0.0744551,
"available": 521
},
"go": {
"base_price": 0.0278,
"sell_price": 0.0928206,
"available": 312
}
}
}
}
Note: The response structure is a nested object where the first level keys are country codes, and the second level keys are service codes. Each service contains base_price (your cost), sell_price (your reseller price), and available (number of available numbers, or null if unknown).
POST /api/v1/resell/virtual/buy
Buy a temporary (virtual) number. The call will attempt to allocate a number and charge your account.
Body (JSON): {"service":"ig","country":6}
Example request:
curl -s -X POST "https://proxnum.com/api/v1/resell/virtual/buy" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"service":"ig","country":6}'
Success response (normalized):
{
"success": true,
"activation": {
"id": 737,
"phone": "62895406203932",
"activation_id": "4390520873",
"msg": "Waiting Sms",
"date_created": "2025-11-08 21:50:34",
"amount_paid": 0.111489,
"status": 1
}
}
Common error codes:
{
"success": false,
"code": "no_numbers",
"message": "No numbers available for this service in the selected country"
}
{
"success": false,
"code": "insufficient_balance",
"message": "Not enough balance to place the order"
}
GET /api/v1/resell/virtual/{id}/status
Check the status of an activation. {id} accepts activation id string returned by purchase.
Example request:
curl -s -X GET "https://proxnum.com/api/v1/resell/virtual/4390520873/status" \ -H "Authorization: Bearer $TOKEN" \ -H "Accept: application/json"
Success (when a code is available):
{
"success": true,
"status": "completed",
"code": "1234",
"activation": { "id": 737, "phone": "628...", "activation_id": "4390520873" }
}
POST /api/v1/resell/virtual/resend
Request a resend/reactivation for an activation. Use the activation id string in the body.
Body: {"activation_id":"4390520873"}
curl -s -X POST "https://proxnum.com/api/v1/resell/virtual/resend" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"activation_id":"4390520873"}'
Response (accepted):
{
"success": true,
"message": "Resend requested; new activation created",
"activation": { "id": 738, "activation_id": "4390520874", "phone": "628..." }
}
POST /api/v1/resell/virtual/cancel
Request cancellation and refund for an activation. Our server evaluates whether the activation is refundable and returns a normalized result.
Body: {"activation_id":"4390520873"}
curl -s -X POST "https://proxnum.com/api/v1/resell/virtual/cancel" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"activation_id":"4390520873"}'
Accepted:
{
"success": true,
"code": "cancel_accepted",
"message": "Cancellation accepted, refund processed"
}
Rejected:
{
"success": false,
"code": "cancel_rejected",
"message": "Cancellation rejected — activation already completed or not refundable"
}
GET /api/v1/resell/activations
List activations for the authenticated user (paginated). Supports page and per_page query parameters.
curl -s -X GET "https://proxnum.com/api/v1/resell/activations?page=1&per_page=25" \ -H "Authorization: Bearer $TOKEN" \ -H "Accept: application/json"
Implementation Notes
- All charging operations are idempotent per-order where possible; check the returned
orderortransactionfields for canonical identifiers. - Use the
priceendpoint to dry-run costs before placing chargeable requests. - Normalized error codes you may see include:
no_numbers,insufficient_balance,service_unavailable,cancel_rejected.
- Always handle both success and error responses in your integration
- Implement proper error handling for network timeouts
- Cache country and service lists to reduce API calls
- Use webhooks where available for real-time status updates
Last updated: January 26, 2026 — You may request improvements to our API documentation, or report issues within the api by sending email to [email protected].