PastePanel
All articles
Article 11 min read

Інтеграція SMM Panel API: повний гайд для PHP, Python та Node.js

P

PastePanel Team

Insights for panel operators

Якщо ви керуєте або лише запускаєте власний бізнес у сфері просування в соцмережах, рано чи пізно ви дійдете до питання автоматизації, і саме тут на перший план виходить SMM panel API. Програмний інтерфейс перетворює вашу панель із простого сайту для ручного оформлення замовлень на повноцінну інфраструктуру, до якої можна під'єднати власний магазин, Telegram-бота, CRM, мобільний застосунок чи систему reseller-перепродажу. У цьому детальному гайді ми розберемо, як влаштований SMM panel API, які методи він надає, і покажемо готові приклади інтеграції на трьох найпопулярніших мовах — PHP, Python та Node.js. Матеріал орієнтований на розробників і власників панелей, які працюють на платформі PastePanel (pastepanel.com), але описані принципи є універсальними для всієї галузі.

Що таке SMM panel API і навіщо він потрібен

API (Application Programming Interface) — це набір HTTP-ендпоінтів, через які зовнішня програма може взаємодіяти з панеллю без участі людини та браузера. Замість того щоб заходити в адмінку й вручну натискати кнопки, ваш код надсилає запит із параметрами, а панель у відповідь повертає структуровані дані у форматі JSON. Через API ви можете отримати список сервісів, створити замовлення на followers, likes або views, перевірити статус виконання, дізнатися залишок балансу, запустити refill чи скасувати замовлення.

У практиці це відкриває кілька сценаріїв. По-перше, reseller-модель: інша панель або дилер підключається до вашого API, продає ваші сервіси під власним брендом і автоматично передає замовлення вам. По-друге, власні фронтенди: інтернет-магазин на WordPress, Telegram-бот або мобільний застосунок, які приймають замовлення від клієнтів і транслюють їх у панель. По-третє, автоматизація закупівель: ваша панель сама виступає клієнтом для upstream-провайдерів, автоматично докуповуючи послуги за оптовими цінами. Саме ця остання логіка є ядром будь-якого сучасного SMM-бізнесу — ви перепродаєте потужності кількох провайдерів із власною націнкою.

Стандартний формат SMM panel API у галузі

Історично склалося так, що більшість платформ дотримуються єдиної схеми запитів, яку в індустрії часто називають форматом perfect panel. Це де-факто стандарт: якщо ваша інтеграція написана під нього, вона майже без змін працюватиме з десятками різних панелей і провайдерів. PastePanel повністю сумісний із цим підходом, тому код, який ви напишете один раз, залишиться робочим і при зміні провайдера, і при масштабуванні.

Ключові принципи формату perfect panel такі:

  • Усі запити надсилаються методом POST на єдиний ендпоінт, зазвичай https://ваш-домен/api/v2.
  • Тіло запиту передається як application/x-www-form-urlencoded (звичайні form-поля), а не як «сирий» JSON.
  • Автентифікація відбувається через параметр key — це персональний API-ключ користувача, який видно в його кабінеті.
  • Параметр action визначає операцію: services, add, status, balance, refill, cancel тощо.
  • Відповідь завжди приходить у форматі JSON.

Нижче наведено повний перелік основних дій, які підтримує API у стилі perfect panel, разом із параметрами.

Список сервісів

action=services — повертає масив усіх доступних послуг: їхні service (ID), name, type, category, rate (ціна за 1000), min, max, а також прапорці refill та cancel. Саме з цього виклику зазвичай починається будь-яка інтеграція — ви синхронізуєте каталог у себе.

Створення замовлення

action=add — головна операція. Обов'язкові параметри залежать від типу замовлення:

  • Default: service, link, quantity.
  • Package: service, link (кількість фіксована пакетом).
  • Custom Comments: service, link, comments (список коментарів, розділених новим рядком).
  • Mentions: service, link, quantity, usernames або hashtags.
  • Subscriptions: service, username, min, max, posts, delay, expiry.
  • Drip-Feed: до звичайних полів додаються runs (кількість запусків) та interval (інтервал у хвилинах між ними). Це дозволяє розтягнути доставку followers або views у часі, що виглядає природніше.
  • Poll: service, link, quantity, answer_number.

У відповідь ви отримаєте {"order": 123456} — унікальний ідентифікатор замовлення.

