Якщо ви керуєте або лише запускаєте власний бізнес у сфері просування в соцмережах, рано чи пізно ви дійдете до питання автоматизації, і саме тут на перший план виходить 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-ключ і почніть будувати бізнес на автоматизації просування в соцмережах уже сьогодні.