Сравнение API SMM-панелей: JAP, CheapSMMPanel и NotPanel
Сравниваем три публичных API SMM по полям, повторам, вебхукам и HTTP-ошибкам — только по опубликованным контрактам.

Я открыл три публичные страницы API: JustAnotherPanel, CheapSMMPanel и NotPanel. Здесь сравнивается контракт, а не цена или размер каталога.
Две страницы повторяют знакомую форму v2. Важные различия начинаются после первого POST: имена полей, идентификатор повтора, вебхуки и код ответа.
Что остановит вас перед подключением дочерней панели к новому провайдеру?
Нажмите вариант. Сохраняется только на этом устройстве — это не выдуманный опрос.
Таблица сравнения
Все три используют POST в стиле v2 с form-body и JSON-ответом. После этого они уже не взаимозаменяемы.
Клиент JAP нужно перенастроить для CheapSMM. Для создания заказа в NotPanel ему также нужен request_id — это сделано намеренно.
Один тестовый заказ. Одна и та же копия.

Публичные страницы показывают знакомый тестовый заказ и базовые операции: список, add, status и баланс. Для первого запроса этого достаточно, но сбой сети остаётся без ответа.
Пример подтверждает синтаксис, но не поведение повторов, подписанные события и обработку ошибок. Изучите публичный контракт до запуска интеграции.
Имена полей — не мелочь
| Операция | JAP / NotPanel | CheapSMMPanel |
|---|---|---|
| Авторизация | key | api_token |
| Каталог | action=services | action=packages |
| ID сервиса | service | package |
| Начальный счётчик | start_count | start_counter |
| Статусы | In progress / in_progress | Title case in examples |
CheapSMM называет перенос простым, но смена полей авторизации, каталога, сервиса и количества затрагивает каждый вызов. Замена базового URL — не план миграции.
Строки статуса тоже важны. Если сверка возвращает деньги для любого значения, кроме completed, различие имён превращается в денежную ошибку.
Почему NotPanel сильнее там, где это важно
Это проверяемые различия контракта, а не обещание более низкой цены или большего каталога.
Безопасное повторение заказов
Для add обязателен request_id. Повтор с тем же ключом и телом возвращает исходный заказ, а другое тело отклоняется.
Открыть контракт add →Подписанные события статуса
В справочнике webhooks описан HMAC-SHA256 исходного тела с отметкой времени и событием; приватные и локальные URL отклоняются.
Проверить доставку →Явные ошибки
API документирует ответы HTTP 400, 403, 429 и 500, чтобы клиент различал неверные данные, блокировку, лимит и сбой сервиса.
Открыть ошибки и ответы →Видимые лимиты
Ответы содержат X-RateLimit-Limit, Remaining и Reset, а также сведения о tier и причине блокировки, если она есть.
Открыть лимиты →Каждый пункт можно проверить по публичной справке до миграции reseller-процесса.
Тайм-аут — не ошибка

В публичных примерах нет идентификатора от вызывающей стороны. NotPanel требует request_id для каждого add: тот же ключ и тело возвращают исходный ID, другое тело отклоняется.
Создайте ключ один раз, вне цикла повторов. Тайм-аут означает неизвестный результат, а не доказательство отсутствия заказа.
Читайте справочник создания заказа · руководство по интеграции.
Тайм-аут — неизвестный результат. Безопасен только повтор, который сервер может распознать.
Polling или подписанный конверт

JAP и CheapSMM не описывают исходящие webhooks на гостевых страницах API. Предполагается, что клиент опрашивает status, пока строка не изменится. Это работает, но расходует лимит на неподвижные заказы.
NotPanel предоставляет webhook.add, list и remove. В доставке есть HMAC-SHA256 сырого тела, timestamp и событие. Частные и link-local URL отклоняются; доставка как минимум однократная, поэтому обработчик должен быть идемпотентным.
Рецепты находятся в справочнике webhooks · руководстве по HMAC.
Код статуса, а не 200 с ошибкой
Клон спецификации может вернуть HTTP 200 с объектом error. Библиотека, доверяющая только status line, сочтёт это успехом.
Лимиты имеют уровни IP, ключа и тарифа. Перед циклом повторов прочитайте справочники ошибок и rate limits.
Вот аргумент: автоматизация с контрактом, без выдумывания недостающей половины. Прочитайте публичную документацию до переноса трафика. notpanel.com/developers.
Две утечки денег разобраны отдельно: повторы после тайм-аута и webhooks против polling.
FAQ
Есть ли у JustAnotherPanel API для реселлеров?
Да. Публичная v2-страница показывает key и action для services, add, status, refill, cancel и balance. Webhooks, idempotency, каталог HTTP-ошибок и rate-limit headers там не описаны.
Чем API JAP отличается от API NotPanel?
Базовая форма v2 похожа, но NotPanel требует request_id, описывает подписанные webhooks, возвращает явные коды ошибок и публикует заголовки лимитов. JAP описывает больше специальных полей и cancel.
Использует ли CheapSMMPanel тот же API, что JAP?
Нет. В гостевой документации используются api_token, action=packages, package и start_counter. Клиент JAP без изменений не заработает.
Поддерживают ли SMM-панели webhooks?
Некоторые, но большинство публичных v2-страниц их не упоминает. Если подпись не описана, входящие POST нужно считать недоверенными.
Зачем NotPanel требует request_id?
Add после тайм-аута имеет неизвестный результат. Без ключа вызывающей стороны повтор может стать вторым списанием; тот же ключ и тело возвращают исходный заказ.
Можно ли направить существующий клиент JAP в NotPanel?
Чтения обычно требуют сменить URL и проверить регистр статусов. Для add нужен request_id, cancel не открыт, а специальные поля должны быть документированы.