Reseller API

API Documentation

Programmatic access to the StrikeProxy network. Check your balance, browse the catalog, place orders, pull live credentials, and generate geo-targeted proxy lines with rotating or sticky sessions. Fourteen endpoints, one header, JSON in and out.

Introduction

The StrikeProxy Reseller API gives you programmatic control over the same proxy infrastructure exposed in the dashboard. Read your balance, list the catalog, place orders, pull live credentials for every service you have provisioned, and add bandwidth or extend time without touching the UI.

No SDKs, no proprietary client to install. Drop a curl command into your stack and you are running. Python and Node.js examples are inline on every endpoint below.

API tokens are issued from the reseller dashboard once your account is approved. Approval typically lands within 24 hours.

Authentication

Every request must include your token in the Authorization header. For POST requests also send Content-Type: application/json. Tokens are issued from the reseller dashboard after your account is approved.

bash
curl -H "Authorization: Bearer YOUR_TOKEN" \
  https://strikeproxy.net/api/balance
Never commit your token, expose it in client-side code, or paste it into a public chat. Rotate it from the dashboard the moment you suspect a leak.

Getting a token

POST your credentials to /api/auth/login. The returned token is valid for 30 days. You can also copy it from the Dashboard → Settings page.

curl
curl -X POST https://strikeproxy.net/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username": "your_username", "password": "your_password"}'
Response
json
{
  "token": "a3f8c2e1b4d79f3a8c2e1b4d7...",
  "username": "acme_reseller"
}

Base URL

All endpoints are relative to:

bash
https://strikeproxy.net

Reseller pricing

Resellers get custom per-account price overrides set by the admin team after approval. Without an override you pay the standard retail rate. Call GET /api/reseller/me to see your exact prices, or GET /api/reseller/catalog for a side-by-side of retail vs your effective rate on every plan.

Planplan keyRetailDefault reseller
Residentialresidential$0.75 / GB$0.50 / GB
Mobilemobile$1.60 / GB$0.80 / GB
Datacenterdatacenter$0.50 / GB$0.30 / GB
Unlimited Residential · 1 hrunlimited / hr$4.00$2.00
Unlimited Residential · 1 dayunlimited / day$96.00$48.00
Unlimited Residential · 1 wkunlimited / week$672.00$336.00
Unlimited Residential · 1 mounlimited / month$2,168.00$1,084.00
Unlimited Datacenter · 1 dayunlim_datacenter / day$5.00$2.50
Unlimited Datacenter · 1 wkunlim_datacenter / week$35.00$17.50
Unlimited Datacenter · 1 mounlim_datacenter / month$150.00$75.00
The default reseller rate is 50% off retail, applied automatically to any approved reseller account. Custom per-plan prices can be set by the admin team - use /api/reseller/catalog to see your exact effective rate on every plan.
GET/api/reseller/catalog

Returns the full plan catalog with your effective reseller prices. If custom price overrides have been set on your account, they appear in reseller_price. Otherwise the default reseller rate applies.

curl
curl -X GET \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://strikeproxy.net/api/reseller/catalog"
Response
json
{
  "is_reseller": true,
  "catalog": [
    {
      "plan_key": "residential",
      "name": "Residential",
      "description": "High-quality IPs for web scraping & automation.",
      "pricing_type": "pergb",
      "unit": "GB",
      "min_units": 1,
      "retail_price": 0.75,
      "reseller_price": 0.45
    },
    {
      "plan_key": "unlimited",
      "name": "Unlimited Residential",
      "description": "Unlimited access to residential IPs, billed by duration.",
      "pricing_type": "duration",
      "unit": "duration",
      "min_units": 1,
      "tiers": {
        "hr":    { "duration_hours": 1,   "retail_price": 4,    "reseller_price": 3.5  },
        "day":   { "duration_hours": 24,  "retail_price": 96,   "reseller_price": 84   },
        "week":  { "duration_hours": 168, "retail_price": 672,  "reseller_price": 588  },
        "month": { "duration_hours": 720, "retail_price": 2168, "reseller_price": 1890 }
      }
    }
  ]
}
GET/api/reseller/services

