RESELLER API · VERSION 1

Integrate mobile services with a small, predictable API.

REST + JSON · Bearer keys · IP restrictions · Signed webhooks
QUICK START

One base URL.

https://vpsapple.com/api/reseller/v1

Generate a live API key from the customer panel after the owner enables API access. Keys are shown once and should be stored in a secrets manager.

AUTHENTICATION

Bearer key on every request.

curl https://vpsapple.com/api/reseller/v1/balance \
  -H "Authorization: Bearer is_live_your_key"
Security rules

Never put the key in a URL, browser bundle, public repository or support ticket. Use HTTPS, restrict the key to your server IPs and rotate it immediately if exposed.

ENDPOINTS

Core reseller operations.

GET/balance

Account balance

Returns current Credit, credit limit and available spending capacity.

GET/services

Service catalog

Returns enabled services with your customer-group or custom price.

POST/orders

Submit order

Submit one identifier or an identifiers array for a bulk order.

GET/orders/{orderId}

Order status & result

Returns current status, each identifier and completed result data.

ORDER EXAMPLES

Single or bulk with the same endpoint.

Single order

curl -X POST https://vpsapple.com/api/reseller/v1/orders \
  -H "Authorization: Bearer is_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{
    "serviceId": "svc_your_catalog_service_id",
    "identifier": "356789012345678",
    "fields": {"carrier": "AT&T USA"}
  }'

Bulk order

{
  "serviceId": "svc_your_catalog_service_id",
  "identifiers": [
    "356789012345678",
    "353456789012345"
  ]
}

The complete order is rejected without a Credit charge when validation, quantity or pricing requirements fail.

WEBHOOKS

Signed status delivery.

Configure one public HTTPS endpoint in the customer panel. iStyle sends order.updated, order.completed and order.refunded.

X-iStyle-Event: order.completed
X-iStyle-Signature: sha256=<hex-hmac>

{
  "id": "event-id",
  "event": "order.completed",
  "createdAt": "2026-09-02T10:00:00.000Z",
  "data": {"orderId": "IS-...", "status": "Completed"}
}

Compute HMAC-SHA256 over the exact raw request body with your webhook secret and compare it to the signature using a constant-time function.

ERROR MODEL

Consistent JSON errors.

{
  "ok": false,
  "error": {
    "code": "order_rejected",
    "message": "Insufficient Credit balance."
  },
  "requestId": "..."
}
StatusMeaning
400Invalid JSON, service fields or identifier.
401Missing, invalid or revoked API key.
403API disabled or IP not approved.
402Insufficient Credit.
404Order or service not found.
409Service paused or pricing unavailable.
429Rate limit exceeded.