SMM Panel API
SMM Panel Compatible

SMM Panel API Documentation

Standard SMM panel API format compatible with 80%+ of panel reseller systems. Integrate game top-up services seamlessly into your SMM panel with our industry-standard API.

https://api.g2bulk.com/api/v2

Alternative endpoints: /smm/api/v2 or /smm/api

Standard
SMM Panel Format
8000+
Game Services
Instant
Order Processing
Auto
Refund Tracking

Quick Navigation

Authentication

API Key in Request Body

Unlike the main API, SMM panel authentication uses the API key in the request body (not header). Include your API key with the key parameter in every request.

Request Format
{
    "key": "your_api_key_here",
    "action": "services"
}
Get Your API Key: Obtain an API key from our Telegram Bot
Request Format: Both JSON and form-urlencoded data are supported.

Get Services

POST /api/v2

Returns all available game top-up services. Supports optional category filtering for large service lists.

Request Parameters

Parameter Type Required Description
key string Yes Your API key
action string Yes Must be services
category string No Filter by game name (e.g., "PUBG Mobile", "Mobile Legends")
Request - All Services
{
    "key": "your_api_key",
    "action": "services"
}
Request - Filtered by Category
{
    "key": "your_api_key",
    "action": "services",
    "category": "PUBG Mobile"
}
Response
[
    {
        "service": 1,
        "name": "PUBG Mobile - 60 UC",
        "type": "Default",
        "category": "PUBG Mobile",
        "rate": "0.85",
        "min": "1",
        "max": "1",
        "refill": false,
        "cancel": false
    },
    {
        "service": 2,
        "name": "PUBG Mobile - 325 UC",
        "type": "Default",
        "category": "PUBG Mobile",
        "rate": "4.25",
        "min": "1",
        "max": "1",
        "refill": false,
        "cancel": false
    }
]

Response Fields

Field Type Description
service integer Unique service ID (use when placing orders)
name string Service display name
type string Always "Default" for game top-ups
category string Game category name
rate string Price per unit in USD
min string Minimum quantity (always "1")
max string Maximum quantity (always "1")
refill boolean Refill support (always false)
cancel boolean Cancel support (always false)

Add Order

POST /api/v2

Creates a new game top-up order. The order will be processed automatically and status updated in real-time.

Request Parameters

Parameter Type Required Description
key string Yes Your API key
action string Yes Must be add
service integer Yes Service ID from services list
link string Yes Player ID or Player ID|Server ID
quantity integer Yes Always 1 for game top-ups
Link Format:
- Single ID games: 5123456789 (just the player ID)
- Games with server: 5123456789|2001 (player_id|server_id)
Request - Player ID Only
{
    "key": "your_api_key",
    "action": "add",
    "service": 1,
    "link": "5123456789",
    "quantity": 1
}
Request - With Server ID
{
    "key": "your_api_key",
    "action": "add",
    "service": 1,
    "link": "5123456789|2001",
    "quantity": 1
}
Success Response
{
    "order": 12345
}
Error Response
{
    "error": "Insufficient balance"
}

Order Status

POST /api/v2

Returns the current status of a single order.

Request Parameters

Parameter Type Required Description
key string Yes Your API key
action string Yes Must be status
order integer Yes Order ID to check
Request
{
    "key": "your_api_key",
    "action": "status",
    "order": 12345
}
Response
{
    "charge": "0.850",
    "start_count": "0",
    "status": "Completed",
    "remains": "0",
    "currency": "USD"
}

Multiple Orders Status

POST /api/v2

Returns the status of multiple orders at once. Uses the same status action with the orders parameter (comma-separated IDs).

Request Parameters

Parameter Type Required Description
key string Yes Your API key
action string Yes Must be status
orders string Yes Comma-separated order IDs (up to 100)
Request
{
    "key": "your_api_key",
    "action": "status",
    "orders": "12345,12346,12347"
}
Response
{
    "12345": {
        "charge": "0.850",
        "start_count": "0",
        "status": "Completed",
        "remains": "0",
        "currency": "USD"
    },
    "12346": {
        "charge": "4.250",
        "start_count": "0",
        "status": "In progress",
        "remains": "0",
        "currency": "USD"
    },
    "12347": {
        "charge": "8.500",
        "start_count": "0",
        "status": "Pending",
        "remains": "0",
        "currency": "USD"
    }
}

