← На главную

API v2 — документация

HTTP-API для программного доступа к каталогу и заказам PapaSMM. Формат следует общему стандарту SMM-панелей (perfectpanel / JAP-подобный API v2): те же параметры key и action, что совместимо с большинством готовых скриптов реселлера. Полную совместимость с конкретным сторонним скриптом нужно проверять отдельно.

1. Начало работы

Три шага до первого запроса: получите ключ API в личном кабинете, отправьте запрос на единый адрес /api/v2 с обязательными параметрами key и action, разберите JSON-ответ. Валюта счёта — рубли (RUB).

Базовый URL

https://api.papasmm.com/api/v2

Все методы вызываются относительно базового URL. Этот же адрес сервер отдаёт в поле api_url ответа GET /api/config.

Первый запрос — проверка баланса:

curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=balance

2. Аутентификация

Аутентификация выполняется по персональному ключу API формата bc_live_…. Ключ выдаётся в личном кабинете после регистрации и передаётся в каждом запросе параметром key.

Ключ можно перевыпустить в кабинете (старый при этом перестаёт действовать). Храните ключ в тайне: он даёт полный доступ к заказам и балансу аккаунта.

Где взять ключ:

  1. Зарегистрируйтесь и войдите в личный кабинет.
  2. Откройте раздел с API-ключом — там отображается ключ вида bc_live_xxxxxxxxxxxxxxxxxx.
  3. При необходимости нажмите «Перевыпустить», чтобы заменить ключ.

3. Формат запросов и ответов

Все методы вызываются по одному адресу /api/v2. Запрос можно отправить как GET (параметры в query-строке), так и POST (тело в application/x-www-form-urlencoded или application/json). Обязательные для всех запросов параметры: key (ключ API) и action (имя метода).

Ответ всегда в формате JSON. Успешный ответ содержит поля метода; ошибка возвращается объектом с полем error и текстом причины. Денежные значения — в рублях (валюта счёта RUB), в ответах присутствует поле currency; числовые поля (rate, min, max, charge, start_count, remains) приходят строками. Скидка уровня аккаунта (зависит от суммы заказов за последние 60 дней) применяется автоматически к фактическому списанию при add — одинаково в кабинете и через API; rate в services — базовая цена без скидки.

Интерфейс панели может дополнительно показывать суммы в долларах по текущему курсу — это справочный эквивалент для удобства; расчёты и списания всегда идут в рублях. Курс и округление ориентировочны, API не гарантирует бухгалтерскую точность отображаемого $-эквивалента.

4. Методы

Единый эндпоинт поддерживает действия ниже. Столбец «Статус» показывает реальную готовность метода; экспериментальные и планируемые возможности вынесены в раздел «Ограничения».

Метод (action)НазначениеСтатус
services Список услуг ✅ Работает
add (Default) Создание заказа (обычный) ✅ Работает
add (Drip-feed) Заказ с повторами runs/interval ✅ Работает
add (Custom Comments) Заказ со своими комментариями Планируется
add (Mentions) Заказ с упоминаниями Планируется
status Статус заказа ✅ Работает
status (multiple) Статус нескольких заказов ✅ Работает
balance Баланс ✅ Работает
refill Автодолив ✅ Работает
refill_status Статус долива базово
cancel Отмена заказа ✅ Работает

5. Справочник методов

Полное описание каждого метода: параметры, пример запроса (curl) и фактический формат ответа. Идентификаторы в примерах иллюстративны.

action=services

✅ Работает

Список услуг

Возвращает полный каталог услуг с ценами, минимальным и максимальным объёмом. Цена (rate) указывается за 1000 единиц (кроме штучных услуг, где max = 1). Поля refill и cancel зависят от конкретной услуги (нормализованная модель): refill = true, если услуга с пополнением/гарантией (теги вида [Пополнение/Refill/Guarantee], NO DROP), иначе false; cancel = true, пока заказ можно отменить до старта. Значение min — это минимальный объём с учётом минимальной стоимости заказа minOrderRub (см. /api/config → min_order_rub): если объём поля меньше, он поднимается так, чтобы сумма заказа была не ниже minOrderRub. Услуги с конфликтом данных помечены available: false и отдают сырые min/max — к заказу они не принимаются (ответ Service temporarily unavailable (data conflict)).

Уже работает в панели (по сессии-cookie, без ключа): GET /api/catalog — отдаёт каталог (платформы → услуги) без ключа.

Параметры

ПараметрТипОбяз.Описание
key string да Ключ API.
action string да Значение: services.

Пример запроса (curl)

curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=services

Пример ответа

