The Growth Log
Developers2 min read· July 5, 2026

Start Your Own SMM Panel on the MrViral API: A Working Walkthrough

From API key to your first programmatic order in about 30 minutes — endpoints, idempotency, error handling, and the pricing math of reselling.

M

MrViral Team

Engineering

Every large SMM panel you've heard of resells a supplier underneath. MrViral exposes the same API our own dashboard runs on, which means your panel inherits the parts that are hard to build: wallet accounting, supplier failover, automatic refunds, and delivery tracking.

This is the full walkthrough, copy-paste ready.

1. Mint a key

Dashboard → API keys → New key. The plaintext is shown exactly once; we store only a SHA-256 hash. Keys can carry an expiry and can be revoked instantly.

Authorization: Bearer mv_live_xxxxxxxxxxxxxxxxxxxx

Rate limit: 120 requests/minute per key. Order placement is additionally throttled per account.

2. Pull the catalogue

curl -s https://api.mrviral.io/api/catalog/services?platform=instagram \
  -H "Authorization: Bearer $KEY"

Each service returns your personalised rate (tier discounts apply to API traffic), min/max bounds, and capability flags (supports_refill, needs_comments, average_time). Cache this for an hour; re-syncing more often buys you nothing.

3. Place an order

curl -s -X POST https://api.mrviral.io/api/orders \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "service_id": 42,
    "link": "https://instagram.com/customer_handle",
    "quantity": 5000,
    "wallet_currency": "USD"
  }'

Three responses matter:

  • 201 — order accepted; you get an id, status, and the exact wallet_charge.
  • 402 insufficient_funds — the response includes required and available so your panel can prompt a precise top-up.
  • 422 supplier_rejected — the wallet was never charged (or was instantly refunded); the message is safe to surface to your customer.

Placement is idempotent on our side: if your request dies mid-flight, retry it — a network fault can never double-place or double-charge.

4. Track delivery

Poll GET /api/orders/{id} — you get status, start_count, remains, and a computed progress percentage. Poll every 30–60 seconds while status is pending/processing/in_progress; anything faster is wasted quota.

Terminal states: completed, partial, canceled, failed, refunded. Failures refund your wallet automatically — reconcile with GET /api/wallet/transactions, where every movement carries a unique reference.

5. The pricing math

Reselling margins are a spread on top of your tier rate. A concrete example:

Rate per 1k followers
Your cost (Elite tier)$3.47
Typical retail on small panels$5.50 – $8.00
Your spread58% – 130%

Your tier upgrades automatically from lifetime spend — resold volume counts, so a growing panel's costs fall as it scales. That loop (volume → tier → margin) is the entire business model, and it's automatic.

What to build first

A minimal viable panel is four screens: catalogue with your markup applied, an order form, an order-status page fed by polling, and a wallet page. Everything else — refunds, supplier switching, delivery guarantees — is already underneath you.

Ship the boring version this week. Your customers are buying outcomes, not dashboards.

Put this into practice.

18+ platforms, instant start, automatic refunds. Your first boost is two minutes away.