Check Balance

POST /api/v2

Returns your current account balance with 4 decimal places precision.

Request
{
    "key": "your_api_key",
    "action": "balance"
}
Response
{
    "balance": "150.5000",
    "currency": "USD"
}

Order Status Codes

Order status values and their meanings:

Status Description
Pending Order is waiting to be processed
In progress Order is currently being processed
Completed Order completed successfully
Partial Order partially completed
Canceled Order was canceled or failed
Refunded Order was refunded (balance credited back)
Automatic Refunds: When an order fails and is refunded, the status will show as "Refunded" and your balance will be automatically credited back.

Code Examples

PHP Example
<?php
$api_url = 'https://api.g2bulk.com/api/v2';
$api_key = 'your_api_key_here';

function smmRequest($action, $params = []) {
    global $api_url, $api_key;

    $post_data = array_merge(['key' => $api_key, 'action' => $action], $params);

    $ch = curl_init($api_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_POST, true);
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
    curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

    $response = curl_exec($ch);
    curl_close($ch);

    return json_decode($response, true);
}

// Get all services
$services = smmRequest('services');

// Get services by category
$pubgServices = smmRequest('services', ['category' => 'PUBG Mobile']);

// Add order
$order = smmRequest('add', [
    'service' => 1,
    'link' => '5123456789|2001',
    'quantity' => 1
]);

// Check order status
$status = smmRequest('status', ['order' => $order['order']]);

// Check balance
$balance = smmRequest('balance');

print_r($balance);
?>
Python Example
import requests

API_URL = 'https://api.g2bulk.com/api/v2'
API_KEY = 'your_api_key_here'

def smm_request(action, **params):
    data = {'key': API_KEY, 'action': action, **params}
    response = requests.post(API_URL, json=data)
    return response.json()

# Get all services
services = smm_request('services')

# Get services by category
pubg_services = smm_request('services', category='PUBG Mobile')

# Add order
order = smm_request('add', service=1, link='5123456789|2001', quantity=1)

# Check order status
status = smm_request('status', order=order['order'])

# Check balance
balance = smm_request('balance')

print(balance)
JavaScript (Node.js) Example
const API_URL = 'https://api.g2bulk.com/api/v2';
const API_KEY = 'your_api_key_here';

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

// Get all services
const services = await smmRequest('services');

// Get services by category
const pubgServices = await smmRequest('services', { category: 'PUBG Mobile' });

// Add order
const order = await smmRequest('add', {
    service: 1,
    link: '5123456789|2001',
    quantity: 1
});

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

// Check balance
const balance = await smmRequest('balance');

console.log(balance);
cURL Examples
# Get services
curl -X POST https://api.g2bulk.com/api/v2 \
  -H "Content-Type: application/json" \
  -d '{"key": "your_api_key", "action": "services"}'

# Get services by category
curl -X POST https://api.g2bulk.com/api/v2 \
  -H "Content-Type: application/json" \
  -d '{"key": "your_api_key", "action": "services", "category": "PUBG Mobile"}'

# Add order
curl -X POST https://api.g2bulk.com/api/v2 \
  -H "Content-Type: application/json" \
  -d '{"key": "your_api_key", "action": "add", "service": 1, "link": "5123456789|2001", "quantity": 1}'

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

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

Error Handling

All errors are returned with HTTP 200 status and an error field:

Error Description
Invalid API key The provided API key is invalid or missing
Invalid action The action parameter is not recognized
Service ID is required Missing service parameter for add action
Link (Player ID) is required Missing link parameter for add action
Service not found or inactive The service ID doesn't exist or is inactive
Game is currently unavailable The game product is temporarily disabled
Insufficient balance Account balance is too low for the order
Order not found The order ID doesn't exist for your account