[
  {
    "service": 1001,
    "name": "Instagram Followers [Refill 30D] [Max: 100K]",
    "type": "Default",
    "category": "Instagram — Followers",
    "rate": "130.5",
    "min": "115",
    "max": "100000",
    "refill": true,
    "cancel": true,
    "dripfeed": true,
    "currency": "RUB",
    "available": true
  },
  {
    "service": 1002,
    "name": "Instagram Likes",
    "type": "Default",
    "category": "Instagram — Likes",
    "rate": "48.0",
    "min": "313",
    "max": "50000",
    "refill": false,
    "cancel": true,
    "dripfeed": true,
    "currency": "RUB",
    "available": true
  },
  {
    "service": 1003,
    "name": "YouTube Views (broken data)",
    "type": "Default",
    "category": "YouTube — Views",
    "rate": "90.0",
    "min": "1000",
    "max": "20",
    "refill": false,
    "cancel": true,
    "dripfeed": true,
    "currency": "RUB",
    "available": false
  }
]

action=add

✅ Работает

Создание заказа

Создаёт заказ на выбранную услугу. Набор параметров зависит от типа заказа. Реализованы типы Default и Drip-feed (параметры runs/interval); типы Custom Comments и Mentions пока не реализованы (см. раздел «Ограничения»). Стоимость сразу списывается с баланса; защиты от двойного заказа (идемпотентности) пока нет — см. «Ограничения».

Уже работает в панели (по сессии-cookie, без ключа): POST /api/order (по сессии) — создаёт заказ; реально принимает drip: {runs, interval} для Drip-feed. Списывает стоимость с внутреннего баланса.

Параметры