Returns every active service on your account with live credentials, status, and remaining bandwidth pulled from the upstream network. Use this to hand fresh credentials to downstream customers or to poll for top-up triggers.

curl
curl -X GET \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://strikeproxy.net/api/reseller/services"
Response
json
{
  "services": [
    {
      "id": 1042,
      "plan_type": "residential",
      "proxy_username": "proxy_abc123",
      "proxy_password": "mysecretpass",
      "proxy_host": "beta.strikeproxy.net",
      "proxy_port": 8080,
      "proxy_url": "http://proxy_abc123:[email protected]:8080",
      "status": "active",
      "unit": "GB",
      "purchased_gb": 25.00,
      "used_gb": 4.23,
      "max_gb": 25.00,
      "remaining_gb": 20.77
    },
    {
      "id": 1043,
      "plan_type": "unlimited",
      "proxy_username": "proxy_def456",
      "proxy_password": "anotherpass",
      "proxy_host": "unlim.strikeproxy.net",
      "proxy_port": 8080,
      "proxy_url": "http://proxy_def456:[email protected]:8080",
      "status": "active",
      "unit": "hours",
      "purchased_hours": 24,
      "expires_at": "2026-07-30T10:00:00Z",
      "time_remaining": "18h 42m remaining"
    }
  ]
}
POST/api/reseller/order

Provisions a new proxy service against your balance and returns credentials immediately. Balance-only - no crypto redirect. Designed for resellers automating customer order fulfilment.

ParameterTypeRequiredDescription
planstringYesPlan type key. See Order parameters.
quantitynumberYesGB for bandwidth plans. Number of tier units for duration plans.
tier"hr" | "day" | "week" | "month"ConditionalRequired for unlimited and unlim_datacenter plans.
couponstringNoOptional coupon code for a discount.
curl
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan": "residential", "quantity": 25}' \
  "https://strikeproxy.net/api/reseller/order"
Response
json
{
  "ok": true,
  "track_id": "res_a8f3c2e1b4d7...",
  "service": {
    "plan_type": "residential",
    "proxy_username": "proxy_abc123",
    "proxy_password": "mysecretpass",
    "proxy_host": "beta.strikeproxy.net",
    "proxy_port": 8080,
    "proxy_url": "http://proxy_abc123:[email protected]:8080",
    "unit": "GB",
    "quantity": 25
  },
  "cost": 11.25,
  "balance_after": 131.25
}

Duration plan example

bash
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan": "unlimited", "quantity": 1, "tier": "day"}' \
  "https://strikeproxy.net/api/reseller/order"
GET/api/reseller/proxy/locations

Returns the list of countries (and optionally states + cities) available for geo-targeting when generating proxy lines. Pass plan to filter to a specific plan type. Add country to drill down to the state/city tree for one country (residential only).

ParameterTypeRequiredDescription
planstringNoPlan key to filter by (default: residential). Controls which geo options are available.
countrystringNoISO-2 country code (e.g. US). If provided, returns state + city detail for that country instead of the full country list.
curl
# All countries for residential
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://strikeproxy.net/api/reseller/proxy/locations?plan=residential"

# State + city tree for a specific country
curl -H "Authorization: Bearer YOUR_TOKEN" \
  "https://strikeproxy.net/api/reseller/proxy/locations?plan=residential&country=US"
Response
json
// Country list (no ?country param)
{
  "plan": "residential",
  "countries": [
    { "name": "United States", "iso2": "us" },
    { "name": "Germany",       "iso2": "de" },
    { "name": "United Kingdom","iso2": "gb" }
  ]
}

// Country detail (?country=US)
{
  "plan": "residential",
  "country": {
    "name": "United States",
    "iso2": "us",
    "states": [
      {
        "name": "California",
        "code": "USCAL21",
        "cities": [
          { "name": "Losangeles", "code": "USLOS1" },
          { "name": "Sanfrancisco", "code": "USSAN1" }
        ]
      }
    ]
  }
}
State and city targeting is only supported on residential plans. Unlimited and datacenter plans support country-level targeting only.
POST/api/reseller/proxy/generate

