API Documentation

Base URL: https://your-domain.com/api/v1 · Interactive docs at /docs

Authentication

All endpoints require authentication via one of:

Register

POST/auth/register
Request → Response
{
  "username": "myuser",
  "email": "user@example.com",
  "password": "securepass123"
}

// 201 Created
{
  "access_token": "eyJhbG...",
  "token_type": "bearer",
  "user_id": 1,
  "username": "myuser"
}

Login

POST/auth/login
Same response format as register.

Generate API Key

POST/auth/api-key
Returns vx_... key. Store it securely — shown only once.

Products

GET/products
Product IDRobuxTokensUSD
robux_8888 R$11$0.99
robux_550550 R$25$4.99
robux_10001,000 R$45$9.99
robux_22002,200 R$100$19.99

Create Order

POST/orders

Without WLID (full token cost)

Request
{
  "login": "user@roblox.com",
  "password": "account_password",
  "product": "robux_2200",
  "quantity": 1,
  "backup_code": null,
  "webhook_url": "https://your-site.com/hook"
}

With WLID (3 tokens/order fee)

Request
{
  "login": "user@roblox.com",
  "password": "account_password",
  "product": "robux_2200",
  "wlid_tokens": {
    "refresh_token": "M.C507_BAY...",
    "wlid_token": "EwA..."
  }
}

// 201 Created
{
  "order_uid": "VX-5A8115EA",
  "status": "pending",
  "tokens_charged": 3,
  "product_robux": 2200
}

List Orders

GET/orders?status=completed&limit=50&offset=0
Filter by status. Paginate with limit/offset. Returns { total, orders[] }

Get Order Status

GET/orders/{order_uid}
Response
{
  "order_uid": "VX-5A8115EA",
  "status": "completed",
  "product_name": "2200 Robux",
  "tokens_charged": 100,
  "robux_before": 150,
  "robux_after": 2350,
  "robux_granted": 2200
}

Submit 2FA Code

POST/orders/{order_uid}/2fa
For orders in waiting_2fa status. Submit the code from email/authenticator.
{ "code": "847291" }

Create Pack

POST/packs
Request → Response
{
  "name": "Starter Bundle",
  "items": [
    { "product": "robux_550", "quantity": 2 },
    { "product": "robux_1000", "quantity": 1 }
  ]
}

// total_tokens: 95 (25*2 + 45)
// total_robux: 2100 (550*2 + 1000)

Also: GET /packs · DELETE /packs/{id}

Order Pack

POST/packs/{id}/order
Creates one order per item in the pack. Returns array of orders. Supports wlid_tokens for reduced fee.

Get Balance

GET/balance
{ "tokens": 485, "pending_topups": 0 }

Top Up (USDT → Tokens)

POST/balance/topup
Request → Response
{ "amount_usdt": 50.00 }

// 201 Created
{
  "tokens_amount": 250,
  "wallet_address": "TXkG9f3w...Rp4mD7",
  "status": "pending"
}
// Send USDT TRC-20 to this address
// Admin approves → tokens credited

Webhooks

When an order completes or fails, RomplHub sends a POST to your webhook_url:

Webhook payload
{
  "event": "order.completed",
  "order": {
    "id": "VX-5A8115EA",
    "status": "completed",
    "product": "2200 Robux",
    "robux_granted": 2200,
    "tokens_charged": 100
  }
}

Order Statuses

pendingQueued for processing
authenticatingLogging into Roblox account
waiting_2faNeeds 2FA code — submit via /orders/{uid}/2fa
purchasingBuying from Microsoft Store
grantingGranting Robux to account
completedDone. Robux delivered.
failedError occurred. Check error_message. Tokens auto-refunded.

Error Codes

CodeMeaning
401Invalid or missing authentication
402Insufficient token balance
403Admin access required
404Resource not found
422Validation error (check detail)
429Rate limit exceeded (60/min)

Interactive docs with try-it-out

/docs (Swagger UI) →