Reseller API
Funding
Your reseller pool holds bandwidth you've paid for but not yet given to a customer, tracked per product. Buy into it in bulk by card or crypto, then move GB onto individual customers with Allocate bandwidth. Pool GB is priced like a normal top-up, including the 10% volume bonus on 100 GB or more, and the price is fixed when you buy, so later price changes don't affect what's already in your pool.
Product keys, minimum amounts and live per-GB prices come from GET /v1/products (no key needed).
Check your pool
GET /v1/pool
{
"pool": [
{ "productKey": "residential", "productId": "residential-lite", "label": "Core Residential", "gb": 50 },
{ "productKey": "premium", "productId": "residential-premium", "label": "Premium Residential", "gb": 0 }
]
}GET /v1/me returns the same pool array alongside your customer counts.
Top up your pool
Both calls return a hosted payment page. Every top-up has a $5 minimum deposit: gbis a whole number, at least the product's minGb (the fewest GB that reach $5 at its live rate; it is returned by GET /v1/products) and at most 10,000.
POST /v1/pool/topup/card
Content-Type: application/json
{ "productKey": "residential", "gb": 100 }
# {"payUrl":"https://...","transactionId":"st_..."}POST /v1/pool/topup/crypto
Content-Type: application/json
{ "productKey": "residential", "gb": 100 }
# {"url":"https://...","transactionId":"crypto_..."}Check a payment
Poll the transaction until status is succeeded. The GB is in your pool from that point. Crypto payments are checked with the payment processor live on every call.
GET /v1/transactions/{transactionId}
{
"id": "st_...",
"kind": "topup",
"status": "succeeded",
"paymentMethod": "card",
"amountCents": 19900,
"currency": "usd",
"gb": 110,
"productKey": "residential",
"plan": null,
"resellerPool": true,
"createdAt": "2026-10-01T10:00:00.000Z"
}GET /v1/transactions lists your recent payments (?limit= up to 100).
Was this page helpful?