All systems operationalIP pool status
Coronium Mobile Proxies
RESELLER BUSINESS
Open-source · MIT
2026 · 14 min read

Build a Mobile Proxy Reseller Dashboard in One AI Prompt

You don’t need a backend team to start a 4G/5G mobile-proxy reseller business. Paste one prompt into Claude Code, Cursor or Windsurf and the open-source Coronium Reseller Kit scaffolds a working Next.js dashboard — customer mapping, buy flow, and self-healing auto-swap webhooks — on top of the Coronium API. Here’s exactly how it works, with real code and honest markup math.

TL;DR

  • Reselling = buy dedicated 4G/5G modems wholesale via API (~$49–$69/mo), mark up 1.3×–2.2×, sell under your own brand.
  • The open-source MIT kit turns a multi-week build into one AI-agent prompt — no servers, no phone farm, no sidecar database.
  • Dead modems self-heal: a push webhook delivers fresh credentials and your customer never notices.
  • Want the strategy-first version? Read the reseller business playbook. This post is the build.

The mobile proxy reseller business model in 60 seconds

A mobile-proxy reseller buys dedicated 4G/5G mobile proxies at wholesale, adds a markup, and resells them to their own end-customers under their own brand. You set the price, own the billing relationship, and handle first-line support; your supplier (Coronium) runs the physical modems, the carrier SIMs, and the network. The spread between wholesale and retail is your recurring margin.

The catch every generic guide skips: a real reseller needs software — a dashboard to track which customer owns which proxy, a buy flow, a health view, and a way to handle modems that die. That software is the entire reason most people never launch. The Coronium Reseller Kit exists to delete that blocker.

API-wholesale vs phone-farm reselling (and why no hardware wins)

There are two ways to resell mobile proxies. The phone-farm model (iProxy, Proxy-Seller-style) makes you buy Android phones and SIMs and babysit the hardware. The API-wholesale model — what this kit is built for — carries zero hardware or SIM operations: you provision dedicated modems with an API call and mark them up. Here’s the honest comparison.

API-wholesale (this kit)Phone-farmWhite-label storefront
Own physical hardware?No — modems are Coronium’sYes — you buy Android phones + SIMsNo
Own the code?Yes — MIT, forkable (~1,400 LOC)Partial — their farm appNo — rented dashboard
Dead-modem auto-swap?Yes — push webhook + new credsNo — you babysit devicesVaries / opaque
Customer database needed?No — metadata field maps itUsually yesHosted for you (locked in)
AI-agent scaffold?Yes — one promptNoNo
Markup controlFullFullLimited
Time to launchHoursDays–weeksHours, but locked in
The fast path

Scaffold a working reseller dashboard in one prompt

The kit is built for AI coding agents. Fork the repo, then paste the prompt below into Claude Code, Cursor, Windsurf, or Aider. The agent readsAGENTS.md and llms.txt, uses the included Next.js example as its foundation, and wires up the whole thing against the Coronium API — customer CRUD, proxy inventory, buy flow, and the webhook handler — roughly 1,400 lines of TypeScript, generated for you.