Статус, баланс, refill і cancel

  • action=status з параметром order (або orders для пакетної перевірки до 100 штук через кому) повертає charge, start_count, status, remains і currency.
  • action=balance повертає поточний balance і currency.
  • action=refill з order або orders запускає догін загублених followers у межах гарантії поповнення.
  • action=refill_status перевіряє стан refill.
  • action=cancel з orders надсилає запит на скасування (доступний лише для сервісів із прапорцем cancel).

Інтеграція SMM panel API на PHP

PHP залишається найпоширенішою мовою для SMM-магазинів завдяки WordPress і самописним CMS. Наведений нижче клас є універсальним обгортанням над SMM panel API формату perfect panel і працює з PastePanel «з коробки».

<?php
class SmmApi {
    private $apiUrl = 'https://your-panel.pastepanel.com/api/v2';
    private $apiKey;

    public function __construct($apiKey) {
        $this->apiKey = $apiKey;
    }

    // Універсальний метод відправлення запиту
    private function request($params = []) {
        $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_SSL_VERIFYPEER => true,
            CURLOPT_TIMEOUT        => 30,
            CURLOPT_HTTPHEADER     => ['Accept: application/json'],
        ]);
        $response = curl_exec($ch);
        if (curl_errno($ch)) {
            throw new Exception('cURL: ' . curl_error($ch));
        }
        curl_close($ch);
        return json_decode($response, true);
    }

    public function services() {
        return $this->request(['action' => 'services']);
    }

    public function balance() {
        return $this->request(['action' => 'balance']);
    }

    // Звичайне замовлення
    public function order($service, $link, $quantity) {
        return $this->request([
            'action'   => 'add',
            'service'  => $service,
            'link'     => $link,
            'quantity' => $quantity,
        ]);
    }

    // Drip-Feed замовлення
    public function dripFeed($service, $link, $quantity, $runs, $interval) {
        return $this->request([
            'action'   => 'add',
            'service'  => $service,
            'link'     => $link,
            'quantity' => $quantity,
            'runs'     => $runs,
            'interval' => $interval,
        ]);
    }

    public function status($orderId) {
        return $this->request(['action' => 'status', 'order' => $orderId]);
    }

    public function refill($orderId) {
        return $this->request(['action' => 'refill', 'order' => $orderId]);
    }
}

// Використання
$api = new SmmApi('ВАШ_API_КЛЮЧ');
$result = $api->order(101, 'https://instagram.com/username', 1000);
if (isset($result['order'])) {
    echo 'Замовлення створено: ' . $result['order'];
} else {
    echo 'Помилка: ' . ($result['error'] ?? 'невідома');
}

Зверніть увагу на два моменти: ключ ніколи не передається в URL (тільки в тілі POST), а CURLOPT_SSL_VERIFYPEER завжди має бути true — вимикати перевірку сертифіката в продакшені неприпустимо.

Інтеграція SMM panel API на Python

Python ідеально підходить для Telegram-ботів, бекенд-сервісів та автоматизації. PastePanel побудований на асинхронному стеку Python/FastAPI, тому нативна робота з SMM panel API цією мовою особливо зручна. Спочатку синхронний варіант на requests.

import requests

class SmmApi:
    def __init__(self, api_key, api_url='https://your-panel.pastepanel.com/api/v2'):
        self.api_key = api_key
        self.api_url = api_url
        self.session = requests.Session()

    def _request(self, params):
        params['key'] = self.api_key
        resp = self.session.post(self.api_url, data=params, timeout=30)
        resp.raise_for_status()
        return resp.json()

    def services(self):
        return self._request({'action': 'services'})

    def balance(self):
        return self._request({'action': 'balance'})

    def order(self, service, link, quantity, **extra):
        payload = {
            'action': 'add',
            'service': service,
            'link': link,
            'quantity': quantity,
        }
        payload.update(extra)  # runs, interval, comments тощо
        return self._request(payload)

    def status(self, order_id):
        return self._request({'action': 'status', 'order': order_id})

    def multi_status(self, order_ids):
        return self._request({
            'action': 'status',
            'orders': ','.join(map(str, order_ids)),
        })

# Використання
api = SmmApi('ВАШ_API_КЛЮЧ')

# Звичайне замовлення
res = api.order(101, 'https://tiktok.com/@user/video/123', 5000)
print(res)

# Drip-Feed: 10 запусків по 500 з інтервалом 60 хв
drip = api.order(101, 'https://youtube.com/watch?v=abc', 5000, runs=10, interval=60)
print(drip)

Для високонавантажених інтеграцій (боти, які обробляють сотні замовлень) краще підійде асинхронний варіант на aiohttp, що дозволяє надсилати десятки запитів паралельно без блокування.

