Developer API Reference

Note: This reference is written for API users (developers and integrators). Each endpoint includes explanations, authentication requirements, sample requests, and example responses.

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
  1. Sign in to your Proxnum account and navigate to your Profile page
  2. Scroll to the "API Keys management" section
  3. Click "Create API key" to generate a new key
  4. 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:

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 order or transaction fields for canonical identifiers.
  • Use the price endpoint to dry-run costs before placing chargeable requests.
  • Normalized error codes you may see include: no_numbers, insufficient_balance, service_unavailable, cancel_rejected.
Best Practices:
  • 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].