Paste into your AI coding agent
Read the AGENTS.md at https://raw.githubusercontent.com/bolivian-peru/coronium-reseller-kit/main/AGENTS.md
and use https://github.com/bolivian-peru/coronium-reseller-kit/tree/main/examples/nextjs-dashboard
as the foundation. Scaffold me a reseller dashboard for Coronium mobile 4G/5G
proxies with these features (skip any I don't list):

- Customer list (CRUD on end-customers stored locally)
- Buy proxies on a customer's behalf — pick country/carrier, attach customer_id
  via the metadata field, show resulting credentials
- Per-customer detail page with their proxies + health status + credential copy
- Webhook handler at /api/coronium/webhook that processes modem.replaced and
  modem.dead events — update local mapping, log event, ack 200 immediately
- Health overview: poll /account/proxies/health every 60s, highlight dead modems

My CORONIUM_API_KEY is in .env. Deploy target: Vercel. Use Next.js App Router,
TypeScript, Tailwind. Don't invent features I didn't ask for — keep it
minimal and readable. End by running `npm run dev`, opening the browser, and
buying ONE proxy to verify the end-to-end loop works.

Prefer to start by hand? Clone and run the working example directly:

Human path — clone & run
git clone https://github.com/bolivian-peru/coronium-reseller-kit
cd coronium-reseller-kit/examples/nextjs-dashboard
cp .env.example .env          # paste your CORONIUM_API_KEY
npm install && npm run dev
open http://localhost:3000

Why an open-source kit you own beats a rented storefront

Most "reseller programs" hand you a hosted dashboard you can never modify or export — your business lives inside their storefront. The Coronium kit is MIT-licensed: you fork it, change it, ship it, and host it yourself. No lock-in, no per-seat storefront tax, and every line is auditable. The proxies stay in Coronium; the product is yours.

The 5 patterns that make a reseller stack actually work

1. Customer mapping via the metadata field — no database

Don’t build a sidecar table mapping your customer-ids to modem-ids; it drifts the moment a modem gets replaced. Every modem carries a freeform metadata JSON field that is returned in every list and persists across rotations. Write the customer identity there once.

metadata-strategy
// No sidecar DB. The customer mapping lives ON the modem and survives swaps.
// Write it once at buy-time:
{ "metadata": { "customer_id": "acme-007", "plan": "tiktok-5pack" } }

// Every GET /account/proxies returns the same metadata verbatim — filter client-side:
const mine = proxies.filter(p => p.metadata?.customer_id === 'acme-007');

2. Push-based auto-swap — support tickets that answer themselves

When a customer’s modem dies, Coronium auto-provisions a same-country replacement, transfers the remaining paid time, and POSTs your webhook with the full new credentials. Your handler just re-points the customer. The dead-proxy escalation — the #1 reseller support cost — disappears.

modem.replaced event
{
  "event": "modem.replaced",
  "old_modem_id": "69b5926c942c49e02b9f50c7",
  "new_modem_id": "6a1cf4d2942c49e02b1234ab",
  "new_modem": {
    "country_code": "US",
    "host": "172.56.171.4",
    "http_port": "8042",
    "socks_port": "5042",
    "proxy_login": "admin",
    "proxy_password": "kP3aL9zXq7Wm",
    "tariff_expired_at": 1780987974498,
    "isOnline": true
  },
  "ts": 1779192208000
}
minimal handler
// /api/coronium/webhook  — ack first, process async, be idempotent
app.post('/api/coronium/webhook', async (req, res) => {
  res.sendStatus(200);                       // 1. ack within 5s — we don't retry
  const e = req.body;
  if (e.event === 'modem.replaced') {
    // 2. mapping travels in metadata; just point the customer at the new creds
    await customers.updateProxy(e.old_modem_id, e.new_modem);
    await notifyCustomer(e.new_modem);       // email the new host/port/login
  } else if (e.event === 'modem.dead') {
    await flagForManualReplace(e.old_modem_id, e.reason); // no stock right now
  }
});

3. Server-side-only JWT + enforced customer protection

Your CORONIUM_API_KEY (a 365-day Bearer JWT) never touches the browser — every call goes through your own server routes. And customer-protection is enforced server-side: you can’t accidentally overwrite, release, or quarantine a customer’s active modem through the reseller API, so you don’t need extra guards in your UI.

4. Honest IP rotation with ?sync=true

A plain rotate call returns 200 the instant it’s queued — before the IP actually changes. For any rotation your code branches on, append?sync=true and get the truth.

rotate honestly
# Fire-and-forget returns 200 the instant it is queued — the IP may be unchanged.
# Append ?sync=true to block up to 25s and get the HONEST outcome:
curl -X POST "https://api.coronium.io/api/v3/modems/$MODEM_ID/restart?sync=true" \
  -H "Authorization: Bearer $CORONIUM_API_KEY"
# 200 { "new_ip": "..." }   → confirmed rotated
# 502 rotation_failed       → confirmed failure (tell the customer the truth)
# 503 rotation_timeout      → unknown, retry

5. Idempotent buy flow

Pass an Idempotency-Key header on buy requests so a network retry never double-charges your balance — safe to retry within 24h. A stock-out returns409; surface it as "try a different country," don’t retry-loop.

The Coronium API v3 surface a reseller touches

Auth is a single Authorization: Bearer <jwt> header. The full interactive reference is public (no login) at dashboard.coronium.io/api-docs. These are the endpoints the kit uses:

Method · PathPurpose
GET /account/proxiesList every proxy you own — metadata returned verbatim
GET /account/proxies/healthPer-proxy is_alive + recommendation (cache 30–60s)
GET /tariffs/availableLive in-stock tariffs, filtered by country / carrier
POST /payment/buy-modems-with-crypto-balanceProvision N proxies, attach metadata.customer_id
POST /modems/{id}/restart?sync=trueRotate IP and return the real new_ip (or honest failure)
POST /modems/{id}/replaceSwap a broken proxy — same country, paid time carried over
GET /modems/rotate-modem-by-token/{token}Token-auth rotation for end-customer scripts
PUT /account/webhookRegister your HTTPS webhook for auto-swap events

Buy a proxy and attach it to a customer

POST /payment/buy-modems-with-crypto-balance
curl -X POST https://api.coronium.io/api/v3/payment/buy-modems-with-crypto-balance \
  -H "Authorization: Bearer $CORONIUM_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "tariff_id": "61ef075c5a33f238ac15a8e7",
    "modemCount": 1,
    "metadata": { "customer_id": "acme-007", "tag": "tiktok-batch" }
  }'