import aiohttp
import asyncio

class AsyncSmmApi:
    def __init__(self, api_key, api_url='https://your-panel.pastepanel.com/api/v2'):
        self.api_key = api_key
        self.api_url = api_url

    async def _request(self, session, params):
        params['key'] = self.api_key
        async with session.post(self.api_url, data=params, timeout=30) as r:
            return await r.json()

    async def order(self, session, service, link, quantity):
        return await self._request(session, {
            'action': 'add', 'service': service,
            'link': link, 'quantity': quantity,
        })

async def main():
    api = AsyncSmmApi('ВАШ_API_КЛЮЧ')
    async with aiohttp.ClientSession() as session:
        tasks = [
            api.order(session, 101, f'https://instagram.com/p/{i}', 1000)
            for i in range(5)
        ]
        results = await asyncio.gather(*tasks)
        print(results)

asyncio.run(main())

Інтеграція SMM panel API на Node.js

Node.js — природний вибір для сучасних веб-застосунків, серверлес-функцій і чат-ботів. Наведений приклад використовує вбудований fetch (доступний у Node.js 18+), тому додаткові залежності не потрібні.

class SmmApi {
  constructor(apiKey, apiUrl = 'https://your-panel.pastepanel.com/api/v2') {
    this.apiKey = apiKey;
    this.apiUrl = apiUrl;
  }

  async request(params = {}) {
    params.key = this.apiKey;
    const body = new URLSearchParams(params);
    const res = await fetch(this.apiUrl, {
      method: 'POST',
      headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
      body,
    });
    if (!res.ok) throw new Error(`HTTP ${res.status}`);
    return res.json();
  }

  services() {
    return this.request({ action: 'services' });
  }

  balance() {
    return this.request({ action: 'balance' });
  }

  order(service, link, quantity, extra = {}) {
    return this.request({ action: 'add', service, link, quantity, ...extra });
  }

  status(orderId) {
    return this.request({ action: 'status', order: orderId });
  }

  refill(orderId) {
    return this.request({ action: 'refill', order: orderId });
  }
}

// Використання
(async () => {
  const api = new SmmApi('ВАШ_API_КЛЮЧ');

  const bal = await api.balance();
  console.log('Баланс:', bal.balance, bal.currency);

  const order = await api.order(101, 'https://t.me/channel', 2000);
  if (order.order) {
    console.log('Створено замовлення', order.order);
  } else {
    console.error('Помилка:', order.error);
  }

  // Custom Comments
  const comments = ['Чудовий пост!', 'Дуже круто', 'Дякую за контент'].join('\n');
  const withComments = await api.order(205, 'https://instagram.com/p/xyz', 3, { comments });
  console.log(withComments);
})();

Обробка помилок і надійність інтеграції

Стабільна інтеграція — це не лише «щасливий шлях», коли все працює. Продумайте реакцію на збої, адже SMM panel API взаємодіє з мережею, upstream-провайдерами й балансом, які можуть бути нестабільними.

  • Перевіряйте ключ error у відповіді. Замість статус-коду HTTP панелі часто повертають 200 OK із тілом {"error": "Not enough funds"}. Завжди явно перевіряйте наявність очікуваного поля (order, balance тощо).
  • Ідемпотентність. Ніколи не повторюйте action=add «наосліп» після таймауту — замовлення могло вже створитися, і повтор спише баланс двічі. Спочатку звіряйтеся зі статусом або зберігайте власний ключ ідемпотентності на своєму боці.
  • Retry з експоненційною затримкою. Для мережевих помилок (таймаут, 5xx) робіть 2–3 повторні спроби з наростаючою паузою, але тільки для читальних операцій (status, services, balance).
  • Rate limiting. Дотримуйтеся розумного темпу запитів. Для масової перевірки статусів використовуйте пакетний orders (до 100 ID за раз) замість сотень окремих викликів.
  • Логуйте все. Зберігайте сирі запити й відповіді — це рятує при розборі спірних замовлень і звірці з провайдером.

Безпека API-ключів

API-ключ — це фактично пароль до балансу. Його компрометація означає, що зловмисник зможе оформлювати замовлення за ваш рахунок. Дотримуйтеся базових правил:

  • Зберігайте ключ у змінних оточення або секрет-сховищі, а не в коді репозиторію.
  • Ніколи не передавайте ключ на фронтенд — усі виклики SMM panel API робіть із бекенду.
  • Використовуйте лише HTTPS і не вимикайте перевірку TLS-сертифіката.
  • За можливості ротуйте ключ і встановлюйте IP-обмеження на стороні панелі.