Turns one of your active services into ready-to-use proxy lines. Supports rotating and sticky sessions, country/state/city geo-targeting, HTTP and SOCKS5, and multiple output formats. Up to 10,000 lines per request. Each sticky line gets its own unique cryptographic session ID.

ParameterTypeRequiredDescription
service_idintegerYesID of an active service on your account (from /api/reseller/services).
countintegerNoNumber of proxy lines to generate (1–10,000, default 1).
countrystringNoISO-2 country code (e.g. US, DE, GB). Omit or pass "any" for no geo filter.
statestringNoState code from the locations endpoint (e.g. ca). Residential plans only.
citystringNoCity code from the locations endpoint (e.g. los_angeles). Requires state. Residential plans only.
protocol"http" | "socks5"NoProxy protocol. Defaults to http. SOCKS5 uses port 1080.
formatstringNoOutput line format. Defaults to "user:pass@host:port". See Generate parameters below.
session_type"rotating" | "sticky"NoRotating assigns a new IP per connection. Sticky holds the same IP for the session window.
session_minutesintegerNoSticky session duration in minutes (1–120, default 10). Ignored for rotating.
hoststringNoOverride the proxy host. Must be a valid host for the plan type (see Order parameters).
curl
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": 1042,
    "count": 5,
    "country": "US",
    "state": "CA",
    "protocol": "http",
    "format": "user:pass@host:port",
    "session_type": "sticky",
    "session_minutes": 10
  }' \
  "https://strikeproxy.net/api/reseller/proxy/generate"
Response
json
{
  "service_id": 1042,
  "plan_type": "residential",
  "count": 5,
  "protocol": "http",
  "format": "user:pass@host:port",
  "host": "beta.strikeproxy.net",
  "port": 8080,
  "session_type": "sticky",
  "session_minutes": 10,
  "proxies": [
    "proxy_abc123-country-us-state-USCAL21-session-strike_a1b2c3d4-time-10:[email protected]:8080",
    "proxy_abc123-country-us-state-USCAL21-session-strike_e5f6g7h8-time-10:[email protected]:8080",
    "proxy_abc123-country-us-state-USCAL21-session-strike_i9j0k1l2-time-10:[email protected]:8080",
    "proxy_abc123-country-us-state-USCAL21-session-strike_m3n4o5p6-time-10:[email protected]:8080",
    "proxy_abc123-country-us-state-USCAL21-session-strike_q7r8s9t0-time-10:[email protected]:8080"
  ]
}
Rotating mode: all lines are identical - each connection gets a fresh exit IP from the pool automatically. Sticky mode: each line carries its own unique session token so they all maintain independent sessions simultaneously.
GET/api/plans

Fast local-database plan list (no live upstream data). Use /api/reseller/services for enriched live results. This endpoint is useful when you only need plan IDs and credentials without the network round-trip.

bash
curl -H "Authorization: Bearer YOUR_TOKEN" "https://strikeproxy.net/api/plans"
GET/api/balance

Returns your current account balance in dollars. The same value shown on the reseller dashboard wallet card.

curl
curl -X GET \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://strikeproxy.net/api/balance"
Response
json
{
  "balance": 142.50,
  "username": "acme_reseller"
}
GET/api/plans

Returns a flat list of every proxy plan on your account from the local database - fast, no upstream network call. Use /api/users/me when you need live usage stats and remaining bandwidth.

curl
curl -X GET \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://strikeproxy.net/api/plans"
Response
json
{
  "plans": [
    {
      "id": 1042,
      "plan_type": "residential",
      "proxy_username": "proxy_abc123",
      "proxy_password": "mysecretpass",
      "quantity": 25600
    }
  ]
}
quantity is in megabytes for GB plans (25600 MB = 25 GB) and in hours for duration plans.
POST/api/plans/create

Provisions a new proxy service. Two payment modes are available:

  • balance - deducts from your account balance instantly and provisions the plan immediately. Recommended for resellers automating customer order fulfilment.
  • crypto - creates an OxaPay hosted invoice and returns a payment URL. Plan is provisioned once payment confirms on-chain.

Request body

