REST API · JWT

rest-project REST API: позиции, группы и расход лимитов проекта

Данные одного SEO-проекта для пользователя, вошедшего через user/auth: позиции за период, запуск внеплановой проверки, группы запросов и URL, поисковые системы и графики сводки. Сюда же относится фактический расход лимитов по списку проектов. Методы синхронные, кроме сводки — она считается в фоне, её забирают в два шага.

Адрес
/api-rest/project/<метод>
Авторизация
JWT в заголовке token
Доступ
свои проекты и проекты с выданным доступом
Лимиты
тратит только positions/schedule

Позиции запросов за период

POST /api-rest/project/positions/get

Таблица позиций, как на вкладке «Позиции» проекта: запросы с частотой, релевантным URL и позициями в каждой поисковой системе, плюс видимость и апдейты Яндекса за период. Две формы: simple — первая и последняя проверка периода и разница, detail — позиция на каждую дату проверки.

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

  • token string обязательный заголовок
    Access token из user/auth.
  • project_id int обязательный
    ID проекта из projects/list.
  • table_type string
    Форма ответа. По умолчанию — как выбрано в настройках проекта владельца.
    simple
    две даты и разница
    detail
    позиция на каждую дату
  • limit int
    Запросов на странице.
    По умолчанию 30
  • page int
    Номер страницы.
    По умолчанию 1
  • order string
    Поле сортировки.
    По умолчанию frequency
  • order_type int
    Направление.
    1
    по возрастанию
    2
    по убыванию
    По умолчанию 2
  • change string
    Только изменившиеся за период.
    all
    все
    up
    выросли
    down
    упали
    По умолчанию all
  • position_details string
    Вход в топ или выход из него за период: in_10 — вошли в ТОП-10, out_10 — вышли; число — граница топа.
    По умолчанию all
  • keyword string
    Только запросы, содержащие эту подстроку.
  • group int
    ID группы запросов из keyword-groups/get.
  • group_url int
    ID группы URL из url-groups/get.
  • ss_id int
    Одна поисковая система проекта из search-systems/get. Без него — все.
    По умолчанию all
  • top int
    Только запросы не ниже этой позиции. 101 — только вне ТОП-100.
    По умолчанию 10000
  • from date
    Начало периода, ГГГГ-ММ-ДД. Передаётся вместе с to.
  • to date
    Конец периода включительно.

Ответ

  • data.total_count int
    Запросов под фильтром.
  • data.page, data.limit, data.table_type, data.ss_id, data.from, data.to, data.order, data.order_type, data.group, data.group_url, data.top, data.change mixed
    Применённые параметры; from/to — итоговый период.
  • data.access_type string
    Права на проект: OWNER, WRITE или READ.
  • data.data.yandex_updates array|false
    Только в detail: даты периода и был ли в этот день апдейт Яндекса — {date, update}.
  • data.data.visibility object
    Видимость по топу: last — на конец периода, prev — на начало, diff — разница.
  • data.data.queries[] array
    Запросы.
    Вложенные поля
    • query_id, query int|string
      ID и текст запроса.
    • group_id int
      Группа запроса.
    • frequency int
      Частота по типу частоты проекта.
    • full_rel_url, full_need_url string
      Релевантный и целевой URL.
    • search_engines[] array
      simple: position, delta_position, detail (date1, date2, position1, position2), relevance_url. detail: rel_url и positions_data — positions[] {date, position, delta} и trends. В обеих формах — search_system_id и engine_data в формате search-systems/get.

Внеплановая проверка позиций

POST /api-rest/project/positions/schedule

Ставит все запросы проекта в очередь на съём позиций, не дожидаясь расписания. Ход проверки виден в user/state/get — поле positions_yandex проекта. Новая проверка не запускается, пока не закончилась текущая.

Проверка расходует лимиты владельца проекта — столько же, сколько плановый съём. Если их не хватает, придёт ошибка 497 с нужным количеством.

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

  • token string обязательный заголовок
    Access token из user/auth.
  • project_id int обязательный
    ID проекта из projects/list.

Ответ

Успех — code: 200, текст в message, data пустой.

Группы запросов

POST /api-rest/project/keyword-groups/get

