RedScrapeRedScrapeDocs

Reseller API

Buy datacenter and residential capacity in bulk, then provision, meter and suspend packages for your own customers.

Reseller API

The reseller API lets you run your own proxy storefront on top of RedScrape. You buy capacity from your wallet balance and provision packages for your customers, each with its own credentials, traffic limit and lifecycle.

Reseller access is off by default. An admin has to enable it for your account before any endpoint on this page works. Request activation through a support ticket, then generate a key in Dashboard → Reseller.

Authentication

Reseller endpoints use a separate credential from the regular API key:

curl -H "X-Reseller-Key: your_reseller_key" \
  https://api.redscrape.com/api/public/reseller/me

Using a dedicated header means a key embedded in your storefront cannot reach your own billing endpoints. Regenerating the key invalidates the previous one immediately.

HeaderScope
X-API-KeyYour own account: products, subscriptions, payments
X-Reseller-KeyReseller only: customer packages

Requests without a valid key return 401. A valid key on an account whose reseller access was switched off returns 403.

Base URL

https://api.redscrape.com/api/public/reseller

What you can resell

Datacenter and residential products only. Mobile and trial products are not resellable.


Account

GET /me

Wallet balance, package counts and total traffic sold.

curl -H "X-Reseller-Key: your_reseller_key" \
  https://api.redscrape.com/api/public/reseller/me
{
  "reseller_id": 481920374,
  "username": "acme",
  "enabled": true,
  "package_limit": 0,
  "packages_total": 42,
  "packages_by_status": { "active": 38, "suspended": 3, "cancelled": 1 },
  "data_used_gb": 1284.5,
  "data_limit_gb": 4200.0,
  "wallet_balance": "620.40",
  "resellable_categories": ["datacenter", "residential"]
}

Catalogue and pricing

GET /catalog

Products you may resell, with the GB range and billing periods each accepts.

{
  "items": [
    {
      "category_slug": "datacenter",
      "product_slug": "datacenter-gb",
      "product_name": "Datacenter GB",
      "data_configurable": true,
      "min_gb": 10.0,
      "max_gb": 20000.0,
      "billing_periods": ["one-time"]
    }
  ]
}

POST /quote

Price a configuration without buying it.

curl -X POST -H "X-Reseller-Key: your_reseller_key" \
  -H "Content-Type: application/json" \
  -d '{"product_slug":"residential-basic","data_gb":50}' \
  https://api.redscrape.com/api/public/reseller/quote
{
  "product_slug": "residential-basic",
  "category_slug": "residential",
  "billing_period": "one-time",
  "data_gb": "50",
  "price_usd": "42.50"
}

Packages

POST /packages

Buy and provision a package. Charged to your wallet balance and provisioned synchronously, so the response already contains working credentials.

FieldTypeNotes
product_slugstringRequired
billing_periodstringDefaults to one-time
data_gbnumberRequired for data-metered products
threadsintegerOptional, product dependent
customer_emailstringOptional, your customer's email
customer_referencestringOptional, your own order id
activatebooleanfalse provisions in pending state
curl -X POST -H "X-Reseller-Key: your_reseller_key" \
  -H "Content-Type: application/json" \
  -d '{
        "product_slug": "residential-basic",
        "data_gb": 50,
        "customer_email": "[email protected]",
        "customer_reference": "order-1042"
      }' \
  https://api.redscrape.com/api/public/reseller/packages
{
  "id": 118,
  "category": "residential",
  "product_name": "Residential Basic",
  "customer_email": "[email protected]",
  "customer_reference": "order-1042",
  "username": "u481920374s9931",
  "password": "hT3xQ9mLpZ2v",
  "proxy_host": "gate.redscrape.com",
  "proxy_port": 1337,
  "status": "active",
  "threads": 5000,
  "traffic_limit_gb": 50.0,
  "current_usage_gb": 0.0,
  "remaining_gb": 50.0,
  "usage_percent": 0.0,
  "cost_usd": "42.50",
  "created_at": "2026-07-27T09:14:22+00:00",
  "active_until": null
}

A 422 with Insufficient wallet balance means you need to top up before provisioning. Nothing is created in that case.

GET /packages

Paginated list of everything you have sold.

Query parameters: page, per_page (max 100), status, category, search (matches customer email, username or your reference).

{
  "items": [ { "id": 118, "status": "active" } ],
  "meta": { "total": 42, "page": 1, "per_page": 20, "pages": 3 }
}

GET /packages/{id}

One package including credentials and current usage.

GET /packages/{id}/usage

Usage only, without credentials. Pass ?sync=true to pull fresh counters from the upstream provider before responding.

{
  "id": 118,
  "username": "u481920374s9931",
  "status": "active",
  "traffic_limit_gb": 50.0,
  "current_usage_gb": 12.84,
  "remaining_gb": 37.16,
  "usage_percent": 25.7,
  "last_synced_at": "2026-07-27T11:02:10+00:00"
}

sync=true calls the upstream provider, so keep it for on-demand refreshes rather than tight polling loops. Datacenter packages are metered locally and ignore the flag.


Lifecycle

EndpointEffect
POST /packages/{id}/activateMove pending or suspendedactive
POST /packages/{id}/suspendDisable without deleting; traffic stops
POST /packages/{id}/cancelTerminate permanently
POST /packages/{id}/rotate-passwordIssue a new proxy password
POST /packages/{id}/topupAdd GB, charged to your wallet

Statuses: pending, active, suspended, expired, cancelled. A cancelled package cannot be reactivated.

Suspending a non-paying customer

curl -X POST -H "X-Reseller-Key: your_reseller_key" \
  https://api.redscrape.com/api/public/reseller/packages/118/suspend

Topping up traffic

curl -X POST -H "X-Reseller-Key: your_reseller_key" \
  -H "Content-Type: application/json" \
  -d '{"data_gb": 25}' \
  https://api.redscrape.com/api/public/reseller/packages/118/topup

For residential packages this also extends the upstream order, so the extra GB is usable straight away.


Rate limits

EndpointLimit
POST /packages30 requests / minute
POST /packages/{id}/topup30 requests / minute
Everything elseNo explicit limit

Errors

StatusMeaning
401Missing X-Reseller-Key
403Invalid key, or reseller access disabled
404Package does not exist, or is not yours
422Validation failure: insufficient balance, package limit reached, bad GB amount

On this page