ParameterTypeRequiredDescription
category_keystringYesPlan type key - see Order parameters below.
unitsnumberYesGB for bandwidth plans. Number of tier units for duration plans.
tier"hr" | "day" | "week" | "month"ConditionalRequired for unlimited and unlim_datacenter. unlim_datacenter does not support "hr".
payment_method"balance" | "crypto"NoDefaults to "crypto".
couponstringNoOptional coupon code for a discount.

Balance payment - recommended for resellers

curl
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan": "residential", "quantity": 25, "payment_method": "balance"}' \
  "https://strikeproxy.net/api/plans/create"
Response
json
{
  "paid": true,
  "track_id": "bal_a8f3c2e1b4...",
  "plan": "residential",
  "proxy_username": "proxy_abc123",
  "balance_after": 119.62
}

Duration plan example (balance)

bash
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan": "unlimited", "quantity": 1, "tier": "day", "payment_method": "balance"}' \
  "https://strikeproxy.net/api/plans/create"

Crypto payment

bash
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan": "datacenter", "quantity": 100}' \
  "https://strikeproxy.net/api/plans/create"
Response
json
{
  "track_id": "plan_c9d2e5f8a1...",
  "payment_url": "https://oxapay.com/pay/..."
}
Balance payment returns proxy_username directly - you can hand the credentials to your customer immediately. Crypto payment returns a payment_url to redirect to; credentials are provisioned once the invoice is confirmed.
GET/api/users/me

Returns your full account profile including balance, role, and every active proxy plan enriched with live usage data from the upstream network. Use this to hand fresh credentials to downstream customers or to poll for top-up triggers.

curl
curl -X GET \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://strikeproxy.net/api/users/me"
Response
json
{
  "username": "acme_reseller",
  "email": "[email protected]",
  "role": "reseller",
  "balance": 142.50,
  "is_admin": false,
  "plans": [
    {
      "plan_type": "residential",
      "username": "proxy_abc123",
      "password": "mysecretpass",
      "bought": "25.00 GB",
      "proxy_url": "http://proxy_abc123:[email protected]:8080",
      "status": "Active",
      "used_gb": 4.23,
      "max_gb": 25.00,
      "remaining_gb": 20.77
    },
    {
      "plan_type": "unlimited",
      "username": "proxy_def456",
      "password": "anotherpass",
      "bought": "24 hours",
      "proxy_url": "http://proxy_def456:[email protected]:8080",
      "status": "Active",
      "expires": "18h 42m remaining"
    }
  ]
}
POST/api/proxy/add-bandwidth

Adds extra GB bandwidth to an existing plan. Deducts the cost from your account balance automatically. Takes effect immediately on the upstream network.

Only works for residential, mobile, and datacenter plans. For unlimited plans use /api/proxy/extend-time.
ParameterTypeRequiredDescription
proxy_usernamestringYesProxy username identifying the plan to top up.
add_gbnumberYesGigabytes to add (max 10,000 per request).
curl
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"proxy_username": "proxy_abc123", "add_gb": 10}' \
  "https://strikeproxy.net/api/proxy/add-bandwidth"
Response
json
{
  "ok": true,
  "proxy_username": "proxy_abc123",
  "cost": 4.50,
  "balance_after": 138.00
}
POST/api/proxy/extend-time

Extends the expiry time on an unlimited plan. Deducts the cost from your account balance automatically.

Only works for unlimited and unlim_datacenter plans. For GB plans use /api/proxy/add-bandwidth.
ParameterTypeRequiredDescription
proxy_usernamestringYesProxy username identifying the plan to extend.
extend_hoursintegerYesHours to add. Positive integer, max 8,760 (1 year).
curl
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"proxy_username": "proxy_xyz789", "extend_hours": 24}' \
  "https://strikeproxy.net/api/proxy/extend-time"
Response
json
{
  "ok": true,
  "proxy_username": "proxy_xyz789",
  "cost": 3.50,
  "balance_after": 118.75
}
POST/api/proxy/update-password

Rotates the proxy password on an existing plan. Free operation - no balance deduction. Takes effect immediately on the upstream network and in the local database.

