Заказы
Оформление заказа
Создаёт заказ и списывает средства за один шаг. Ответ приходит сразу: заказ в статусе «Ожидание» и его можно бесплатно отменить в течение первых 15 с. Передавайте собственный request_id, чтобы повторная отправка никогда не создала второй заказ.
https://notpanel.com/api/v3action=add- Требуется API-ключ
- Превышен лимит запросов
- Тело:
application/x-www-form-urlencoded
Параметры
Передаётся всегда
keystringОбязательный- Ваш API-ключ.
actionstringОбязательныйaddДолжно быть буквальной строкой «add».
Заказ
serviceintegerОбязательный- Идентификатор услуги из списка услуг.
linkstringОбязательный- Ссылка, на которую выполнять заказ. Что считается допустимым, зависит от услуги.
quantityintegerЗависит от типа услуги- Общее количество. С
runsиintervalэто количество на один запуск. Списки и точные реакции считают собственное количество, а у пакетов оно фиксированное.
Повторы
request_idstringНеобязательно- Ваш собственный идентификатор этого заказа, до 128 символов. Повтор с теми же параметрами возвращает исходный заказ. Использование с другими параметрами возвращает
REQUEST_ID_CONFLICT. idempotency_keystringНеобязательно- Псевдоним
request_id. Если переданы оба, приоритет уrequest_id.
Постепенная подача
runsintegerНеобязательно- Классическая постепенная подача: число запусков, от 2 до 100.
runs=1— обычный заказ. intervalintegerНеобязательно- Классическая постепенная подача: минуты между запусками, от 1 до 1440.
drip_feed_total_minutesintegerНеобязательно- Простая постепенная подача: выполнить всё
quantityза это число минут, от 1 до 2880. Не сочетайте сrunsиinterval.
Поля услуги
reactionsstringНеобязательно- Реакции Telegram, например
👍,❤️,🔥или👍:60,❤️:40. comments, usernames, answer_number, …Зависит от типа услуги- Другие дополнительные поля по их именам в запросе, например
comments,usernamesилиanswer_number. В спискеfieldsуслуги указано, какие она принимает.
curl -X POST https://notpanel.com/api/v3 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "key=YOUR_API_KEY&action=add&service=7&link=https://instagram.com/example&quantity=1000&request_id=550e8400-e29b-41d4-a716-446655440000"const res = await fetch("https://notpanel.com/api/v3", {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({
key: "YOUR_API_KEY",
action: "add",
service: "7",
link: "https://instagram.com/example",
quantity: "1000",
request_id: "550e8400-e29b-41d4-a716-446655440000",
}),
});
const data = await res.json();
console.log(data);import requests
res = requests.post(
"https://notpanel.com/api/v3",
data={
"key": "YOUR_API_KEY",
"action": "add",
"service": "7",
"link": "https://instagram.com/example",
"quantity": "1000",
"request_id": "550e8400-e29b-41d4-a716-446655440000",
},
)
print(res.json())<?php
$body = http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'add',
'service' => '7',
'link' => 'https://instagram.com/example',
'quantity' => '1000',
'request_id' => '550e8400-e29b-41d4-a716-446655440000',
]);
$response = file_get_contents('https://notpanel.com/api/v3', false, stream_context_create([
'http' => [
'method' => 'POST',
'header' => "Content-Type: application/x-www-form-urlencoded\r\n",
'content' => $body,
'ignore_errors' => true,
],
]));
print_r(json_decode($response, true));
Замените YOUR_API_KEY ключом со страницы API.
{
"order": 1234567,
"status": "Pending",
"status_key": "pending",
"charge": "1.20",
"currency": "USD",
"instant_cancel_until": "2026-10-03T10:00:15Z",
"cancel_available": true,
"cancel_window_seconds": 15,
"cancel_before": "2026-10-03T10:00:15Z"
}Ошибки
- 400
{"error":"Minimum quantity is 100","error_code":"MINIMUM_QUANTITY","retryable":false,"details":{"n":100}}Количество меньше минимума услуги. Та же структура описывает максимум, шаг и другие проверки.
- 402
{"error":"Insufficient balance","error_code":"INSUFFICIENT_BALANCE","retryable":false}Средств в кошельке не хватает на списание. Ничего не списано, заказа нет. Пополните баланс в
/dashboard/wallet. - 409
{"error":"request_id was already used with different parameters","error_code":"REQUEST_ID_CONFLICT","retryable":false}Этот
request_idуже создал заказ с другими параметрами. Используйте новыйrequest_idдля другого заказа.
Ответ
Каждый успешный add сразу возвращает новый заказ. Внутренние сведения об исполнении не показываются; последующие изменения видны в status и в вебхуках.
Поля ответа
orderinteger- Номер заказа. Это тот же номер в панели, в поддержке и во всех остальных действиях.
statusstring- Для нового заказа
Pending. Повторныйrequest_idвозвращает текущий статус заказа. status_keystring- Для нового заказа
pending, иначе ключ текущего статуса. chargestring- Сколько с вас списано, в USD, в виде строки.
currencystring- Всегда
USD. instant_cancel_untilstring (UTC time)- Конец окна бесплатной отмены: 15 с после оформления.
cancel_availablebooleantrue, пока заказ ещё можно отменить с полным возвратом. Оставлено для прежних скриптов.cancel_window_secondsinteger- Длина окна бесплатной отмены в секундах: 15. Оставлено для прежних скриптов.
cancel_beforestring (UTC time)- То же время, что и
instant_cancel_until. Оставлено для прежних скриптов. replayedboolean- Присутствует и равен true только когда это исходный заказ повторенного
request_id.
Повторы и request_id
request_id (или его псевдоним idempotency_key, до 128 символов) проверяется прежде всего остального. Тот же запрос возвращает исходный заказ, и ничего не списывается дважды. Другой запрос с тем же идентификатором возвращает REQUEST_ID_CONFLICT. Если две копии приходят одновременно, одна побеждает, а другая получает тот же заказ.
key=YOUR_API_KEY&action=add&service=7&link=https://instagram.com/example&quantity=1000&request_id=550e8400-e29b-41d4-a716-446655440000{
"order": 1234567,
"status": "In progress",
"status_key": "in_progress",
"charge": "1.20",
"currency": "USD",
"instant_cancel_until": "2026-10-03T10:00:15Z",
"cancel_available": false,
"cancel_window_seconds": 15,
"cancel_before": "2026-10-03T10:00:15Z",
"replayed": true
}key=YOUR_API_KEY&action=add&service=7&link=https://instagram.com/example&quantity=2000&request_id=550e8400-e29b-41d4-a716-446655440000{
"error": "request_id was already used with different parameters",
"error_code": "REQUEST_ID_CONFLICT",
"retryable": false
}После оформления заказа
Заказ в статусе Pending, и вы можете отменить его с полным возвратом в течение первых 15 с. Проблемы, найденные позже, например неверная ссылка или занятая ссылка, приходят как заказ Canceled с reason_code и автоматическим возвратом. Это никогда не ошибки add.
Что проверяется, по порядку
Возвращается первая найденная проблема, и ничего не списывается.
- Услуга существует и принимает заказы:
SERVICE_NOT_FOUND,SERVICE_DISCONTINUED,SERVICE_PAUSED. - Количество в пределах минимума и максимума:
MINIMUM_QUANTITY,MAXIMUM_QUANTITY. - Количество соответствует шагу:
QUANTITY_STEP. - Списки и точные реакции: количество совпадает с числом элементов,
QUANTITY_MISMATCH. - Дополнительные поля предлагаются и корректны:
OPTION_NOT_SUPPORTED,MISSING_PARAMETER,INVALID_OPTION. - Значения постепенной подачи подходят:
DRIP_FEED_NOT_AVAILABLE,DRIP_FEED_CONFLICT,DRIP_FEED_INVALID. - Ссылка подходит услуге:
INVALID_LINK,LINK_BLOCKED. - Один активный заказ на ссылку, если у услуги есть такое правило:
LINK_BUSY. - Баланса хватает на списание:
INSUFFICIENT_BALANCE.
Ошибки add
Все они используют общий формат ошибки. Ветвитесь по error_code; текст сообщения предназначен для людей.
- 400
MISSING_PARAMETER
Missing required parameter: {param}Отсутствует обязательный параметр. details.param называет его. Сначала исправьте запрос.
- 400
INVALID_PARAMETER
Invalid {param}: {rule}У параметра недопустимое значение. details.param и details.rule указывают, у какого и почему. Сначала исправьте запрос.
- 404
SERVICE_NOT_FOUND
Service not foundНет услуги с таким идентификатором, либо она вам недоступна. Сначала исправьте запрос.
- 410
SERVICE_DISCONTINUED
Service has been discontinuedУслуга снята с предложения. Сначала исправьте запрос.
- 409
SERVICE_PAUSED
Service is temporarily unavailableУслуга пока приостановлена. Повторите позже. Повтор может помочь.
- 503
ORDER_PLACEMENT_PAUSED
Ordering is temporarily pausedОформление заказов приостановлено для всех на короткое время. Retry-After указывает, когда повторить. Повтор может помочь.
- 400
MINIMUM_QUANTITY
Minimum quantity is {n}Количество меньше минимума услуги. Сначала исправьте запрос.
- 400
MAXIMUM_QUANTITY
Maximum quantity is {n}Количество больше максимума услуги. Сначала исправьте запрос.
- 400
QUANTITY_STEP
Quantity must be a multiple of {step}Количество не кратно шагу услуги. Сначала исправьте запрос.
- 400
QUANTITY_MISMATCH
quantity must equal the number of items in {param} ({count})Количество не совпадает с числом элементов в списке или в поле реакций. Сначала исправьте запрос.
- 400
MINIMUM_ORDER_AMOUNT
Minimum order amount is ${amount}Сумма заказа меньше минимальной суммы заказа. Сначала исправьте запрос.
- 400
OPTION_NOT_SUPPORTED
This service does not accept {param}Услуга не принимает отправленное вами поле. Сначала исправьте запрос.
- 400
INVALID_OPTION
Invalid {param}: {rule}У дополнительного поля недопустимое значение. details.param и details.rule указывают, у какого и почему. Сначала исправьте запрос.
- 400
DRIP_FEED_NOT_AVAILABLE
Drip-feed is not available for this serviceУ услуги нет постепенной подачи либо нет для этого количества. Сначала исправьте запрос.
- 400
DRIP_FEED_CONFLICT
Send runs and interval, or drip_feed_total_minutes, not bothВ одном запросе переданы обе формы постепенной подачи. Сначала исправьте запрос.
- 400
DRIP_FEED_INVALID
{rule}Значения постепенной подачи не укладываются в ограничения. Сообщение указывает, в какое. Сначала исправьте запрос.
- 400
INVALID_LINK
Link is invalid for this serviceСсылка не подходит для этой услуги. Сначала исправьте запрос.
- 400
LINK_BLOCKED
This link is blocked. Contact support if this is a mistake.Ссылка заблокирована. Обратитесь в поддержку, если считаете, что это ошибка. Сначала исправьте запрос.
- 409
LINK_BUSY
An order for this link is still running. Wait until it finishes.Предыдущий заказ по этой ссылке ещё выполняется. Дождитесь его завершения. Повтор может помочь.
- 402
INSUFFICIENT_BALANCE
Insufficient balanceБаланс кошелька меньше суммы списания. Сначала исправьте запрос.
- 429
ORDER_LIMIT_REACHED
Too many orders. Try again later.Слишком много заказов оформлено или открыто одновременно. Повторите позже. Повтор может помочь.
- 409
SERVICE_CHANGED
Service settings changed while placing the order. Retry.Настройки услуги изменились во время оформления заказа. Отправьте запрос снова. Повтор может помочь.
- 409
REQUEST_ID_CONFLICT
request_id was already used with different parametersЭтот request_id уже создал заказ с другими параметрами. Сначала исправьте запрос.
- 500
INTERNAL_ERROR
Internal server errorСбой с нашей стороны. Повторять add с тем же request_id безопасно. Повтор может помочь.