Кратко
Способ отправки запросов стандартного API v2 SMM панели, 6 action, примеры ответов, сообщения об ошибках и лимиты запросов с точки зрения реселлера.
API SMM панели это способ подключения, с которым заказы автоматически отправляются, а статусы проверяются из другой панели или вашей собственной программы. 1PANEL PLUS использует стандартный API v2 SMM панели, поэтому если у вас уже есть код, подключенный к другой панели, достаточно заменить адрес и ключ. API и сайт используют те же услуги, те же цены за 1,000 и тот же баланс.
Кто пользуется API SMM панели?
- Реселлеры: размещают услуги в своей панели и автоматически передают заказы клиентов
- Агентства: отправляют заказы для многих каналов разом в заданное время
- Разработчики: пишут скрипты, которые заказывают к началу эфира или публикации нового видео
- Операторы: собирают баланс и статусы заказов в своей панели управления
Как получить API ключ?
Создайте его на странице API ключа в кабинете после зачисления первого пополнения. Ключ показывается один раз в момент создания, поэтому сразу скопируйте его и сохраните в надежном месте. После создания нового ключа старый сразу перестает работать, так что если вам кажется, что ключ раскрыт, просто создайте новый.
Как отправлять запросы к API?
Все запросы отправляются методом POST на один адрес https://1panelplus.com/api/v2. Используйте удобный формат: поля формы (application/x-www-form-urlencoded или multipart) или тело JSON (Content-Type: application/json), и в каждом запросе передавайте key и action. Все ответы приходят в JSON.
Пример запроса (поля формы): key=YOUR_API_KEY&action=balance
Пример запроса (JSON): {"key": "YOUR_API_KEY", "action": "balance"}
| action | Что передать | Что вернется |
|---|---|---|
| services | Ничего | Список услуг |
| add | service, link, quantity или comments | order (номер заказа) |
| status | Один order или orders (через запятую, до 100) | charge, start_count, status, remains, currency |
| refill | order | refill (номер рефилла) |
| refill_status | refill | status |
| balance | Ничего | balance, currency |
- action
- services
- Что передать
- Ничего
- Что вернется
- Список услуг
- action
- add
- Что передать
- service, link, quantity или comments
- Что вернется
- order (номер заказа)
- action
- status
- Что передать
- Один order или orders (через запятую, до 100)
- Что вернется
- charge, start_count, status, remains, currency
- action
- refill
- Что передать
- order
- Что вернется
- refill (номер рефилла)
- action
- refill_status
- Что передать
- refill
- Что вернется
- status
- action
- balance
- Что передать
- Ничего
- Что вернется
- balance, currency
Как получить список услуг через services?
Отправьте action=services, и все услуги в продаже придут массивом. У каждой услуги есть service (номер услуги), name, type, category, rate, min, max, refill и cancel. rate это цена за 1,000 (USD), а если type равен Package, это цена одного пакета. refill равен true, если у услуги есть период рефилла, а cancel всегда false. В category указаны название платформы и категория, поэтому категории своей панели можно построить точно так же.
Пример ответа: [{"service": SERVICE_ID, "name": "Название услуги", "type": "Default", "category": "YouTube - Название категории", "rate": "Цена за 1,000", "min": "Минимальное количество", "max": "Максимальное количество", "refill": true, "cancel": false}]
Цены и услуги могут меняться, поэтому реселлерам стоит регулярно заново запрашивать services и сверять цены, минимальное и максимальное количество в своей панели.
Как создать заказ через add?
Отправьте action=add вместе с service (номер услуги), link (публичная ссылка) и quantity (количество), и заказ будет принят, а сумма сразу спишется с баланса. order в ответе это номер заказа, сохраните его для status и refill. Заказы доступны для аккаунтов с зачисленным первым пополнением.
- Обычные услуги: передайте service, link, quantity
- Услуги Custom Comments: вместо quantity передайте comments. Один комментарий на строку, до 500 символов в строке, число строк это количество
- Услуги Package: количество можно не передавать. Заказ оформляется на один пакет
Пример запроса: key=YOUR_API_KEY&action=add&service=SERVICE_ID&link=https://www.youtube.com/watch?v=videoid&quantity=1000
Пример ответа: {"order": ORDER_ID}
Как проверить статус заказа через status?
Отправьте action=status с order (один номер заказа), и придет статус этого заказа, а если передать в orders номера заказов через запятую, можно получить до 100 за раз. Если вы ведете много заказов, запрашивайте их группами через orders, так число запросов заметно сократится.
Пример ответа (один): {"charge": "Сумма оплаты", "start_count": "Стартовое значение", "status": "In progress", "remains": "Остаток", "currency": "USD"}
Пример ответа (несколько): {"ORDER_ID_1": {"charge": "...", "start_count": "...", "status": "Completed", "remains": "0", "currency": "USD"}, "ORDER_ID_2": {"error": "Incorrect order ID"}}
| Значение status | Значение |
|---|---|
| Pending | Принят и ждет старта или переходит в обработку |
| In progress | Идет поступление |
| Completed | Все поступило |
| Partial | Поступила часть, остаток суммы вернулся на баланс |
| Canceled | Не удалось обработать, вся сумма вернулась на баланс |
- Значение status
- Pending
- Значение
- Принят и ждет старта или переходит в обработку
- Значение status
- In progress
- Значение
- Идет поступление
- Значение status
- Completed
- Значение
- Все поступило
- Значение status
- Partial
- Значение
- Поступила часть, остаток суммы вернулся на баланс
- Значение status
- Canceled
- Значение
- Не удалось обработать, вся сумма вернулась на баланс
charge это сумма оплаты минус возвращенная сумма, поэтому после частичного выполнения или отмены сразу видно, сколько реально потрачено. Статус заказа обновляется автоматически примерно раз в минуту, поэтому запрашивать status примерно раз в минуту вполне достаточно.
Как пользоваться refill и refill_status?
Отправьте action=refill с order, и рефилл будет запрошен, а в ответе придет refill (номер рефилла). Запрос принимается для выполненного или частично выполненного заказа по услуге с периодом рефилла, в пределах периода рефилла со дня завершения заказа, если нет рефилла в процессе и с последнего запроса прошло 24 часа. Отправьте action=refill_status с refill, и придет статус: Pending, In progress, Completed или Rejected.
Примеры ответов: {"refill": REFILL_ID} и {"status": "Completed"}
Правила рефилла те же, что на сайте. Подробные условия в статье Что такое период рефилла.
Как проверить баланс через balance?
Отправьте action=balance, и придут текущий баланс и валюта (USD). Реселлерам удобно проверять баланс перед передачей заказа и настроить уведомление, когда баланс опускается ниже заданной суммы, тогда заказы идут без перерывов.
Пример ответа: {"balance": "Текущий баланс", "currency": "USD"}
Что означают сообщения об ошибках API?
Ошибка приходит в JSON с английской фразой в поле error. У каждой фразы своя причина, поэтому в программе их можно просто сравнивать и обрабатывать.
| Значение error | Значение |
|---|---|
| Invalid API key | Ключ не передан или неверен |
| Too many requests | Превышен лимит запросов в минуту. Повторите чуть позже |
| Add funds first | Заказы доступны после зачисления первого пополнения |
| Incorrect service ID | Нет услуги в продаже с таким номером |
| Incorrect link | Неверный формат ссылки |
| Quantity out of range | Количество вне диапазона минимума и максимума услуги |
| Incorrect comments | Строки комментариев пустые или строка длиннее 500 символов |
| Not enough funds on balance | Баланс меньше суммы заказа |
| Incorrect order ID | Это не номер заказа вашего аккаунта |
| Incorrect refill ID | Это не номер рефилла вашего аккаунта |
| Incorrect action | Значение action не входит в 6 допустимых |
- Значение error
- Invalid API key
- Значение
- Ключ не передан или неверен
- Значение error
- Too many requests
- Значение
- Превышен лимит запросов в минуту. Повторите чуть позже
- Значение error
- Add funds first
- Значение
- Заказы доступны после зачисления первого пополнения
- Значение error
- Incorrect service ID
- Значение
- Нет услуги в продаже с таким номером
- Значение error
- Incorrect link
- Значение
- Неверный формат ссылки
- Значение error
- Quantity out of range
- Значение
- Количество вне диапазона минимума и максимума услуги
- Значение error
- Incorrect comments
- Значение
- Строки комментариев пустые или строка длиннее 500 символов
- Значение error
- Not enough funds on balance
- Значение
- Баланс меньше суммы заказа
- Значение error
- Incorrect order ID
- Значение
- Это не номер заказа вашего аккаунта
- Значение error
- Incorrect refill ID
- Значение
- Это не номер рефилла вашего аккаунта
- Значение error
- Incorrect action
- Значение
- Значение action не входит в 6 допустимых
На запрос рефилла могут прийти Refill is not available for this service (у услуги нет периода рефилла), Order is not finished yet (заказ еще не завершен), Refill period has ended (период рефилла истек), Refill already requested, try again later (уже идет рефилл или с последнего запроса не прошло 24 часа).
Сколько запросов к API можно отправлять?
На один ключ до 300 запросов в минуту. Если проверять статусы группами по 100 через orders, а список услуг запрашивать только при необходимости, лимита хватает с запасом. Например, если в процессе 1,000 заказов, все их можно проверить 10 запросами раз в минуту.
Как реселлеру определить цену продажи?
rate из API это цена 1PANEL PLUS за 1,000, а цену продажи в своей панели реселлер устанавливает сам. Например, если к услуге с rate $2.00 добавить 25%, получится $2.50 за 1,000, и если клиент закажет 4,000, сумма продажи будет $10.00, а с баланса 1PANEL PLUS спишется $8.00. Эти цены приведены для примера расчета.
В каком порядке подключать API?
- Пополните баланс и создайте API ключ в кабинете
- Проверьте ключ и подключение запросом balance
- Получите список услуг через services и разместите их в своей панели
- Отправьте один add с минимальным количеством и получите номер заказа
- Убедитесь через status, что статус меняется, и включите автоматические заказы
Примеры на curl, PHP, Python и Node.js и описание всех полей есть в документации API, а другие вопросы смотрите в разделе API на странице Частые вопросы.