ParameterTypeRequiredDescription
proxy_usernamestringYesProxy username identifying the plan.
new_passwordstringYesNew proxy password (8–128 characters).
curl
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"proxy_username": "proxy_abc123", "new_password": "newsecretpass"}' \
  "https://strikeproxy.net/api/proxy/update-password"
Response
json
{
  "ok": true,
  "proxy_username": "proxy_abc123"
}
GET/api/reseller/me

Returns your reseller status, latest application record, and any custom price overrides configured on your account by the admin team.

curl
curl -X GET \
  -H "Authorization: Bearer YOUR_TOKEN" \
  "https://strikeproxy.net/api/reseller/me"
Response
json
{
  "username": "acme_reseller",
  "role": "reseller",
  "is_reseller": true,
  "application": {
    "id": "uuid-here",
    "status": "approved",
    "created_at": "2025-01-15T10:23:00Z",
    "decided_at": "2025-01-16T09:00:00Z",
    "business_name": "ACME Proxies"
  },
  "pricing": [
    { "plan_type": "residential", "price_per_unit": 0.45 },
    { "plan_type": "mobile",      "price_per_unit": 1.20 },
    { "plan_type": "datacenter",  "price_per_unit": 0.30 }
  ]
}
pricing is an empty array until custom overrides are set. Default reseller rates apply until then.
POST/api/reseller/apply

Submits a reseller program application for review. Rate limited to 3 submissions per 24 hours. A pending application must be decided before a new one is accepted.

ParameterTypeRequiredDescription
business_namestringYesYour business or brand name.
use_casestringYesHow you plan to use proxies (min 20 chars).
contactstringYesPreferred contact method - Telegram handle, email, etc.
websitestringNoYour website or platform URL.
expected_monthly_volume_usdnumberNoEstimated monthly spend in USD - helps us assign the right tier.
curl
curl -X POST \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "business_name": "ACME Proxies",
    "website": "https://acmeproxies.com",
    "expected_monthly_volume_usd": 2000,
    "use_case": "Reselling residential proxies to e-commerce clients.",
    "contact": "@acme on Telegram"
  }' \
  "https://strikeproxy.net/api/reseller/apply"
Response
json
{
  "success": true,
  "msg": "Application submitted."
}

Generate parameters

Reference for POST /api/reseller/proxy/generate parameters.

protocol

valueportNotes
http8080Default. Standard HTTP/HTTPS proxying.
socks51080SOCKS5. Adds -udp suffix on residential plans.

format

format stringExample output
user:pass@host:port (default)proxy_abc:[email protected]:8080
host:port:user:passbeta.strikeproxy.net:8080:proxy_abc:pass
host:port@user:passbeta.strikeproxy.net:8080@proxy_abc:pass
user:pass:host:portproxy_abc:pass:beta.strikeproxy.net:8080
protocol://user:pass@host:porthttp://proxy_abc:[email protected]:8080

session_type

valueBehaviour
rotating (default)Every connection gets a fresh exit IP from the pool. All generated lines are identical.
stickyEach line carries a unique session token (strike_XXXXXXXX). The exit IP is held for session_minutes minutes.

Valid hosts

hostSupported plans
beta.strikeproxy.net (default for GB plans)residential, mobile, datacenter
eu.strikeproxy.netresidential, mobile, datacenter
eu-1.strikeproxy.netresidential, mobile, datacenter
na.strikeproxy.netresidential, mobile, datacenter
unlim.strikeproxy.net (default for unlimited)unlimited, unlim_datacenter
unlim-1.strikeproxy.netunlimited, unlim_datacenter
Geo-targeting suffixes (-country-, -state-, -city-) are injected into the username automatically - you pass plain ISO-2 codes and the API builds the full grammar string for you.

Order parameters

Valid plan keys for POST /api/plans/create and proxy management endpoints.

plan keyNameUnitRetail pricetier values
residentialResidentialGB$0.75 / GB-
mobileMobileGB$1.60 / GB-
datacenterDatacenterGB$0.50 / GB-
unlimitedUnlimited Residentialduration$4 / hrhr · day · week · month
unlim_datacenterUnlimited Datacenterduration$5 / dayday · week · month

For GB plans: quantity = gigabytes to buy. No tier required.
For duration plans: quantity = number of tier units (e.g. quantity: 2, tier: "day" = 2 days).tier is required.

