MysticSMMMysticSMM
REST API v2

API Documentation

Connect your panel to MysticSMM and start reselling. Our API follows the standard SMM panel protocol — if you've used any SMM API before, you'll feel right at home.

1. Create Account

Sign up and get your API key from Settings

2. Add Funds

Deposit minimum $1 via crypto

3. Start Ordering

Send POST requests and grow

Authentication

All requests use POST method with a JSON body. Include your API key in every request.

endpoint
POST  https://mysticsmm.com/api/v2
json
{
  "key": "YOUR_API_KEY",
  "action": "services | add | status | balance"
}
1

List Services

Get the full catalog of available services with pricing, quantity limits, and refill support.

Request

json
{
  "key": "YOUR_API_KEY",
  "action": "services"
}

Response

json
[
  {
    "service": 1,
    "name": "Instagram Followers - Premium",
    "category": "Instagram",
    "rate": 2.50,
    "min": 100,
    "max": 100000,
    "refill": true,
    "cancel": false,
    "dripfeed": false,
    "currency": "USD"
  },
  ...
]

Response Fields

ParameterTypeRequiredDescription
servicenumberYesUnique service ID — use this when placing orders
namestringYesService display name
categorystringYesPlatform category (Instagram, YouTube, TikTok, etc.)
ratenumberYesPrice per 1,000 units in USD
minnumberYesMinimum order quantity
maxnumberYesMaximum order quantity
refillbooleanYesWhether automatic refills are supported
cancelbooleanYesWhether order cancellation is available
dripfeedbooleanYesWhether drip-feed delivery is available
2

Place Order

Create a new order. The cost is calculated as (rate ÷ 1000) × quantity and deducted from your wallet automatically.

Request

json
{
  "key": "YOUR_API_KEY",
  "action": "add",
  "service": 1,
  "link": "https://instagram.com/username",
  "quantity": 1000
}
ParameterTypeRequiredDescription
keystringYesYour API key
actionstringYesMust be "add"
servicenumberYesService ID from the services list
linkstringYesTarget URL (profile, post, video, etc.)
quantitynumberYesOrder quantity (between service min and max)

Success Response

json
{
  "order": 12345
}

Error Responses

json
// Insufficient balance
{ "error": "Insufficient balance in wallet." }

// Invalid quantity
{ "error": "Quantity must be between 100 and 100000" }

// Service not found
{ "success": false, "name": "SERVICE_NOT_FOUND", "message": "Service not found or unauthorized" }
3

Order Status

Check the delivery status and charge for any order.

Request

json
{
  "key": "YOUR_API_KEY",
  "action": "status",
  "order": 12345
}

Response

json
{
  "charge": 2.50,
  "status": "COMPLETED",
  "currency": "USD",
  "start_count": 1520,
  "remains": 0
}

Response Fields

ParameterTypeRequiredDescription
chargenumberYesAmount charged for this order
statusstringYesCurrent order status (see table below)
currencystringYesCurrency of the charge
start_countnumberNoCount at the moment the order started processing
remainsnumberNoQuantity remaining to be delivered (used for partial/cancelled refunds)

Status Values

StatusMeaning
PENDINGOrder is queued for processing
IN_PROGRESSOrder is actively being delivered
PROCESSINGProvider is working on the order
COMPLETEDAll units have been fully delivered
PARTIALPartially delivered — undelivered portion refunded to wallet
CANCELLEDOrder was cancelled — refund based on undelivered quantity
5

Refunds & Partial Delivery

Refunds are processed automatically when an order is cancelled or partially delivered. The refund amount is calculated based on the undelivered quantity.

How Refunds Work

P

Partial Delivery

If only part of the order is delivered, you are refunded for the undelivered portion.

refund = (remains ÷ quantity) × charge
C

Cancelled Order

If the order is cancelled before any delivery, you get a full refund. If some units were already delivered, only the undelivered portion is refunded.

refund = remains > 0 ? (remains ÷ quantity) × charge : full charge

Example

json
// You ordered 10,000 followers at $2.50/1K = $25.00
// Provider delivered 7,000 and marked as PARTIAL
// remains = 3,000

refund = (3000 / 10000) × 25.00 = $7.50
// $7.50 is automatically credited to your wallet
4

Check Balance

Retrieve your current wallet balance and currency.

Request

json
{
  "key": "YOUR_API_KEY",
  "action": "balance"
}

Response

json
{
  "balance": "150.00",
  "currency": "USD"
}

Code Examples