Register your auto-swap webhook (once)

PUT /account/webhook
curl -X PUT https://api.coronium.io/api/v3/account/webhook \
  -H "Authorization: Bearer $CORONIUM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"webhook_url":"https://your-host/api/coronium/webhook"}'

No ranking competitor shows runnable code like this — most reseller guides are strategy listicles with zero API examples. For the deepest in-editor integration, Coronium also ships an MCP server and machine-readable specs for AI agents.

Reseller economics: real numbers and markup math

Wholesale runs roughly $49–$69 per modem-month depending on country and carrier. Common retail markup is 1.3×–2.2×, with 1.3× as the floor (below that, support, churn and payment fees eat your margin). Each cell below shows retail price · gross profit per modem-month.

Wholesale1.3×1.5×1.8×2.2×
$49/mo$64 · +$15$74 · +$25$88 · +$39$108 · +$59
$59/mo$77 · +$18$89 · +$30$106 · +$47$130 · +$71
$69/mo$90 · +$21$104 · +$35$124 · +$55$152 · +$83

Paid trials beat free trials — a worked example

Free trials convert at ~5% and attract tire-kickers; a $1–$5 paid trial converts at 25–40% because the buyer self-selects. Model a $3 trial across 100 signups: ~32 convert to a $106/mo plan (a $59 modem at 1.8×). That’s $3,392 MRR against $1,888 wholesale = ~$1,504/mo recurring gross, plus $300 one-time trial revenue. Model your own mix in theproxy farm calculatorand see the volume-tier pricing once you scale.

7-step zero-to-first-revenue checklist

1

Sign up & top up

Create a Coronium account, verify email, fund your balance (USDC / crypto / Stripe). The balance is what you spend when you buy proxies on a customer’s behalf.

2

Grab your API key

Dashboard → Settings → API. Copy the Bearer JWT (365-day lifetime). This is your reseller identity for every call — keep it server-side only.

3

Fork the kit & paste the prompt

Fork coronium-reseller-kit, then paste PROMPT.md into Claude Code / Cursor / Windsurf / Aider. It reads AGENTS.md and scaffolds the dashboard from examples/nextjs-dashboard.

4

Add the key, run it

Drop CORONIUM_API_KEY into .env, npm run dev, open localhost:3000. The agent finishes by buying one test proxy to prove the loop.

5

Register your webhook

PUT your deployed /api/coronium/webhook URL into Coronium once. Without it you never hear about dead modems. (HTTPS only; ack 200 within 5s.)

6

Set your markup

Apply a 1.3×–2.2× retail markup over the wholesale tariff. Surface markup_pct in your dashboard for your own reference; customers see only their retail price.

7

Run a paid trial, go live

Sell a $1–$5 paid trial to qualify demand, then convert to monthly. Deploy to Vercel/Railway/Docker and you’re a live reseller.

Frequently asked questions

Get the kit — fork it and paste the prompt

The Coronium Reseller Kit is open-source and MIT-licensed. Fork it, paste PROMPT.md into your AI coding agent, add your API key, and you have a branded 4G/5G mobile-proxy reseller dashboard with self-healing auto-swap — in an afternoon, not a quarter.