Х   Техподдержка
48
REST API для разработчиков и рекламодателей

RubProfit предоставляет публичный REST API для управления рекламными кампаниями (серфинг сайтов, задания с ручной проверкой, просмотры Rutube). API позволяет программно создавать, редактировать, пополнять и удалять кампании, проверять баланс и статусы выполнения.

Базовый URL: https://rubprofit.ru/api/v1/
Формат запроса: JSON (для POST/PATCH) или query-string (для GET).
Формат ответа: JSON в кодировке UTF-8.

Авторизация

Каждый запрос требует API-ключ. Получить и управлять ключами можно в разделе «API ключи» личного кабинета рекламодателя.

Передавайте ключ в HTTP-заголовке Authorization:

Authorization: Bearer YOUR_API_KEY

Альтернативно (например, для быстрого тестирования) допускается параметр ?api_key=YOUR_API_KEY в URL или в теле JSON.

Если для ключа настроен whitelist IP-адресов, запросы с других IP будут отклонены с ошибкой 403.

Формат ошибок

В случае ошибки сервер возвращает соответствующий HTTP-код (401/403/404/422/etc) и тело:

{
  "success": false,
  "error": {
    "code": 102,
    "message": "Неверный API ключ"
  }
}
Диапазон codeЗначение
1xxОшибки авторизации (ключ, IP, блокировка аккаунта)
2xx (200–209)Ошибки маршрутизации
210–299Ошибки бизнес-логики (валидация, недостаток средств, статус кампании)

Доступные методы

Типы кампаний ({type})

typeОписаниеТаблица данных
serfСерфинг сайтовtb_ads_dlink
taskЗадание с ручной проверкойtb_task_w
rutubeПросмотр видео Rutubestill_rutube_ads

GET /account

Информация о владельце ключа и балансах.

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

curl -H "Authorization: Bearer YOUR_API_KEY" \
     https://rubprofit.ru/api/v1/account

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

{
  "success": true,
  "id": 4284275,
  "username": "olegalazz",
  "balance": 0.81,
  "balance_adv": 0.01,
  "currency": "RUB"
}
ПолеТипОписание
idintID пользователя
usernamestringЛогин
balancefloatОсновной счёт (выплаты), руб.
balance_advfloatРекламный счёт, руб.

GET /campaigns/{type}

Список кампаний пользователя выбранного типа.

Query-параметры

ПараметрТипПо умолчаниюОписание
limitint50Размер страницы (1–100)
offsetint0Смещение

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

curl -H "Authorization: Bearer YOUR_API_KEY" \
     "https://rubprofit.ru/api/v1/campaigns/serf?limit=20"

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

{
  "success": true,
  "count": 1,
  "list": [
    {
      "id": 90,
      "type": "serf",
      "status": 1,
      "status_msg": "active",
      "balance": 20.4070,
      "price_r": 0.0210,
      "created_at": 1777804105,
      "title": "Топ Букс SooFastBux.RU",
      "url": "https://soofastbux.ru/?r=dimas25rw",
      "timer": 20,
      "price_u": 0.0210,
      "views": 933,
      "country": ""
    }
  ]
}

Значения status_msg

ЗначениеОписание
draftСоздана, не отправлена на модерацию
moderationНа модерации
activeАктивна, в работе
pausedНа паузе
bannedЗаблокирована администратором

POST /campaigns/{type}

Создание новой кампании. Кампания создаётся в статусе draft и должна быть отправлена на модерацию (POST .../status с status: "moderation").

serf — параметры

ПараметрТипОбяз.Описание
urlstringдаСсылка на сайт (http:// или https://)
titlestringдаНазвание (до 60 символов)
descriptionstringнетОписание (до 60 символов)
timerintнет5, 10, 15, 20 (по умолч.), 25, 30, 35, 40, 45, 50, 55, 60

task — параметры

ПараметрТипОбяз.Описание
titlestringдаЗаголовок задания (до 55 символов)
urlstringдаСсылка задания
descriptionstringдаЧто нужно сделать (до 3000 символов)
report_infostringдаЧто должен прислать исполнитель в отчёте
price_ufloatдаОплата исполнителю (мин. 0.5)
categoryintнетID категории

rutube — параметры

ПараметрТипОбяз.Описание
titlestringдаЗаголовок видео (до 60 символов)
video_idstringдаHash-идентификатор Rutube видео (32-символьный hex)
timerintнет15, 20, 25, 30 (по умолч.), 40, 50, 60, 90, 120, 180, 240, 300 (секунд)

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

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://example.com","title":"My site","timer":20}' \
  https://rubprofit.ru/api/v1/campaigns/serf

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

{
  "success": true,
  "id": 152,
  "type": "serf",
  "campaign": {
    "id": 152,
    "type": "serf",
    "status": 0,
    "status_msg": "draft",
    "balance": 0,
    "price_r": 0.021,
    "title": "My site",
    "url": "https://example.com",
    "timer": 20
  }
}

GET /campaigns/{type}/{id}

Подробная информация о кампании.

curl -H "Authorization: Bearer YOUR_API_KEY" \
     https://rubprofit.ru/api/v1/campaigns/serf/152

PATCH /campaigns/{type}/{id}

Редактирование кампании. Передавайте только те поля, которые хотите изменить.

Доступные для редактирования поля

typeПоля
serftitle, description
tasktitle, description, report_info
rutubetitle
curl -X PATCH \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"New title"}' \
  https://rubprofit.ru/api/v1/campaigns/serf/152

DELETE /campaigns/{type}/{id}

Удаление кампании. Перед удалением кампания должна быть остановлена и иметь нулевой баланс (используйте refund для возврата остатка средств).

POST /campaigns/{type}/{id}/balance

Пополнение баланса кампании с рекламного счёта.

ПараметрТипОбяз.Описание
amountfloatдаСумма в рублях, списываемая с рекламного счёта
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"amount":50}' \
  https://rubprofit.ru/api/v1/campaigns/serf/152/balance
{
  "success": true,
  "balance": 50.00,
  "added":   50.00
}

POST /campaigns/{type}/{id}/status

Управление статусом кампании.

ПараметрТипОбяз.Описание
statusstringдаactive — запустить, paused — приостановить, moderation — отправить на модерацию
curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"paused"}' \
  https://rubprofit.ru/api/v1/campaigns/serf/152/status

POST /campaigns/{type}/{id}/refund

Возврат остатка баланса кампании на рекламный счёт. Кампания должна быть на паузе.

curl -X POST \
  -H "Authorization: Bearer YOUR_API_KEY" \
  https://rubprofit.ru/api/v1/campaigns/serf/152/refund
{
  "success": true,
  "refunded": 25.43
}

Ограничения и нагрузка

Вы полностью отвечаете за действия, совершённые через API. При создании избыточной нагрузки или нецелевом использовании, доступ к API может быть ограничен или заблокирован.

Лимит API-ключей на аккаунт — 10.

Поддержка

Вопросы по работе API — через техподдержку.