rest-project REST API: позиции, группы и расход лимитов проекта
Данные одного SEO-проекта для пользователя, вошедшего через user/auth: позиции за период, запуск внеплановой проверки, группы запросов и URL, поисковые системы и графики сводки. Сюда же относится фактический расход лимитов по списку проектов. Методы синхронные, кроме сводки — она считается в фоне, её забирают в два шага.
- Адрес
/api-rest/project/<метод>- Авторизация
- JWT в заголовке
token - Доступ
- свои проекты и проекты с выданным доступом
- Лимиты
- тратит только
positions/schedule
Позиции запросов за период
/api-rest/project/positions/get
Таблица позиций, как на вкладке «Позиции» проекта: запросы с частотой, релевантным URL и позициями в каждой поисковой системе, плюс видимость и апдейты Яндекса за период. Две формы: simple — первая и последняя проверка периода и разница, detail — позиция на каждую дату проверки.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
project_idint обязательныйID проекта из projects/list. -
table_typestringФорма ответа. По умолчанию — как выбрано в настройках проекта владельца. -
limitintЗапросов на странице. -
pageintНомер страницы. -
orderstringПоле сортировки. -
order_typeintНаправление. -
changestringТолько изменившиеся за период. -
position_detailsstringВход в топ или выход из него за период:in_10— вошли в ТОП-10,out_10— вышли; число — граница топа. -
keywordstringТолько запросы, содержащие эту подстроку. -
groupintID группы запросов из keyword-groups/get. -
group_urlintID группы URL из url-groups/get. -
ss_idintОдна поисковая система проекта из search-systems/get. Без него — все. -
topintТолько запросы не ниже этой позиции.101— только вне ТОП-100. -
fromdateНачало периода,ГГГГ-ММ-ДД. Передаётся вместе сto. -
todateКонец периода включительно.
Ответ
-
data.total_countintЗапросов под фильтром. -
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.changemixedПрименённые параметры;from/to— итоговый период. -
data.access_typestringПрава на проект:OWNER,WRITEилиREAD. -
data.data.yandex_updatesarray|falseТолько вdetail: даты периода и был ли в этот день апдейт Яндекса —{date, update}. -
data.data.visibilityobjectВидимость по топу:last— на конец периода,prev— на начало,diff— разница. -
data.data.queries[]arrayЗапросы.Вложенные поля
-
query_id, queryint|stringID и текст запроса. -
group_idintГруппа запроса. -
frequencyintЧастота по типу частоты проекта. -
full_rel_url, full_need_urlstringРелевантный и целевой URL. -
search_engines[]arraysimple: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.
-
Внеплановая проверка позиций
/api-rest/project/positions/schedule
Ставит все запросы проекта в очередь на съём позиций, не дожидаясь расписания. Ход проверки виден в user/state/get — поле positions_yandex проекта. Новая проверка не запускается, пока не закончилась текущая.
Проверка расходует лимиты владельца проекта — столько же, сколько плановый съём. Если их не хватает, придёт ошибка 497 с нужным количеством.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
project_idint обязательныйID проекта из projects/list.
Ответ
Успех — code: 200, текст в message, data пустой.
Группы запросов
/api-rest/project/keyword-groups/get
Группы запросов проекта вместе с общей системной группой «Общая», постранично.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
project_idint обязательныйID проекта из projects/list. -
limitintГрупп на странице. -
pageintНомер страницы.
Ответ
-
data.total_countintВсего групп, вместе с общими. -
data.page, data.limitintСтраница и размер страницы из запроса. -
data.groups[]arrayГруппы по порядку сортировки.Вложенные поля
-
idintID группы. -
namestringНазвание. -
user_id, project_idintВладелец и проект;-1у общих системных групп вроде «Общая». -
group_orderintПорядок сортировки. -
group_typeint1— группа запросов,3— группа URL. -
dt_create, dt_updatedatetimeСоздание и последнее изменение.
-
Группы URL
/api-rest/project/url-groups/get
Группы целевых URL проекта, постранично. Формат ответа — как у keyword-groups/get, group_type — 3.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
project_idint обязательныйID проекта из projects/list. -
limitintГрупп на странице. -
pageintНомер страницы.
Ответ
-
data.total_countintВсего групп, вместе с общими. -
data.page, data.limitintСтраница и размер страницы из запроса. -
data.groups[]arrayГруппы по порядку сортировки.Вложенные поля
-
idintID группы. -
namestringНазвание. -
user_id, project_idintВладелец и проект;-1у общих системных групп вроде «Общая». -
group_orderintПорядок сортировки. -
group_typeint1— группа запросов,3— группа URL. -
dt_create, dt_updatedatetimeСоздание и последнее изменение.
-
Поисковые системы проекта
/api-rest/project/search-systems/get
Поисковые системы и регионы, в которых проект снимает позиции. id отсюда передаётся как ss_id в фильтры позиций и сводки.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
project_idint обязательныйID проекта из projects/list.
Ответ
-
data[].idintID пары «система + регион» — этоss_id. -
data[].namestringПодпись: «Яндекс (Москва)». -
data[].is_priorityint1— приоритетная система проекта. -
data[].regionobjectid(lr) иnameрегиона. -
data[].engineobjectid,nameиaliasпоисковой системы.
Сводка: запуск расчёта
/api-rest/project/positions/summary/set/data
Шаг 1 сводки по позициям — графики видимости, CTR×WS, доли запросов в ТОП-10 и ТОП-3, средней позиции и потенциала. Для каждого типа отвечает, готов ли он; неготовые ставит в фоновый расчёт. Повторяйте вызов раз в секунду-две с теми же фильтрами, пока тип не станет true, затем заберите его через summary/get/content.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
project_idint обязательныйID проекта из projects/list. -
typearray обязательныйКакие графики нужны. Даже один тип передаётся массивом. Неизвестные типы пропускаются. -
keywordstringТолько запросы, содержащие эту подстроку. -
groupintID группы запросов из keyword-groups/get. -
group_urlintID группы URL из url-groups/get. -
ss_idintОдна поисковая система проекта из search-systems/get. Без него — все. -
topintТолько запросы не ниже этой позиции.101— только вне ТОП-100. -
fromdateНачало периода,ГГГГ-ММ-ДД. Передаётся вместе сto. -
todateКонец периода включительно.
Ответ
В data — по ключу на каждый запрошенный тип: true — готов, false — считается.
Сводка: готовый график
/api-rest/project/positions/summary/get/content
Шаг 2: данные одного графика, для которого summary/set/data вернул true. Фильтры должны совпадать с теми, что были на шаге 1, — иначе расчёт для них не найдётся.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
project_idint обязательныйID проекта из projects/list. -
contentstring обязательныйОдин тип графика. -
keywordstringТолько запросы, содержащие эту подстроку. -
groupintID группы запросов из keyword-groups/get. -
group_urlintID группы URL из url-groups/get. -
ss_idintОдна поисковая система проекта из search-systems/get. Без него — все. -
topintТолько запросы не ниже этой позиции.101— только вне ТОП-100. -
fromdateНачало периода,ГГГГ-ММ-ДД. Передаётся вместе сto. -
todateКонец периода включительно.
Ответ
Для графиков по датам — точки {x: дата ДД.ММ.ГГГГ, y: значение}.
Расход лимитов по проектам
/api-rest/project/limits/history
Сколько лимитов фактически ушло на каждый из переданных SEO-проектов за период: проверки позиций, частот, технические проверки — всё, что списывалось по проекту. Прогноз на 30 дней вперёд отдаёт project/limits-forecast.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
projectarray обязательныйID проектов, не больше 100 за запрос. -
dateFromdateНачало периода,ДД.ММ.ГГГГ. По умолчанию — за 7 дней доdateTo. -
dateTodateКонец периода включительно,ДД.ММ.ГГГГ. По умолчанию — сегодня.
Ответ
В data ключ — ID проекта из запроса.
-
data.{id}.namestringДомен проекта. -
data.{id}.pidstringID проекта. -
data.{id}.limitsstring|intПотрачено лимитов за период;0, если расхода не было.
Расход лимитов по GEO-проектам
/api-rest/project/ai/limits/history
То же для GEO-проектов ai.pixeltools.ru — мониторинга видимости в ИИ-ответах. ID здесь — ID GEO-проекта, а не SEO-проекта Пиксель Тулс.
Параметры query и JSON-тело
-
tokenstring обязательный заголовокAccess token из user/auth. -
projectarray обязательныйID GEO-проектов, не больше 100 за запрос. -
dateFromdateНачало периода,ДД.ММ.ГГГГ. По умолчанию — за 7 дней доdateTo. -
dateTodateКонец периода,ДД.ММ.ГГГГ. По умолчанию — сегодня.
Ответ
-
data.{id}.namestringНазвание GEO-проекта;GEO-проект, если расхода за период не было. -
data.{id}.pidstringID GEO-проекта. -
data.{id}.limitsstring|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 передавайте парой.