← Roxyr Reseller API v1 · IDR
⚡ Buka Dashboard

Roxyr Reseller API Reference

Automate Virtual Number (SMS OTP) and Rent Email (Instant OTP Inbox) provisioning using your single Universal IDR Saldo. Generate or rotate your personal rx_live_... key directly below or inside the Profile Modal on Roxyr.

Base URL: https://roxyr.com/api/reseller Currency: IDR (Rp) 🚀 Server 1 (Instant) 🌐 Server 2 (Global) ⚡ Server 3 (USA Virtual · Country ID 12)

🔑 Create & Manage Reseller API Key

Checking session…

Generate, rotate, copy, or revoke your personal rx_live_... key directly below. New keys automatically populate the Interactive API Tester.

🧪 Interactive API Tester

Test any read endpoint safely against /api/reseller using your API Key.

Response Output Ready
// Click "Run Request" to inspect live response

getBalance GET / POST

Returns your current Universal IDR wallet balance. Add &format=json for structured JSON output.

ParamRequiredDescription
api_keyYesYour Reseller API Key (also accepted via X-API-Key)
actionYesSet to getBalance
formatNotext (default) or json
cURL · getBalance
curl "https://roxyr.com/api/reseller?api_key=rx_live_xxx&action=getBalance"

# Text Response:
ACCESS_BALANCE:75000

# JSON Response (&format=json):
{"ok":true,"status":"ACCESS_BALANCE","balanceIdr":75000,"currency":"IDR"}

getCountries GET

Lists supported country IDs, dial codes, and server routing hints (e.g., Country ID 6 Indonesia, 12 USA Virtual on Server 3).

ParamRequiredDescription
api_keyYesYour Reseller API Key
actionYesgetCountries
cURL · getCountries
curl "https://roxyr.com/api/reseller?api_key=rx_live_xxx&action=getCountries"

# Response:
{"ok":true,"countries":[{"id":6,"name":"Indonesia","dialCode":"62"},{"id":12,"name":"USA (Virtual)","dialCode":"1","serverHint":"srv_3"}]}

getServicesList GET

Returns available service codes with live stock counts and starting prices in Indonesian Rupiah (IDR).

cURL · getServicesList
curl "https://roxyr.com/api/reseller?api_key=rx_live_xxx&action=getServicesList"

getPrices GET

Fetches real-time stock and IDR pricing tiers across Server 1, Server 2, and Server 3 for a service and country.

ParamRequiredDescription
serviceNoService code, e.g. wa, ex (Linode), am
countryNoCountry ID, e.g. 6 (Indonesia), 12 (USA Virtual)
serverNoauto (default), srv_1, srv_2, srv_3
cURL · getPrices
curl "https://roxyr.com/api/reseller?api_key=rx_live_xxx&action=getPrices&service=wa&country=6"

# Response:
{"ok":true,"currency":"IDR","prices":[{"server":"srv_1","priceIdr":1499,"count":420}]}

getNumber POST / GET

Provisions a virtual number and places an atomic IDR escrow hold. Country 12 automatically routes to Server 3.

ParamRequiredDescription
serviceYesTarget app code (e.g. wa, ex, tg)
countryNoCountry ID (default 6)
serverNoauto, srv_1, srv_2, or srv_3
maxPriceNoOptional maximum IDR price ceiling
cURL · getNumber
curl -X POST "https://roxyr.com/api/reseller" \
  -d "api_key=rx_live_xxx&action=getNumber&service=ex&country=12&server=srv_3"

# Response:
ACCESS_NUMBER:110631999:17652298968

getStatus GET

Polls an activation ID for incoming SMS OTP codes. Returns STATUS_WAIT_CODE, STATUS_OK:CODE, or STATUS_CANCEL.

ParamRequiredDescription
idYesActivation ID returned by getNumber
cURL · getStatus
curl "https://roxyr.com/api/reseller?api_key=rx_live_xxx&action=getStatus&id=110631999"

# Possible Outputs:
STATUS_WAIT_CODE
STATUS_OK:835027
STATUS_CANCEL

setStatus POST / GET

Updates activation lifecycle. Canceling (status=8) triggers an instant 100% IDR auto-refund unless an OTP code has already arrived (ERROR_ALREADY_FINISHED).