На платформі PastePanel API-ключі провайдерів зберігаються зашифрованими за допомогою Fernet, а панель веде постійний моніторинг балансу upstream-провайдерів, щоб замовлення не «падали» через нестачу коштів на верхньому рівні. Це знімає з вас значну частину ризиків, які в іншому разі довелося б контролювати вручну.

Як API вписується в архітектуру PastePanel

PastePanel — це багатотенантна white-label SaaS-платформа, тобто одна інсталяція обслуговує багато незалежних панелей, кожна з власним доменом, брендингом і темою. У цій архітектурі API відіграє центральну роль одразу на двох рівнях. Зверху ваша панель сама є API-клієнтом кількох upstream-провайдерів: адмінка з 30 модулями дозволяє під'єднати провайдерів, синхронізувати їхні каталоги, налаштувати націнку та автоматичне виконання замовлень. Знизу ваша панель надає власний API вашим клієнтам і reseller-партнерам — той самий сумісний із perfect panel формат, який ми розібрали вище.

Завдяки асинхронному стеку Python/FastAPI платформа тримає високу пропускну здатність при масових замовленнях (Mass Orders) і одночасній обробці великої кількості API-викликів. А підтримка всіх типів замовлень — Default, Package, Custom Comments, Subscriptions, Drip-Feed, Mentions, Poll — означає, що вам не доведеться дописувати логіку самотужки: достатньо передати відповідні параметри в один і той самий ендпоінт.

Практичні поради з підключення провайдерів

Коли ви налаштовуєте закупівлю в кількох upstream-джерел, дотримуйтеся такого чек-листа:

  • Синхронізуйте каталог регулярно. Ціни й ліміти (min/max) у провайдерів змінюються — автоматична синхронізація через action=services тримає ваш прайс актуальним.
  • Мапте сервіси, а не покладайтеся на ID. ID послуги у провайдера може змінитися; зберігайте власний внутрішній ідентифікатор і зв'язку до зовнішнього.
  • Тестуйте на мінімальних об'ємах. Перед масовим продажем оформіть тестове замовлення на min-кількість і перевірте якість followers чи views.
  • Відстежуйте start_count і remains. Ці поля з action=status — основа для коректного відображення прогресу клієнту і для рішення про refill.
  • Автоматизуйте refill. Для сервісів із гарантією поповнення налаштуйте автоматичний action=refill при виявленні просідання.

Переваги роботи з API PastePanel

  • Єдиний галузевий формат — сумісність зі стандартом perfect panel, тож ваш код і код ваших reseller-партнерів працює без переписування.
  • Повний набір операцій — services, add, status, balance, refill, cancel і всі типи замовлень, включно з Drip-Feed і Custom Comments.
  • Готові приклади на PHP, Python і Node.js — швидкий старт для будь-якого стеку.
  • Асинхронна архітектура Python/FastAPI — висока швидкість і стабільність при масових замовленнях.
  • Безпека — зашифровані Fernet ключі провайдерів, моніторинг балансу, HTTPS.
  • White-label — власний домен, брендинг і теми для кожної панелі в багатотенантному середовищі.
  • Глобальні платежі — USDT, Binance, Payeer, Cryptomus, NOWPayments, CoinPayments, Stripe, bKash, ABA та ручні методи.
  • Ріст під ключ — сервіси для Instagram, TikTok, YouTube, Telegram і Facebook в одній панелі.

Підсумок і наступний крок

Інтеграція SMM panel API — це не складна магія, а послідовна робота з кількома HTTP-ендпоінтами у передбачуваному форматі. Опанувавши базові дії (services, add, status, balance, refill) і написавши невеликий клас-обгортку на PHP, Python чи Node.js, ви отримуєте повністю автоматизований канал продажів followers, likes, views та subscribers. Дотримання стандарту perfect panel, продумана обробка помилок і базова гігієна безпеки перетворюють вашу панель на надійну інфраструктуру, яку можна масштабувати без обмежень.

Готові перевірити все на практиці? Запустіть власний брендований SMM panel API вже сьогодні: створіть свою панель безкоштовно на PastePanel (pastepanel.com), підключіть провайдерів, згенеруйте свій API-ключ і почніть будувати бізнес на автоматизації просування в соцмережах уже сьогодні.

Your brand, your revenue

Stop reading, start building.

The best lessons come from doing. Launch your own panel in five minutes.

Launch your panel