API v3 сохраняет знакомый контракт key + action и ответы JSON. Существующий reseller-клиент может напрямую заменить базовый URL; расширенные поля и действия v3 являются необязательными дополнениями.
Бесплатная регистрация через /register — email или Google OAuth. Кредитная карта не требуется для генерации API-ключа, только для пополнения кошелька при размещении реальных заказов.
После входа перейдите в /dashboard/api. Нажмите «Generate key» и скопируйте исходное значение — оно показывается один раз и больше никогда. Если вы его потеряете, отзовите его и создайте новый. Каждый пользователь может иметь до 5 активных ключей.
Все ваши ключи используют общий эффективный лимит запросов в минуту. Успешные расходы за всё время определяют автоматический уровень; также действуют ограничения по IP и действиям — см. Ограничения частоты.
Для совместимости action=services возвращает кэшированный массив активных услуг с тарифом для аккаунта, min, max и флагами возможностей. Используйте action=catalog, если нужны пагинация, поиск, доступность, метаданные платформы и категории или поля актуальности. Замените YOUR_API_KEY на ключ из шага 2.
# 1. List active catalog services
curl -X POST https://notpanel.com/api/v3 \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "key=YOUR_API_KEY&action=services"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: "services",
}),
});
const services = await res.json();
console.log(`Found ${services.length} services`);import requests
res = requests.post(
"https://notpanel.com/api/v3",
data={"key": "YOUR_API_KEY", "action": "services"},
)
services = res.json()
print(f"Found {len(services)} services")<?php
$body = http_build_query([
'key' => 'YOUR_API_KEY',
'action' => 'services',
]);
$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,
],
]));
$services = json_decode($response, true);
echo "Found " . count($services) . " services\n";
Нужны понятные названия для пользователей вашего региона? Добавьте language=ru (или en, es, pt, tr, ar, hi, id, fr, zh) к services или catalog. Названия с использованием отобранной рыночной терминологии адаптированы к реальному языку рынка, бренды остаются узнаваемыми, а ответ сообщает фактический язык. Не передавайте параметр для неизменной старой английской структуры. Администраторы могут проверить или уточнить отдельные названия.
Выберите service, пополните wallet и вызовите action=add с полями типа услуги. Старые клиенты могут отправить знакомый запрос без изменений. Для точных повторов необязательно добавьте уникальный request_id длиной до 128 символов. См. Разместить заказ для полного списка параметров.
Опрашивайте статус для отдельных заказов или партий до 100 ID. Для событийно-ориентированных интеграций зарегистрируйте вебхук для шести поддерживаемых событий: order.completed, order.partial, order.processing, order.in_progress, order.refunded и order.refill_completed. Доставка выполняется по возможности с повторными попытками; важное состояние сверяйте через action=status.
Замените базовый URL и сохраните знакомые вызовы key + action. services, add, status, balance, refill, refill_status и cancel работают напрямую. Подключайте catalog, refund_quote, точные ключи, пакетные операции и подписанные webhooks по необходимости.