Getting Started
Welcome to the Chawang SMM API. This API allows you to resell our SMM services under your own brand. You can integrate it into any website, automation script, or SMM panel script.
Contact us or register on https://gamestopup.shop to receive your personal API key. Each key is tied to your account and domain.
All orders are charged from your account wallet balance. Add funds via your account dashboard before placing orders.
Use the services action to get all available services with pricing, minimum/maximum quantities, and our custom Product IDs you can map to your own product catalog.
Use the add action to place orders. The amount is automatically deducted from your wallet balance in real-time.
Authentication
Every request (except ping) requires your API key sent as the key parameter. Your key is unique to your account and domain.
keyCHW-DOMAIN-XXXXXX-YYYYYYYY)actionRate Limits
Rate limits are set per API key and protect the system from abuse. Your specific limits are shown in your account dashboard.
605,000When rate limit is exceeded, the API returns an error with a retry_after field (in seconds). Custom limits are available on Pro tier — contact us.
{
"error": "Rate limit exceeded: max 60 requests per minute.",
"retry_after": 60
}
Error Handling
All errors return HTTP 200 with an error key in the JSON response (standard SMM panel format). Always check for this key before processing a response.
{
"error": "Human-readable error message here."
}
API key is required.key parameterInvalid API key.API key is blocked.Insufficient balance.Service not found or disabled.Minimum quantity for this service is X.Rate limit exceeded…Get Services
Returns all available services with pricing tailored to your account tier (Normal or Pro), quantities, and custom Product IDs set by admin for easy mapping.
keyactionservices[
{
"service": "1",
"name": "Instagram Followers — Real & Active",
"type": "Default",
"category": "Instagram",
"rate": "1.5000",
"min": 100,
"max": 50000,
"refill": true,
"product_id": "IG-FOLLOWERS-REAL"
},
{
"service": "2",
"name": "YouTube Views — Worldwide",
"type": "Default",
"category": "YouTube",
"rate": "0.8000",
"min": 500,
"max": 1000000,
"refill": false,
"product_id": "YT-VIEWS-WW"
}
// ... more services
]
serviceproduct_idrateminmaxrefillGet Balance
Returns the current wallet balance for your API account. Balances are deducted in real-time when orders are placed.
keyactionbalance{
"balance": "24.8500",
"currency": "INR"
}
Place Order
Places a new SMM order. The charge is calculated as (quantity / 1000) × rate and immediately deducted from your wallet. Returns your internal order ID for tracking.
service ID (supplier ID) or our custom product_id (e.g. IG-FOLLOWERS-REAL) in the service field — both work.
keyactionaddservicelinkquantityrunsintervalcommentsusernameshashtagsusernameminmax{ "order": 12345 }
Order Status
Check the status of a single order using the ID returned when the order was placed.
keyactionstatusorderadd response{
"charge": "1.5000",
"start_count": 4820,
"remains": 0,
"status": "Completed",
"currency": "INR"
}
Multi-Order Status
Check status of multiple orders in a single request by sending a comma-separated list of order IDs.
keyactionstatusorders123,124,125{
"123": {
"charge": "1.5000", "start_count": 4820, "remains": 0,
"status": "Completed", "currency": "INR"
},
"124": {
"charge": "0.8000", "start_count": 2100, "remains": 400,
"status": "In progress", "currency": "INR"
}
}
Request Refill
Request a refill for a completed order. Only available for services that have refill: true. Refills are typically free within the service guarantee period.
keyactionrefillorder{ "refill": 9876 }
Refill Status
Check the status of a previously requested refill.
keyactionrefill_statusrefillrefill response{ "status": "Completed" }
PHP — Complete Integration Class
<?php
class ChawangSMM {
private string $apiUrl = 'https://gamestopup.shop/wp-json/chw/v2';
private string $apiKey;
public function __construct(string $apiKey) {
$this->apiKey = $apiKey;
}
private function call(array $params): array {
$params['key'] = $this->apiKey;
$ch = curl_init($this->apiUrl);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query($params),
CURLOPT_TIMEOUT => 30,
]);
$result = json_decode(curl_exec($ch), true) ?? [];
curl_close($ch);
return $result;
}
public function getBalance(): array { return $this->call(['action' => 'balance']); }
public function getServices(): array { return $this->call(['action' => 'services']); }
public function placeOrder(string $service, string $link, int $qty, array $extra = []): array {
return $this->call(array_merge(['action'=>'add','service'=>$service,'link'=>$link,'quantity'=>$qty], $extra));
}
public function getStatus(int $orderId): array {
return $this->call(['action' => 'status', 'order' => $orderId]);
}
public function getMultiStatus(array $orderIds): array {
return $this->call(['action' => 'status', 'orders' => implode(',', $orderIds)]);
}
public function requestRefill(int $orderId): array {
return $this->call(['action' => 'refill', 'order' => $orderId]);
}
}
// Usage
$smm = new ChawangSMM('YOUR_API_KEY');
// Check balance
$bal = $smm->getBalance();
echo 'Balance: $' . $bal['balance'] . PHP_EOL;
// Place an order using custom Product ID
$order = $smm->placeOrder('IG-FOLLOWERS-REAL', 'https://instagram.com/target', 1000);
if (isset($order['error'])) {
echo 'Failed: ' . $order['error'];
} else {
echo 'Order ID: ' . $order['order'];
}
Python — Complete Integration Class
import requests
class ChawangSMM:
def __init__(self, api_key: str):
self.api_url = 'https://gamestopup.shop/wp-json/chw/v2'
self.api_key = api_key
def _call(self, params: dict) -> dict:
params['key'] = self.api_key
try:
r = requests.post(self.api_url, data=params, timeout=30)
return r.json()
except Exception as e:
return {'error': str(e)}
def get_balance(self) -> dict: return self._call({'action': 'balance'})
def get_services(self) -> dict: return self._call({'action': 'services'})
def get_status(self, order_id) -> dict: return self._call({'action': 'status', 'order': order_id})
def request_refill(self, order_id) -> dict: return self._call({'action': 'refill', 'order': order_id})
def place_order(self, service: str, link: str, quantity: int, **kwargs) -> dict:
return self._call({'action': 'add', 'service': service, 'link': link, 'quantity': quantity, **kwargs})
def multi_status(self, order_ids: list) -> dict:
return self._call({'action': 'status', 'orders': ','.join(map(str, order_ids))})
# Usage
smm = ChawangSMM('YOUR_API_KEY')
bal = smm.get_balance()
print(f"Balance: ${bal.get('balance')}")
order = smm.place_order('IG-FOLLOWERS-REAL', 'https://instagram.com/target', 1000)
if 'error' in order:
print('Failed:', order['error'])
else:
print('Order ID:', order['order'])
status = smm.get_status(order['order'])
print('Status:', status.get('status'))
cURL Examples
# Get Balance
curl -X POST https://gamestopup.shop/wp-json/chw/v2 -d "key=YOUR_API_KEY&action=balance"
# Get Services
curl -X POST https://gamestopup.shop/wp-json/chw/v2 -d "key=YOUR_API_KEY&action=services"
# Place Order
curl -X POST https://gamestopup.shop/wp-json/chw/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=IG-FOLLOWERS-REAL" \
-d "link=https://instagram.com/target" \
-d "quantity=1000"
# Check Status
curl -X POST https://gamestopup.shop/wp-json/chw/v2 -d "key=YOUR_API_KEY&action=status&order=12345"
# Multi-Order Status
curl -X POST https://gamestopup.shop/wp-json/chw/v2 \
-d "key=YOUR_API_KEY&action=status&orders=123,124,125"
# Request Refill
curl -X POST https://gamestopup.shop/wp-json/chw/v2 -d "key=YOUR_API_KEY&action=refill&order=12345"
JavaScript (Node.js)
const axios = require('axios'); // npm install axios
const API_URL = 'https://gamestopup.shop/wp-json/chw/v2';
const API_KEY = 'YOUR_API_KEY';
async function smmCall(params) {
const res = await axios.post(API_URL, new URLSearchParams({ key: API_KEY, ...params }));
return res.data;
}
// Place an order
async function placeOrder(service, link, quantity) {
const result = await smmCall({ action: 'add', service, link, quantity });
if (result.error) throw new Error(result.error);
return result.order;
}
// Main
(async () => {
const { balance } = await smmCall({ action: 'balance' });
console.log('Balance:', balance);
const orderId = await placeOrder('IG-FOLLOWERS-REAL', 'https://instagram.com/target', 1000);
console.log('Order ID:', orderId);
const status = await smmCall({ action: 'status', order: orderId });
console.log('Status:', status.status);
})();
Service & Custom Product IDs
Every service has two identifiers you can use in the service field when placing orders:
1, 47, 203
Numeric IDs from the upstream supplier. Always available but may change if supplier reorganizes.
IG-FOLLOWERS-REAL, YT-VIEWS-WW
Stable, human-readable IDs we set. Perfect for mapping to your own product catalog. Use these in your website — they won't change even if the backend service changes.
services action.
Order Statuses
Frequently Asked Questions
service field. We recommend Custom Product IDs as they're stable and descriptive — great for building your own product catalog.https://gamestopup.shop/wp-json/chw/v2) and your API key. It works out of the box.