REST API · JWT

rest-user REST API: лимиты, состояние аккаунта и тарифы

Методы аккаунта, вошедшего через user/auth: остаток лимитов, какие задачи и проверки сейчас идут, список тарифов с ценами и покупка тарифа с баланса. Все методы синхронные.

Адрес
/api-rest/…
Авторизация
JWT в заголовке token
Списания
user/tariff/buy списывает деньги с баланса

Остаток лимитов

POST /api-rest/user/get-limits

Месячный лимит пользователя: сколько всего, сколько потрачено и сколько осталось. Если тариф не даёт лимитов (базовые ограничения), все три числа — 0.

Параметры query и тело формы

  • token string обязательный заголовок
    Access token из user/auth.

Ответ

  • data.total int
    Лимитов на месяц.
  • data.used int
    Потрачено в этом месяце.
  • data.available string
    Осталось: total − used. Приходит строкой.
  • data.month_total, data.month_limits int
    То же «всего» и «потрачено» за месяц; есть, только если месячный лимит больше нуля.

Состояние аккаунта и идущие задачи

POST /api-rest/user/state/get

Снимок для экрана приложения: задачи инструментов, которые ждут очереди или выполняются, прогресс фоновых процессов по каждому проекту, баланс и тариф. Удобно опрашивать, чтобы показать ход проверки позиций, запущенной через positions/schedule.

Параметры query и тело формы

  • token string обязательный заголовок
    Access token из user/auth.

Ответ

  • data.tools[] array
    Задачи инструментов в очереди или в работе.
    Вложенные поля
    • hid int
      ID задачи в истории инструментов.
    • progress int
      Прогресс, %.
    • tools_id int
      ID инструмента.
  • data.projects object
    Ключ — ID проекта (свои и с выданным доступом). Значение — прогресс процессов: число в процентах или false, если процесс не идёт.
    Вложенные поля
    • positions_yandex int|false
      Проверка позиций.
    • qdata int|false
      Сбор данных по запросам (частоты).
    • pf int|false
      Поведенческие факторы.
    • intopt, extopt int|false
      Внутренняя оптимизация и ссылочная масса.
    • distribution_import, queries_import, queries_import_spreadsheet int|false
      Импорт распределения и запросов.
    • url_group_generation int|false
      Генерация групп URL.
    • todo[] array
      Пересчёт задач TODO: {task_id, progress}. Ключа нет, если пересчёта нет.
  • data.notices array
    Зарезервировано, сейчас всегда пустой.
  • data.user object
    id, email, name, balance (рубли) и tariff: id, name, date_end, price.

Тарифы и цены по периодам

POST /api-rest/tariff/list/get

Публичные тарифы и цены на 10, 30, 90 и 365 дней с учётом скидки за период и личных промо-скидок пользователя — из двух скидок берётся бо́льшая. Отсюда берут tariff_id и period для user/tariff/buy.

Параметры query и тело формы

  • token string обязательный заголовок
    Access token из user/auth.

Ответ

  • data.tariffs[] array
    Строки справочника тарифов, все значения — строки.
    Вложенные поля
    • id, name string
      ID и название тарифа.
    • price string
      Цена за 30 дней, рубли.
    • limits_price string
      Базовая цена докупки лимитов по тарифу, рубли — из неё калькулятор считает стоимость пакета.
    • api_access, api_limit string
      Доступ к API и его лимит.
    • hourly_limits, monthly_limits string
      Лимиты тарифа в час и в месяц.
    • role, support, base, date string
      Служебные поля справочника.
  • data.prices object
    Ключ — период в днях (10, 30, 90, 365).
    Вложенные поля
    • percent int
      Скидка за период, %.
    • period, label int|string
      Период в днях и подпись: «30 дней».
    • tariffs_data object
      Ключ — ID тарифа: full_price без скидки, end_price к оплате, end_price_word — склонение «рубль», benefit — выгода: value, word, percent.

Покупка или продление тарифа

POST /api-rest/user/tariff/buy

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

Метод списывает реальные деньги с баланса. Если денег не хватает, ничего не списывается — придёт ошибка 450; пополнить баланс можно через balance/add.

Параметры query и JSON-тело

  • token string обязательный заголовок
    Access token из user/auth.
  • tariff_id int обязательный
    ID тарифа из tariff/list/get. Должен быть публичным и не ниже текущего.
  • period int
    Период в днях. Любое другое значение молча заменяется на 30.
    10
    10 дней
    30
    30 дней
    90
    90 дней, скидка
    365
    365 дней, скидка
    По умолчанию 30
  • limits int
    Сколько лимитов докупить вместе с тарифом. Без него — только тариф.
    По умолчанию 0

Ответ

В data — сообщения для пользователя о том, что произошло: смена или продление тарифа, списание с баланса.

Ошибки

КодСообщениеКогда
450 not enough balance tariff/buy: на балансе меньше стоимости покупки.
440 unable to lower tariff tariff/buy: тариф ниже текущего, не публичный, или tariff_id не передан.
404 User not found! get-limits: пользователь токена не найден.
401 Token is not authorized Нет заголовка token или токен недействителен — см. rest-auth.

Для user/tariff/buy «ниже» определяется сравнением ID тарифов: тариф с меньшим ID, чем текущий, купить нельзя, даже если он дороже. Администраторам доступны и непубличные тарифы.

Остаток лимитов по ключу API без входа по паролю отдаёт getlimits.

Обратная связь и помощь
Если у вас есть идеи, как улучшить данный инструмент или остались вопросы по работе с ним, напишите в нашу службу поддержки, мы обязательно вам поможем.