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