AltairSMM
USD

Валюта отображения

Войти

Perfect Panel API

Документация API

Публичная документация совместимого с Perfect Panel HTTP API для управления каталогом и заказами.

Войти и создать ключ

Подключение

Адрес API
POST / GET https://altairsmm.com/api/v2
Аутентификация
Параметр key в запросе

Создающие действие запросы отправляйте методом POST. Методы чтения services, status, balance и refill_status можно вызывать POST или GET с параметрами key и action.

Общие параметры

ПолеТипОбязательностьОписаниеВозможные значения / формат
keystringОбязательноAPI-ключ из личного кабинета.—
actionstringОбязательноИмя вызываемого метода.services | add | status | balance | refill | refill_status | cancel

Быстрый старт

Создайте ключ, подставьте его в пример и выполните первый запрос.

  1. 01

    Создайте API-ключ

    Ключ доступен в настройках аккаунта. Сохраните его сразу после создания.

  2. 02

    Скопируйте адрес API

    Все запросы отправляются на этот адрес с параметрами key и action.

  3. 03

    Выполните запрос

    Начните с services, чтобы получить доступные услуги.

Пример запроса

Замените YOUR_API_KEY на созданный API-ключ.

curl -X POST "https://altairsmm.com/api/v2" \
  -d "key=YOUR_API_KEY" \
  -d "action=services"

Методы

В каждом запросе передавайте общие параметры key и action, равный названию метода.

services

Получить доступные услуги.

Параметры

Дополнительные параметры не требуются.

Ответ

JSON
[
  {
    "service": 1002,
    "name": "Telegram Bot Starts — Verified",
    "type": "Default",
    "category": "Telegram",
    "rate": "0.99",
    "min": 100,
    "max": 100000,
    "refill": false,
    "cancel": false,
    "dripfeed": true
  }
]

Поля ответа

ПолеТипОписаниеВозможные значения / формат
serviceintegerЭкспортный ID услуги; передаётся в add.service.—
namestringНазвание услуги.—
typestringТип услуги. Это поле ответа, его не передают в запросах.Default — единственное значение в текущем API
categorystringНазвание платформы или категории.—
ratestringЦена за 1 000 единиц в USD в десятичном формате.—
minintegerМинимальное количество для заказа.—
maxintegerМаксимальный общий объём заказа.—
refillbooleanПоддерживается ли refill.—
cancelbooleanПоддерживается ли отмена заказа.—
dripfeedbooleanМожно ли передать runs и interval при создании заказа.—

add

Создать заказ по экспортному ID услуги.

Параметры

ПолеТипОбязательностьОписаниеВозможные значения / формат
serviceintegerОбязательноЦелочисленный ID услуги из ответа services.—
linkstringОбязательноПубличный URL цели заказа.—
quantityintegerОбязательноЦелое количество. Для drip-feed это объём одной части; общий объём равен quantity × runs.—
runsintegerНеобязательноЧисло частей в drip-feed. Передавайте только вместе с interval и только если у услуги dripfeed: true.2–100
intervalintegerНеобязательноПауза между частями в минутах. Следующая часть создаётся только после completed предыдущей части и этой паузы.1–43200 (минуты)

При drip-feed общий объём должен укладываться в max, а каждая часть — соответствовать min услуги.

Ответ

JSON
{
  "order": 10001
}

Поля ответа

ПолеТипОписаниеВозможные значения / формат
orderintegerПубличный ID созданного заказа; используйте его в методах status, refill и cancel.—

status

Проверить статус одного или нескольких заказов.

Параметры

ПолеТипОбязательностьОписаниеВозможные значения / формат
orderintegerНеобязательноЦелочисленный ID одного заказа. Не передавайте вместе с orders.—
ordersstringНеобязательноНесколько ID заказов через запятую. Возвращает объект со статусом или ошибкой для каждого ID.10001,10002

Для запроса с orders ответ — объект, где ключом служит ID заказа, а значением — эти поля либо { error: string }.

Ответ

JSON
{
  "charge": "0.99",
  "start_count": "0",
  "status": "In progress",
  "remains": "500"
}

Поля ответа

ПолеТипОписаниеВозможные значения / формат
chargestringПолная стоимость заказа в USD в десятичном формате.—
start_countstringСчётчик цели на момент начала выполнения; если неизвестен — "0".—
statusstringТекущий статус заказа. Это поле ответа, его не передают в запросах.Pending | In progress | Completed | Partial | Canceled
remainsstringКоличество, которое ещё осталось выполнить.—

balance

Получить доступный баланс аккаунта.

Параметры

Дополнительные параметры не требуются.

Ответ

JSON
{
  "balance": "100.00",
  "currency": "USD"
}

Поля ответа

ПолеТипОписаниеВозможные значения / формат
balancestringДоступный баланс в десятичном формате.—
currencystringКод валюты баланса.USD

refill

Запросить refill для поддерживаемого заказа.

Параметры

ПолеТипОбязательностьОписаниеВозможные значения / формат
orderintegerОбязательноЦелочисленный ID заказа.—

Ответ

JSON
{
  "refill": 70001
}

Поля ответа

ПолеТипОписаниеВозможные значения / формат
refillintegerПубличный ID созданного refill; используйте его в refill_status.—

refill_status

Проверить статус ранее созданного refill.

Параметры

ПолеТипОбязательностьОписаниеВозможные значения / формат
refillintegerОбязательноЦелочисленный ID refill из ответа метода refill.—

Ответ

JSON
{
  "status": "Completed"
}

Поля ответа

ПолеТипОписаниеВозможные значения / формат
statusstringСтатус refill, возвращаемый поставщиком.Зависит от поставщика; обычно Pending | In progress | Completed

cancel

Отменить заказ, если услуга поддерживает отмену.

Параметры

ПолеТипОбязательностьОписаниеВозможные значения / формат
orderintegerОбязательноЦелочисленный ID заказа.—

Ответ

JSON
{
  "cancel": 1
}

Поля ответа

ПолеТипОписаниеВозможные значения / формат
cancelintegerПодтверждение принятия запроса на отмену.1

Ошибки

Проверяйте тело каждого ответа: формат Perfect Panel возвращает ошибки бизнес-валидации как JSON-объект с полем error.

Аутентификация и параметры

JSON
{"error":"Incorrect API key"}
{"error":"Incorrect service ID"}
{"error":"Incorrect order ID"}

Лимит запросов

При превышении лимита API возвращает HTTP 429 и {"error":"Rate limit exceeded"}.

Проверка нескольких статусов

Для неизвестного ID внутри orders ошибка возвращается только для этого ID; доступные статусы остальных заказов сохраняются в ответе.