Copy-paste examples to get started in your favorite language.

PHP

php
<?php
$api_url = 'https://mysticsmm.com/api/v2';

// Place an order
$response = file_get_contents($api_url, false, stream_context_create([
    'http' => [
        'method'  => 'POST',
        'header'  => 'Content-Type: application/json',
        'content' => json_encode([
            'key'      => 'YOUR_API_KEY',
            'action'   => 'add',
            'service'  => 1,
            'link'     => 'https://instagram.com/username',
            'quantity' => 1000,
        ]),
    ],
]));

$result = json_decode($response, true);
echo "Order ID: " . $result['order'];
?>

Python

python
import requests

API_URL = 'https://mysticsmm.com/api/v2'
API_KEY = 'YOUR_API_KEY'

# List all services
services = requests.post(API_URL, json={
    'key': API_KEY,
    'action': 'services',
}).json()

# Place an order
order = requests.post(API_URL, json={
    'key': API_KEY,
    'action': 'add',
    'service': 1,
    'link': 'https://instagram.com/username',
    'quantity': 1000,
}).json()

print(f"Order ID: {order['order']}")

# Check order status
status = requests.post(API_URL, json={
    'key': API_KEY,
    'action': 'status',
    'order': order['order'],
}).json()

print(f"Status: {status['status']}")

# Check balance
balance = requests.post(API_URL, json={
    'key': API_KEY,
    'action': 'balance',
}).json()

print(f"Balance: ${balance['balance']}")

JavaScript / Node.js

javascript
const API_URL = 'https://mysticsmm.com/api/v2';
const API_KEY = 'YOUR_API_KEY';

async function smmRequest(params) {
  const res = await fetch(API_URL, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ key: API_KEY, ...params }),
  });
  return res.json();
}

// List services
const services = await smmRequest({ action: 'services' });

// Place order
const order = await smmRequest({
  action: 'add',
  service: 1,
  link: 'https://instagram.com/username',
  quantity: 1000,
});
console.log('Order ID:', order.order);

// Check status
const status = await smmRequest({
  action: 'status',
  order: order.order,
});
console.log('Status:', status.status);

// Check balance
const balance = await smmRequest({ action: 'balance' });
console.log('Balance:', balance.balance);

cURL

bash
# List services
curl -X POST https://mysticsmm.com/api/v2 \
  -H "Content-Type: application/json" \
  -d '{"key": "YOUR_API_KEY", "action": "services"}'

# Place order
curl -X POST https://mysticsmm.com/api/v2 \
  -H "Content-Type: application/json" \
  -d '{"key": "YOUR_API_KEY", "action": "add", "service": 1, "link": "https://instagram.com/username", "quantity": 1000}'

# Check order status
curl -X POST https://mysticsmm.com/api/v2 \
  -H "Content-Type: application/json" \
  -d '{"key": "YOUR_API_KEY", "action": "status", "order": 12345}'

# Check balance
curl -X POST https://mysticsmm.com/api/v2 \
  -H "Content-Type: application/json" \
  -d '{"key": "YOUR_API_KEY", "action": "balance"}'

Pricing Formula

cost = (rate ÷ 1000) × quantity

Example: Service with rate = $2.50 per 1K, ordering 5,000 units

cost = (2.50 ÷ 1000) × 5000 = $12.50

HTTP Status Codes

CodeMeaningWhen
200OKSuccessful request (services, status, balance)
201CreatedOrder placed successfully
400Bad RequestInvalid quantity, missing parameters, or validation error
401UnauthorizedInvalid or missing API key
500Server ErrorService/provider not found or internal error

Rate Limits

⚡

1 request per second

Exceeding this limit may result in temporary throttling (HTTP 429)

If you need higher throughput for bulk operations, contact support for an enterprise rate limit increase.

Best Practices

Keep your key secret

Never expose your API key in frontend code or public repos

Rate limit your requests

We recommend max 1 request per second to avoid throttling

Cache the services list

Fetch services once every few hours, not on every page load

Validate before ordering

Check quantity is between min and max before sending

Handle errors gracefully

Always check response for error fields and retry on network failures

Monitor your balance

Check balance regularly to avoid failed orders from insufficient funds

Track partial deliveries

Check the remains field in status responses to know exactly how much was delivered

Save your order IDs

Store the order ID returned from the add action to check status later

Need Help Integrating?

Our support team is available 24/7 to help you connect your panel. Reach out through the dashboard or email us directly.

© 2026 MysticSMM. All rights reserved.