- Главная
- Разработчикам
API для реселлеров
Подключите свою панель, сайт или Telegram-бота к ClickPop и продавайте услуги под своим брендом. Формат запросов — тот, что уже используют скрипты SMM-панелей, поэтому подключение обычно занимает несколько минут.
https://clickpop.ir/api/reseller/v1
- Только HTTPS
- Вход: form data или JSON, выход: JSON
- Цены в туманах за 1000
- 240 запросов в минуту на ключ
Быстрый старт
- Получите ключВ панели откройте «API» и создайте ключ. Его можно ограничить IP вашего сервера.
- Добавьте нас как поставщикаВ скрипте панели укажите адрес API выше и вставьте ключ.
- Импортируйте услугиВызовите «services», выберите услуги для продажи и задайте свои цены.
Формат запроса
Все вызовы — POST на один адрес. Передавайте параметры как form data (application/x-www-form-urlencoded) или JSON; ответ всегда JSON в UTF-8.
| Параметр | Обязателен | Описание |
|---|---|---|
key | Да | Ваш ключ API |
action | Да | services · add · status · refill · refill_status · cancel · balance |
Список услуг
action=servicesВсе активные услуги с вашей ценой. Кэшируйте список на несколько минут, а не запрашивайте перед каждым заказом.
curl -X POST https://clickpop.ir/api/reseller/v1 \
-d key=YOUR_KEY \
-d action=services[
{
"service": 1204,
"name": "Instagram followers — Iranian, high quality, 30-day refill",
"type": "Default",
"category": "Instagram — Followers",
"rate": "48000",
"min": "100",
"max": "50000",
"refill": true,
"cancel": false,
"dripfeed": false
}
]| Поле | Описание |
|---|---|
service | ID услуги — используйте его в «add» |
rate | Ваша цена в туманах за 1000 (скидка аккаунта уже учтена) |
min / max | Допустимое количество в заказе |
refill | Для услуги можно запросить восполнение |
cancel | Заказ можно отменить до начала выполнения |
Новый заказ
action=add| Параметр | Обязателен | Описание |
|---|---|---|
service | Да | ID услуги |
link | Да | Ссылка на страницу, пост или канал (https://…) |
quantity | Да | От min до max услуги |
curl -X POST https://clickpop.ir/api/reseller/v1 \
-d key=YOUR_KEY \
-d action=add \
-d service=1204 \
-d link=https://instagram.com/yourpage \
-d quantity=1000{"order": 10482}Сумма списывается с баланса при создании заказа. Невыполненное возвращается автоматически.
Статус заказа
action=statuscurl -X POST https://clickpop.ir/api/reseller/v1 \
-d key=YOUR_KEY \
-d action=status \
-d order=10482{
"charge": "48000",
"start_count": "1520",
"status": "In progress",
"remains": "380",
"currency": "IRT"
}Несколько заказов сразу
action=statusДо 100 ID заказов через запятую.
curl -X POST https://clickpop.ir/api/reseller/v1 \
-d key=YOUR_KEY \
-d action=status \
-d orders=10482,10483{
"10482": {"charge": "48000", "start_count": "1520", "status": "Completed", "remains": "0", "currency": "IRT"},
"10483": {"error": "Incorrect order ID"}
}Докрутка
action=refillДля услуг с refill: true — раз в 24 часа на заказ. Для нескольких заказов передайте «orders» через запятую.
curl -X POST https://clickpop.ir/api/reseller/v1 \
-d key=YOUR_KEY \
-d action=refill \
-d order=10482{"refill": 50017}Статус восполнения
action=refill_statuscurl -X POST https://clickpop.ir/api/reseller/v1 \
-d key=YOUR_KEY \
-d action=refill_status \
-d refill=50017{"status": "Completed"}Отменить
action=cancelТолько для услуг с cancel: true и до начала выполнения. Невыполненная часть возвращается автоматически.
curl -X POST https://clickpop.ir/api/reseller/v1 \
-d key=YOUR_KEY \
-d action=cancel \
-d orders=10482,10483[
{"order": 10482, "cancel": 1},
{"order": 10483, "cancel": {"error": "Cancel is not available for this order"}}
]Баланс
action=balancecurl -X POST https://clickpop.ir/api/reseller/v1 \
-d key=YOUR_KEY \
-d action=balance{"balance": "2500000", "currency": "IRT"}Статусы заказа
| Статус | Значение |
|---|---|
Pending | Принят, ожидает запуска |
In progress | Выполняется; «remains» — оставшееся количество |
Completed | Полностью выполнен |
Partial | Выполнен частично; остаток уже на балансе |
Canceled | Не выполнен; вся сумма возвращена на баланс |
Ошибки
Ошибки возвращаются как {"error": "…"}. Текст неизменен, его можно проверять в коде.
| Ошибка | Что делать |
|---|---|
Invalid API key | Проверьте ключ или создайте новый в панели |
IP not allowed | Добавьте IP сервера к ключу или снимите ограничение по IP |
Not enough funds on balance | Пополните баланс |
Incorrect service ID | Услуга удалена или приостановлена; обновите список услуг |
Quantity out of range | Укажите количество от min до max |
Incorrect link | Отправьте полную публичную ссылку нужной платформы |
Incorrect order ID | Такого заказа нет в этом аккаунте |
Orders are paused, try again later | Короткое обслуживание; повторите через несколько минут |
Incorrect request | Не передан обязательный параметр или неизвестное действие |
HTTP 429 — слишком много запросов: подождите минуту и снизьте частоту.
Примеры кода
<?php
function api(array $params): array
{
$ch = curl_init('https://clickpop.ir/api/reseller/v1');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => http_build_query(['key' => 'YOUR_KEY'] + $params),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
]);
$json = json_decode((string) curl_exec($ch), true);
curl_close($ch);
return is_array($json) ? $json : ['error' => 'No response'];
}
$order = api(['action' => 'add', 'service' => 1204, 'link' => 'https://instagram.com/yourpage', 'quantity' => 1000]);
print_r($order);import requests
def api(**params):
r = requests.post("https://clickpop.ir/api/reseller/v1", data={"key": "YOUR_KEY", **params}, timeout=30)
return r.json()
print(api(action="balance"))
print(api(action="add", service=1204, link="https://instagram.com/yourpage", quantity=1000))const api = async (params) => {
const res = await fetch("https://clickpop.ir/api/reseller/v1", {
method: "POST",
body: new URLSearchParams({ key: "YOUR_KEY", ...params }),
});
return res.json();
};
console.log(await api({ action: "balance" }));
console.log(await api({ action: "status", orders: "10482,10483" }));Лимиты и безопасность
- До 240 запросов в минуту на ключ.
- Каждый ключ можно ограничить IP ваших серверов.
- Ключ показывается один раз и хранится только в виде хеша; отзывайте и создавайте новые в любой момент.
- Храните ключ только на сервере — никогда не размещайте его в JavaScript сайта или мобильном приложении.
Бесплатно для всех. Без абонплаты и минимума.