ParamRequiredDescription
idYesActivation ID
statusYes1 Ready · 3 Resend SMS · 6 Finish · 8 Cancel & Refund
cURL · setStatus (Cancel & Refund)
curl -X POST "https://roxyr.com/api/reseller" \
  -d "api_key=rx_live_xxx&action=setStatus&id=110631999&status=8"

# Outputs:
ACCESS_CANCEL
# Or if OTP already arrived:
ERROR_ALREADY_FINISHED

getEmailServices GET

Lists supported Rent Email target services/websites (such as aws, go, fb, ig, tg, dr, ex, ot) for OTP inbox orders.

cURL · getEmailServices
curl "https://roxyr.com/api/reseller?api_key=rx_live_xxx&action=getEmailServices"

# JSON Response:
{"ok":true,"status":"success","currency":"IDR","count":17,"services":[{"code":"aws","name":"Amazon / AWS"},...]}

getEmailPrices GET

Returns real-time Rent Email domain pricing in IDR and available stock counts across auto, srv_1 (Instant), and srv_2 (Global).

ParamRequiredDescription
serviceNoTarget service code (default: aws)
serverNoauto (default) · srv_1 · srv_2
cURL · getEmailPrices
curl "https://roxyr.com/api/reseller?api_key=rx_live_xxx&action=getEmailPrices&service=aws&server=auto"

# JSON Response:
{"ok":true,"status":"success","currency":"IDR","service":"aws","server":"auto","domains":[{"domain":"gmail.com","priceIdr":449,"priceFormatted":"Rp 449","count":45000,"server":"srv_1","serverLabel":"Server 1 (Instant)"}]}

getEmail POST / GET

Purchases temporary OTP email inbox(es) using Universal IDR Saldo with atomic escrow hold and optional bidirectional server failover.

ParamRequiredDescription
serviceYesTarget site code (e.g. aws, go, ig)
domainNoAll web domains (gmail.com, icloud.com, outlook.com, hotmail.com, yandex.com, ya.ru, rambler.ru, mail.com, email.com, gmx.com) or short aliases (hotmail, gmail, icloud, outlook, rambler); defaults to best available
serverNoauto (default) · srv_1 · srv_2
qtyNoNumber of inboxes to rent (1–10, default 1)
maxPriceNoMaximum unit price in IDR; rejects with PRICE_TOO_HIGH if exceeded
formatNoPass json for structured JSON response
cURL · getEmail
curl -X POST "https://roxyr.com/api/reseller" \
  -d "api_key=rx_live_xxx&action=getEmail&service=aws&domain=gmail.com&server=auto"

# Text Response:
ACCESS_EMAIL:88291044:[email protected]

# JSON Response (&format=json):
{"ok":true,"status":"ACCESS_EMAIL","id":"88291044","email":"[email protected]","priceIdr":449,"currency":"IDR","server":"srv_1"}

getEmailStatus GET

Polls an email order ID for incoming verification emails and extracted OTP codes. Scoped strictly to your account's orders.

ParamRequiredDescription
idYesEmail order ID (msg_id) returned by getEmail
formatNoPass json for full message body, extracted code, and timestamp
cURL · getEmailStatus
curl "https://roxyr.com/api/reseller?api_key=rx_live_xxx&action=getEmailStatus&id=88291044"

# Possible Text Outputs:
STATUS_WAIT_MAIL
STATUS_OK:482910
STATUS_CANCEL

# JSON (&format=json):
{"ok":true,"status":"STATUS_OK","id":"88291044","email":"[email protected]","code":"482910","message":"Your verification code is 482910"}

setEmailStatus POST / GET

Manages email inbox lifecycle: reactivate inbox to receive another OTP (status=3 on Server 1), finish (status=6), or cancel & auto-refund (status=8).

ParamRequiredDescription
idYesEmail order ID (msg_id)
statusYes3 Reactivate inbox · 6 Finish · 8 Cancel & Auto-Refund
cURL · setEmailStatus
curl -X POST "https://roxyr.com/api/reseller" \
  -d "api_key=rx_live_xxx&action=setEmailStatus&id=88291044&status=8"

# Outputs:
ACCESS_CANCEL
ACCESS_REACTIVATED
ACCESS_ACTIVATION
# Or if email already arrived:
ERROR_ALREADY_FINISHED