ПараметрТипОбяз.Описание
key string да Ключ API.
action string да Значение: add.
service int да ID услуги из метода services.
link string да Публичная ссылка на объект продвижения (http(s)://…).
quantity int да Объём заказа (в пределах min–max услуги).
runs int нет Drip-feed: число повторов (запусков).
interval int нет Drip-feed: интервал между повторами в минутах.
comments string нет Custom Comments: список комментариев, по одному в строке (\n). Планируется.
usernames string нет Mentions: список упоминаемых аккаунтов через запятую. Планируется.

Пример запроса (curl)

# Default
curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=add \
  -d service=1001 \
  -d link=https://instagram.com/example \
  -d quantity=1000

# Drip-feed (повторы) — runs + interval
curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=add -d service=1002 \
  -d link=https://youtube.com/watch?v=xxxx \
  -d quantity=1000 -d runs=10 -d interval=30

# Custom Comments (планируется) — comments, по одному в строке
curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=add -d service=1001 \
  -d link=https://instagram.com/p/xxxx \
  --data-urlencode $'comments=Отличный пост!\nОгонь\nЖду ещё'

# Mentions (планируется) — usernames
curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=add -d service=1001 \
  -d link=https://instagram.com/p/xxxx \
  -d usernames=user_a,user_b,user_c

Пример ответа

# успех — ID созданного заказа
{ "order": 23501 }

# ошибка (недостаточно средств на балансе)
{ "error": "Not enough funds on the balance" }

action=status

✅ Работает

Статус заказа

Возвращает текущее состояние одного заказа: потраченную сумму, стартовый счётчик, остаток и статус. Значения поля status: Pending, In progress, Completed, Partial, Canceled.

Уже работает в панели (по сессии-cookie, без ключа): GET /api/orders/:id (по сессии) — отдаёт статус одного заказа (start_count, delivered, remaining, percent, status).

Параметры

ПараметрТипОбяз.Описание
key string да Ключ API.
action string да Значение: status.
order int да ID заказа, полученный в ответе add.

Пример запроса (curl)

curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=status \
  -d order=23501

Пример ответа

{
  "charge": "15.32",
  "start_count": "1273",
  "status": "Pending",
  "remains": "1000",
  "currency": "RUB"
}

action=status (multiple)

✅ Работает

Статус нескольких заказов

Возвращает состояние нескольких заказов за один запрос. ID заказов перечисляются через запятую в параметре orders. Несуществующий ID возвращается объектом { "error": "Incorrect order ID" } внутри своего ключа.

Уже работает в панели (по сессии-cookie, без ключа): GET /api/orders (по сессии) — отдаёт весь список заказов пользователя (выборки по ID пока нет).

Параметры

ПараметрТипОбяз.Описание
key string да Ключ API.
action string да Значение: status.
orders string да ID заказов через запятую (например 23501,23502).

Пример запроса (curl)

curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=status \
  -d orders=23501,23502

Пример ответа

{
  "23501": { "charge": "15.32", "start_count": "1273", "status": "Completed", "remains": "0", "currency": "RUB" },
  "23502": { "error": "Incorrect order ID" }
}

action=balance

✅ Работает

Баланс

Возвращает текущий баланс аккаунта и валюту.

Уже работает в панели (по сессии-cookie, без ключа): GET /api/me (по сессии) — отдаёт balance_rub и balance_usd.

Параметры

ПараметрТипОбяз.Описание
key string да Ключ API.
action string да Значение: balance.

Пример запроса (curl)

curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=balance

Пример ответа

{
  "balance": "34.68",
  "currency": "RUB"
}

action=refill

✅ Работает

Автодолив (refill)

Запрашивает долив для завершённого или частично выполненного заказа (восполнение отвалившихся показателей). Возвращает идентификатор долива. Важно: сейчас идентификатор долива совпадает с ID заказа — отдельные ID запросов на долив планируются (см. «Ограничения»).

Уже работает в панели (по сессии-cookie, без ключа): POST /api/orders/:id/refill (по сессии) — перезапускает долив для заказа в статусе completed/partial.

Параметры

ПараметрТипОбяз.Описание
key string да Ключ API.
action string да Значение: refill.
order int нет ID одного заказа для долива (или используйте orders).
orders string нет ID нескольких заказов через запятую (вместо order).

Пример запроса (curl)

# один заказ
curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=refill \
  -d order=23501

# несколько заказов
curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=refill \
  -d orders=23501,23502

Пример ответа

# один заказ (order=ID) — идентификатор долива (= ID заказа)
{ "refill": 23501 }

# несколько (orders=ID,ID) — массив по каждому заказу
[
  { "order": "23501", "refill": 23501 },
  { "order": "23502", "error": "Refill is not available for this order" }
]

action=refill_status

базово

Статус долива

Возвращает состояние ранее запрошенного долива. Реализовано базово: отдаётся только Completed либо In progress, по ID (параметр refill или order; сейчас это один и тот же ID заказа).

Параметры

ПараметрТипОбяз.Описание
key string да Ключ API.
action string да Значение: refill_status.
refill int нет ID долива из метода refill (или укажите order).
order int нет ID заказа (альтернатива параметру refill).

Пример запроса (curl)

curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=refill_status \
  -d refill=23501

Пример ответа

{ "status": "Completed" }

# долив ещё выполняется
{ "status": "In progress" }

action=cancel

✅ Работает

Отмена заказа

Отменяет заказ (если он ещё не завершён и не отменён) с возвратом стоимости невыполненной части на баланс. Возвращает массив результатов по каждому ID.

Уже работает в панели (по сессии-cookie, без ключа): POST /api/orders/:id/cancel (по сессии) — отменяет не завершённый заказ и возвращает на баланс стоимость остатка.

Параметры

ПараметрТипОбяз.Описание
key string да Ключ API.
action string да Значение: cancel.
orders string да ID заказов для отмены через запятую (можно один).

Пример запроса (curl)

curl -s "https://api.papasmm.com/api/v2" \
  -d key=bc_live_xxxxxxxxxxxxxxxxxx \
  -d action=cancel \
  -d orders=23501,23502

Пример ответа

[
  { "order": "23501", "cancel": 1 },
  { "order": "23502", "cancel": { "error": "Order can not be canceled" } }
]

6. Ограничения и экспериментальное

Ниже — то, что реализовано частично или пока только планируется. Не используйте эти возможности как готовые.

7. Ошибки

Ошибки возвращаются объектом с полем error и текстом причины. Ниже — фактические тексты ошибок, которые отдаёт API v2.

Текст ошибкиКогда возникает
Incorrect API key Параметр key не передан или ключ недействителен.
Incorrect request Неизвестное значение action или не переданы обязательные параметры метода.
Incorrect service ID Услуга с таким service не найдена (ответ метода add).
Quantity out of range (min N, max M) Параметр quantity вне диапазона min–max услуги (ответ метода add).
Incorrect link Параметр link отсутствует или не является ссылкой http(s)://… (ответ метода add).
Order amount below the minimum (N RUB) Стоимость заказа ниже минимальной суммы заказа (ответ метода add).
Service temporarily unavailable (data conflict) У услуги конфликт данных (например, поле min больше max): такая услуга помечена available: false в services и не принимается к заказу (ответ метода add).
Not enough funds on the balance Недостаточно средств на балансе для создания заказа (ответ метода add).
Incorrect order ID Заказ с таким ID не найден (методы status, refill). В ответе status с несколькими заказами возвращается внутри объекта соответствующего ID.
Refill is not available for this order Долив недоступен: заказ не в статусе Completed/Partial (ответ метода refill).
Incorrect refill ID Долив/заказ с таким ID не найден (ответ метода refill_status).
Order can not be canceled Заказ нельзя отменить (например, уже завершён или отменён). В ответе cancel возвращается в поле cancel соответствующего заказа.
Internal error Внутренняя ошибка сервера при обработке запроса.

8. История изменений

Кратко о версиях публичного API.