Группы запросов проекта вместе с общей системной группой «Общая», постранично.

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

  • token string обязательный заголовок
    Access token из user/auth.
  • project_id int обязательный
    ID проекта из projects/list.
  • limit int
    Групп на странице.
    По умолчанию 20
  • page int
    Номер страницы.
    По умолчанию 1

Ответ

  • data.total_count int
    Всего групп, вместе с общими.
  • data.page, data.limit int
    Страница и размер страницы из запроса.
  • data.groups[] array
    Группы по порядку сортировки.
    Вложенные поля
    • id int
      ID группы.
    • name string
      Название.
    • user_id, project_id int
      Владелец и проект; -1 у общих системных групп вроде «Общая».
    • group_order int
      Порядок сортировки.
    • group_type int
      1 — группа запросов, 3 — группа URL.
    • dt_create, dt_update datetime
      Создание и последнее изменение.

Группы URL

POST /api-rest/project/url-groups/get

Группы целевых URL проекта, постранично. Формат ответа — как у keyword-groups/get, group_type — 3.

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

  • token string обязательный заголовок
    Access token из user/auth.
  • project_id int обязательный
    ID проекта из projects/list.
  • limit int
    Групп на странице.
    По умолчанию 20
  • page int
    Номер страницы.
    По умолчанию 1

Ответ

  • data.total_count int
    Всего групп, вместе с общими.
  • data.page, data.limit int
    Страница и размер страницы из запроса.
  • data.groups[] array
    Группы по порядку сортировки.
    Вложенные поля
    • id int
      ID группы.
    • name string
      Название.
    • user_id, project_id int
      Владелец и проект; -1 у общих системных групп вроде «Общая».
    • group_order int
      Порядок сортировки.
    • group_type int
      1 — группа запросов, 3 — группа URL.
    • dt_create, dt_update datetime
      Создание и последнее изменение.

Поисковые системы проекта

POST /api-rest/project/search-systems/get

Поисковые системы и регионы, в которых проект снимает позиции. id отсюда передаётся как ss_id в фильтры позиций и сводки.

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

  • token string обязательный заголовок
    Access token из user/auth.
  • project_id int обязательный
    ID проекта из projects/list.

Ответ

  • data[].id int
    ID пары «система + регион» — это ss_id.
  • data[].name string
    Подпись: «Яндекс (Москва)».
  • data[].is_priority int
    1 — приоритетная система проекта.
  • data[].region object
    id (lr) и name региона.
  • data[].engine object
    id, name и alias поисковой системы.

Сводка: запуск расчёта

POST /api-rest/project/positions/summary/set/data

Шаг 1 сводки по позициям — графики видимости, CTR×WS, доли запросов в ТОП-10 и ТОП-3, средней позиции и потенциала. Для каждого типа отвечает, готов ли он; неготовые ставит в фоновый расчёт. Повторяйте вызов раз в секунду-две с теми же фильтрами, пока тип не станет true, затем заберите его через summary/get/content.

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

  • token string обязательный заголовок
    Access token из user/auth.
  • project_id int обязательный
    ID проекта из projects/list.
  • type array обязательный
    Какие графики нужны. Даже один тип передаётся массивом. Неизвестные типы пропускаются.
    visibility
    видимость
    ctrxws
    CTR×WS — оценка трафика
    top
    доля запросов в ТОП-10
    top3
    доля запросов в ТОП-3
    positionavg
    средняя позиция
    potential
    потенциал
  • keyword string
    Только запросы, содержащие эту подстроку.
  • group int
    ID группы запросов из keyword-groups/get.
  • group_url int
    ID группы URL из url-groups/get.
  • ss_id int
    Одна поисковая система проекта из search-systems/get. Без него — все.
    По умолчанию all
  • top int
    Только запросы не ниже этой позиции. 101 — только вне ТОП-100.
    По умолчанию 10000
  • from date
    Начало периода, ГГГГ-ММ-ДД. Передаётся вместе с to.
  • to date
    Конец периода включительно.

Ответ

В data — по ключу на каждый запрошенный тип: true — готов, false — считается.

Сводка: готовый график

POST /api-rest/project/positions/summary/get/content