Proxy hosts

Plan typesHostPort
residential · mobile · datacenterbeta.strikeproxy.net8080
unlimited · unlim_datacenterunlim.strikeproxy.net8080

Connection URL format:

bash
http://PROXY_USERNAME:PROXY_PASSWORD@HOST:PORT

# Example
http://proxy_abc123:[email protected]:8080

Error responses

Errors return JSON with a single error string and the matching HTTP status code. The most common cases are missing auth (401), bad parameters (400), insufficient balance (400), and rate-limit hits (429).

json
{ "error": "insufficient_funds" }
StatusMeaning
200 / 201Success
400Bad request - check parameter names and types
401Unauthorized - Authorization header missing or token invalid/expired
402Insufficient balance for the requested order
403Forbidden - account suspended or insufficient permissions
404Resource not found - proxy username doesn't exist on your account
409Conflict - e.g. a pending reseller application already exists
429Rate limit exceeded - see headers for retry timing
500Internal server error
502Upstream proxy network error - retry after a short delay
503Balance service temporarily unavailable - retry after a short delay

Error code reference

errorHTTPMeaning
unauthorized401Missing, invalid, or expired Bearer token.
forbidden403Token valid but no permission for this resource.
invalid_body / invalid_json400Request body malformed or fails validation.
unknown_plan400The plan key is not recognized.
tier_required400A tier value is required for this plan type.
invalid_tier400The tier value is not valid for this plan type.
insufficient_funds400Account balance too low for this purchase.
rate_limited429Too many requests. Check "Retry-After" header.
not_found404Plan or resource doesn't exist on this account.
plan_type_unsupported400Operation not supported for this plan type.
application_pending409A reseller application is already under review.
upstream_error502Proxy network returned an error. Retry shortly.
balance_unavailable503Could not read or update balance. Retry.

Rate limits

The default rate limit is 120 requests per minute per token - generous enough for production use without getting in your way. Purchase creation is additionally limited to 10 requests per 10 minutes per user to prevent runaway spend.

If you need uncapped throughput for production scale, message us on Telegram and we will raise it on your account.

Quick start

Reseller end-to-end - log in, browse catalog, place an order, then generate ready-to-use proxy lines for a customer.

bash
# 1. Log in and save your token
TOKEN=$(curl -s -X POST https://strikeproxy.net/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username": "your_username", "password": "your_password"}' \
  | jq -r '.token')

# 2. Browse the catalog with your reseller prices
curl -s -H "Authorization: Bearer $TOKEN" \
  "https://strikeproxy.net/api/reseller/catalog" | jq '.catalog[] | select(.plan_key=="residential")'

# 3. Place an order (25 GB residential)
SERVICE=$(curl -s -X POST https://strikeproxy.net/api/reseller/order \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan": "residential", "quantity": 25}')

SERVICE_ID=$(echo $SERVICE | jq -r '.service.id')
echo "Service ID: $SERVICE_ID"

# 4. Pick a country (optional)
curl -s -H "Authorization: Bearer $TOKEN" \
  "https://strikeproxy.net/api/reseller/proxy/locations?plan=residential" | jq '.countries[:5]'

# 5. Generate 100 sticky US proxy lines for your customer
curl -s -X POST https://strikeproxy.net/api/reseller/proxy/generate \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"service_id\": $SERVICE_ID,
    \"count\": 100,
    \"country\": \"US\",
    \"protocol\": \"http\",
    \"session_type\": \"sticky\",
    \"session_minutes\": 30
  }" | jq '.proxies[]'

Standard user flow - check balance, buy a plan, top up bandwidth.

bash
# Check your balance
curl -H "Authorization: Bearer YOUR_TOKEN" "https://strikeproxy.net/api/balance"

# Buy 25 GB residential from balance
curl -X POST https://strikeproxy.net/api/plans/create \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"plan": "residential", "quantity": 25, "payment_method": "balance"}'

# Top up an existing plan with 10 more GB
curl -X POST https://strikeproxy.net/api/proxy/add-bandwidth \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"proxy_username": "proxy_abc123", "add_gb": 10}'