Обзор
Toplistbot предоставляет два HTTP API. Оба используют JSON поверх HTTPS и списывают средства с одного и того же баланса токенов — выберите тот, который подходит вашему способу интеграции.
API SMM-панели
Один эндпоинт, совместимый с Perfect Panel. Если ваша панель уже говорит на стандартном протоколе SMM, направьте её сюда — и всё заработает без изменений в коде.
API платформы
REST API, на котором работает личный кабинет: просматривайте каталог сайтов, входите в аккаунт, создавайте кампании и управляйте ими из собственного приложения.
Базовый URL
https://backend.toplistbot.com/apiНачало работы
От нового аккаунта до работающей кампании за пять шагов. Всё ниже использует эндпоинт SMM — самый быстрый путь; API платформы работает так же, как только вы получите JWT.
Создайте аккаунт
Зарегистрируйтесь и подтвердите почту. Подтверждение начисляет 100 бесплатных токенов — этого хватит на настоящую кампанию, прежде чем вы что-то потратите.
Скопируйте ключ API
Откройте личный кабинет и создайте ключ API. Относитесь к нему как к паролю — он тратит ваш баланс токенов. Ключ можно перевыпустить в любой момент, старый сразу перестаёт работать.
Найдите нужный сервис
Получите список всех сайтов, на которых можно оформить заказ. У каждой записи есть числовой id сервиса и тариф в токенах за 1 000 действий. Запишите id сайта, на котором хотите продвигаться.
cURLcurl -X POST https://backend.toplistbot.com/api/v2 -d "key=YOUR_API_KEY" -d "action=services"Оформите первый заказ
Отправьте id сервиса, URL, на котором будет работать кампания, и количество действий. Стоимость списывается сразу, а в ответе приходит id заказа.
cURLcurl -X POST https://backend.toplistbot.com/api/v2 \ -d "key=YOUR_API_KEY" \ -d "action=add" \ -d "service=9" \ -d "link=https://arena-top100.com/index.php?a=in&u=yourserver" \ -d "quantity=1000"Отслеживайте выполнение
Запрашивайте статус по id заказа, чтобы видеть, сколько уже выполнено. Когда схема вас устроит, встройте те же вызовы в свою панель или скрипты.
cURLcurl -X POST https://backend.toplistbot.com/api/v2 -d "key=YOUR_API_KEY" -d "action=status" -d "orders=184223"
Подключение Perfect Panel
Если вы используете Perfect Panel или совместимое ПО для SMM-панелей, писать код не нужно — добавьте Toplistbot как провайдера с этими настройками и импортируйте список сервисов.
- URL API
- https://backend.toplistbot.com/api/v2
- Ключ API
- YOUR_API_KEY
- HTTP-метод
- POST
Начните с небольшого объёма на одном сайте, чтобы убедиться, что формат ссылки принимается, и только потом масштабируйтесь. Неверная ссылка тоже расходует токены.
Аутентификация
Два API аутентифицируются по-разному. Эндпоинт SMM использует долгоживущий ключ API, а API платформы — JWT, который вы получаете при входе.
Ключ API (эндпоинт SMM)
Передавайте ключ в поле `key` в каждом запросе — как поле формы, параметр строки запроса или заголовок `Authorization: Bearer`. Создать и перевыпустить его можно в личном кабинете. GET-запрос к тому же эндпоинту возвращает статус ok — это дешёвый способ проверить, что ключ действителен.
curl https://backend.toplistbot.com/api/v2?key=YOUR_API_KEYJWT (API платформы)
Войдите в аккаунт, чтобы получить токен, и передавайте его как bearer-токен в защищённых маршрутах. Токены истекают — вызовите /auth/refresh, чтобы получить новый.
curl -X POST https://backend.toplistbot.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":"..."}'curl https://backend.toplistbot.com/api/orders/getAll \
-H "Authorization: Bearer YOUR_JWT"Ключ API тратит реальный баланс токенов. Держите его на сервере: всё, что попало в браузер или в репозиторий, следует считать скомпрометированным и перевыпустить в личном кабинете.
Токены и цены
Кампании оплачиваются токенами, купленными заранее. У каждого сайта есть тариф — сколько токенов стоит 1 000 действий кампании на нём — он возвращается в поле `rate` действия services.
cost_in_tokens = (rate * quantity) / 1000Сайт с тарифом 13 стоит 13 токенов за 1 000 действий, значит заказ на 500 обойдётся в 6,5 токена. Стоимость списывается при принятии заказа, а отмена возвращает неизрасходованный остаток.
Ответы balance и status указывают валюту USD ради совместимости с Perfect Panel, но значение — это баланс токенов, а не доллары. Считайте это число токенами.
API SMM-панели
Всё выполняет один эндпоинт. Передавайте поле `action` в каждом POST-запросе, чтобы выбрать операцию; каждый запрос также содержит ваш `key`.
https://backend.toplistbot.com/api/v2| Действие | Параметры |
|---|---|
services | — |
add | service, link, quantity, interval? |
status | orders |
balance | — |
cancel | orders |
action=services
Возвращает все сайты, на которых можно оформить заказ, с текущим тарифом и ограничениями. Используйте id `service` в вызовах add.
curl -X POST https://backend.toplistbot.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=services"[
{
"service": 9,
"name": "arena-top100.com 1000 upvotes",
"type": "Default",
"category": "Votes",
"rate": 15,
"min": 1,
"max": 50000,
"refill": false,
"cancel": true
}
]`rate` указан в токенах за 1 000 действий. Для всех сервисов `min` равен 1, `max` — 50000.
action=add
Создаёт кампанию и сразу списывает её стоимость с баланса.
| Параметр | Тип | Описание |
|---|---|---|
keyобязательный | string | Ваш ключ API. |
actionобязательный | string | Должно быть `add`. |
serviceобязательный | integer | Id сервиса из действия services. |
linkобязательный | url | URL, на котором работает кампания. Должен быть корректным URL. |
quantityобязательный | integer | Количество действий, от 1 до 50000. |
interval | integer | Действий в час. По умолчанию 15, максимум 4000, и не может превышать собственный лимит сайта. |
curl -X POST https://backend.toplistbot.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=add" \
-d "service=9" \
-d "link=https://arena-top100.com/index.php?a=in&u=yourserver" \
-d "quantity=1000" \
-d "interval=60"{
"order_id": 184223
}action=status
Возвращает прогресс по одному или нескольким заказам. Передайте один id, чтобы получить простой объект, или список через запятую.
curl -X POST https://backend.toplistbot.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=status" \
-d "orders=184223"{
"charge": 13.5,
"start_count": 0,
"status": "Completed",
"remains": 1000,
"currency": "USD"
}При нескольких id ответ индексируется по id заказа, а неизвестные или чужие заказы возвращают запись об ошибке, не обрушивая весь запрос.
{
"184223": { "charge": 13.5, "start_count": 0, "status": "Completed", "remains": 1000, "currency": "USD" },
"184224": { "error": "Incorrect order ID" }
}action=balance
Возвращает остаток вашего баланса токенов.
curl -X POST https://backend.toplistbot.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=balance"{
"balance": 528.41,
"currency": "USD"
}action=cancel
Останавливает заказ и возвращает неизрасходованный остаток на баланс. Завершённые заказы отменить нельзя.
curl -X POST https://backend.toplistbot.com/api/v2 \
-d "key=YOUR_API_KEY" \
-d "action=cancel" \
-d "orders=184223,184224"[
{ "order": "184223", "cancel": 1, "refund": 4.5 },
{ "order": "184224", "cancel": { "error": "Incorrect order ID" } }
]API платформы
Тот же REST API, который использует личный кабинет. Эндпоинты каталога открыты, всё остальное требует JWT.
Каталог
Публичные, без аутентификации. Удобно для сборки собственного каталога или страницы с ценами.
- GET
/orders/getAllWebsitesВсе сайты каталога с тарифами и метаданными - POST
/orders/getWebsiteDetailsByNameОдин сайт по точному названию - GET
/orders/getAllBasicWebsitesDetails20 случайных названий сайтов - POST
/products/getSuggestionsПохожие сайты для набора id - GET
/products/tokensДоступные пакеты токенов - POST
/products/suggestПредложить сайт для добавления - GET
/news/timelineИстория изменений продукта
curl https://backend.toplistbot.com/api/orders/getAllWebsitesАккаунт
Регистрация, сессии и история счетов.
- POST
/auth/registerСоздать аккаунт - POST
/auth/loginОбменять учётные данные на JWT - POST
/auth/refreshВыпустить новый JWT JWT - POST
/auth/logoutАннулировать текущий JWT JWT - GET
/auth/user-profileПрофиль текущего пользователя JWT - POST
/auth/reset-api-keyПеревыпустить ключ API JWT - GET
/invoices/getИстория счетов JWT
Кампании
Создавайте кампании, управляйте ими и читайте журналы выполнения.
- GET
/orders/getAllВаши кампании, новые сверху - POST
/orders/checkoutСоздать одну или несколько кампаний - POST
/orders/updateИзменить кампанию - POST
/orders/pauseПриостановить активную кампанию - POST
/orders/unpauseВозобновить приостановленную кампанию - POST
/orders/archiveАрхивировать кампанию - PATCH
/orders/updateLimitИзменить дневной лимит - GET
/orders/logs/{id}Журнал выполнения кампании - GET
/orders/graph/{id}Временной ряд для графиков
Ошибки
Ошибки возвращаются с соответствующим HTTP-статусом. При ошибках валидации приходит объект `errors`, где ключи — имена полей.
400Недопустимое действие, некорректные параметры или несуществующий id сервиса.401Учётные данные отсутствуют или недействительны.403Аутентификация пройдена, но баланса токенов не хватает на заказ.422Запрос понят, но не прошёл валидацию.
{
"errors": {
"quantity": ["The quantity must be at least 1."]
}
}Ограничения и примечания
- Количество в заказе должно быть от 1 до 50000 действий.
- Интервал по умолчанию — 15 в час, максимум 4000. Запрос выше собственного лимита сайта отклоняется с ошибкой 400, в которой указан лимит.
- Действия `refill` и `refill_status` не реализованы — вместо этого создайте новый заказ.
- Поле `status` пока не отражает прогресс в реальном времени; для отслеживания используйте `remains` и `start_count`.
- Сайты-каталоги устанавливают собственные правила и со временем их меняют. Вы сами отвечаете за то, чтобы использование сервиса соответствовало правилам любого сайта, на котором вы продвигаетесь. Мы не обещаем какую-либо позицию или место в рейтинге.