Шаг 2: данные одного графика, для которого summary/set/data вернул true. Фильтры должны совпадать с теми, что были на шаге 1, — иначе расчёт для них не найдётся.

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

  • token string обязательный заголовок
    Access token из user/auth.
  • project_id int обязательный
    ID проекта из projects/list.
  • content string обязательный
    Один тип графика.
    visibility
    видимость
    ctrxws
    CTR×WS — оценка трафика
    top
    доля запросов в ТОП-10
    top3
    доля запросов в ТОП-3
    positionavg
    средняя позиция
    potential
    потенциал
  • keyword string
    Только запросы, содержащие эту подстроку.
  • group int
    ID группы запросов из keyword-groups/get.
  • group_url int
    ID группы URL из url-groups/get.
  • ss_id int
    Одна поисковая система проекта из search-systems/get. Без него — все.
    По умолчанию all
  • top int
    Только запросы не ниже этой позиции. 101 — только вне ТОП-100.
    По умолчанию 10000
  • from date
    Начало периода, ГГГГ-ММ-ДД. Передаётся вместе с to.
  • to date
    Конец периода включительно.

Ответ

Для графиков по датам — точки {x: дата ДД.ММ.ГГГГ, y: значение}.

Расход лимитов по проектам

POST /api-rest/project/limits/history

Сколько лимитов фактически ушло на каждый из переданных SEO-проектов за период: проверки позиций, частот, технические проверки — всё, что списывалось по проекту. Прогноз на 30 дней вперёд отдаёт project/limits-forecast.

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

  • token string обязательный заголовок
    Access token из user/auth.
  • project array обязательный
    ID проектов, не больше 100 за запрос.
  • dateFrom date
    Начало периода, ДД.ММ.ГГГГ. По умолчанию — за 7 дней до dateTo.
  • dateTo date
    Конец периода включительно, ДД.ММ.ГГГГ. По умолчанию — сегодня.

Ответ

В data ключ — ID проекта из запроса.

  • data.{id}.name string
    Домен проекта.
  • data.{id}.pid string
    ID проекта.
  • data.{id}.limits string|int
    Потрачено лимитов за период; 0, если расхода не было.

Расход лимитов по GEO-проектам

POST /api-rest/project/ai/limits/history

То же для GEO-проектов ai.pixeltools.ru — мониторинга видимости в ИИ-ответах. ID здесь — ID GEO-проекта, а не SEO-проекта Пиксель Тулс.

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

  • token string обязательный заголовок
    Access token из user/auth.
  • project array обязательный
    ID GEO-проектов, не больше 100 за запрос.
  • dateFrom date
    Начало периода, ДД.ММ.ГГГГ. По умолчанию — за 7 дней до dateTo.
  • dateTo date
    Конец периода, ДД.ММ.ГГГГ. По умолчанию — сегодня.

Ответ

  • data.{id}.name string
    Название GEO-проекта; GEO-проект, если расхода за период не было.
  • data.{id}.pid string
    ID GEO-проекта.
  • data.{id}.limits string|int
    Потрачено лимитов за период.

Ошибки

КодСообщениеКогда
404 Invalid project Не передан project_id или проекта нет.
403 Access denied Проект чужой и доступ к нему не выдан.
497 Не достаточно лимитов для проведения проверки. Для запуска необходимо N лимитов. positions/schedule: у владельца проекта не хватает лимитов.
498 Дождитесь окончания проверки проекта … от … positions/schedule: проверка уже идёт.
499 Невозможно поставить проект на проверку. Необходимо добавить ключевые запросы. positions/schedule: в проекте нет запросов. В тексте — HTML-ссылка на страницу запросов.
500 Невозможно поставить проект на проверку positions/schedule: тариф владельца не даёт проверять позиции или проект заблокирован за нарушение правил (тогда текст об этом).
500 Не удалось получить контент summary/get/content: content не из списка.
400 Maximum allowed 100 projects per request! limits/history, ai/limits/history: в project больше 100 ID.
401 Token is not authorized Нет заголовка token или токен недействителен — см. rest-auth.

Чем отличается от API проектов по ключу

Те же данные проекта отдаёт API SEO-проектов с постоянным ключом в параметре token — для своих скриптов он удобнее. REST-методы возвращают данные в формате экранов приложения: позиции сразу с данными поисковых систем, сводку — готовыми точками графиков.

Периоды

positions/get без from/to берёт период по умолчанию из настроек проектов владельца, заканчивающийся сегодня. from и to передавайте парой.

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