Здесь собраны все методы API SEO Reports. Каждый раздел содержит необходимые права, параметры и примеры. Настройки ключа и общий формат описаны во введении. Чтобы быстро познакомиться с API, выполните первый запрос.
Все методы и OpenAPI
| Метод | Назначение | Право |
|---|---|---|
GET /api/me | Аккаунт и права ключа | Любой действующий ключ |
GET /api/projects | Поиск и список проектов | projects:read |
GET /api/projects/{projectId}/report-options | Шаблоны и настройки генерации | projects:read |
GET /api/projects/{projectId}/reports | История отчётов проекта | reports:read |
POST /api/reports/generate | Генерация или пересчёт отчёта | reports:create |
GET /api/reports/{reportId} | Статус, ссылка и структура отчёта | reports:read |
GET /api/reports/{reportId}/blocks/{blockRef} | Данные и настройки блока | reports:read |
PUT /api/reports/{reportId}/structure | Изменение блоков и комментариев | reports:write |
GET /api/reports/{reportId}/export/{format} | Выгрузка Word или PDF | reports:read |
Вы можете скачать спецификацию OpenAPI в YAML для импорта в Postman или другой API-клиент. В файле описаны методы, параметры и форматы запросов и ответов, поэтому их не придётся добавлять вручную.
В cURL-примерах замените {apiKey} своим ключом и подставьте идентификаторы из ответов API. Пошаговый сценарий — в статье «Первый запрос к API». В примерах ответов используются демонстрационные данные. Реальные значения зависят от проекта.
Аккаунт и права ключа
Метод для проверки настройки авторизации. Он не требует отдельного права доступа (scope) и доступен даже без действующего тарифа.
Ответ содержит владельца user_id и объект token: идентификатор, название, тип, права и срок. Тип personal — персональный ключ, oauth — подключение ассистента. Если expires_at равен null, ключ бессрочный. В остальных случаях поле содержит дату со временем и часовым поясом.
Поиск и список проектов
projects:readМетод для поиска проектов по названию или адресу и получения их списка. Используйте его, чтобы получить project_id нужного проекта для использования в других методах.
| Параметр URL | Тип и значение |
|---|---|
search | Поиск по названию и адресу. Если не указано - будут выгружены все проекты. |
page | Целое число от 1. Значение по умолчанию — 1. |
page_size | От 1 до 100. Значение по умолчанию — 20. |
items содержит проекты текущего владельца ключа. Поле source показывает тип базового источника данных проекта. В кабинете эти же состояния отображаются в колонке «Источник» в списке проектов.
| Значение source | Описание |
|---|---|
yandex_metrika | Яндекс.Метрика. |
google_analytics | Google Analytics. |
vk_communities | Сообщество ВКонтакте. |
unknown | Аккаунт источника отключили в «Аккаунтах». У проекта сохраняется service_id, но тип источника уже нельзя определить. Генерация такого отчёта вернёт 409 source_unavailable. |
null | Проект без привязки к аналитике. |
default_template_id — ID шаблона, выбранного для автогенерации отчётов проекта. При создании отчёта его можно передать в поле template_id. Если шаблон автогенерации не выбран, API возвращает null.
Для следующей страницы увеличьте page, пока page × page_size меньше total. Пустой items — не ошибка. Это значит, что по указанному запросу проектов не найдено.
Шаблоны и настройки генерации
projects:readМетод возвращает доступные шаблоны, шаблон по умолчанию, сведения о предыдущем отчёте и источник наследуемых настроек.
| Поле | Значение |
|---|---|
templates | Доступные template_id и названия. |
default_template_id | ID шаблона автогенерации проекта. Его можно передать как template_id при создании отчёта. Если такой шаблон не выбран, возвращается null. |
previous_report | Предыдущий отчёт и признак наследования, либо null. |
settings_source | last_report, auto_settings или defaults. |
История отчётов проекта
reports:readМетод возвращает отчёты, уже собранные по проекту, — тот же список, что история отчётов в кабинете. Используйте его, чтобы найти готовый отчёт за нужный период без новой генерации.
| Параметр URL | Тип и значение |
|---|---|
page | Целое число от 1. Значение по умолчанию — 1. |
page_size | От 1 до 50. Значение по умолчанию — 20. |
| Поле | Назначение |
|---|---|
report_id | Идентификатор для карточки, данных блоков, правок и выгрузки. |
status | generating, ready или failed. |
created_at | Дата и время генерации. |
auto | true — отчёт собран автогенерацией по расписанию. |
period | Отчётный период from/to. null, если параметры отчёта не удалось прочитать: тогда период есть в карточке отчёта. |
comparison | Период сравнения. Есть только у отчётов со сравнением. |
error_code | Причина ошибки. Есть только при failed. |
preview_url / preview_public | Ссылка просмотра и признак гостевого доступа. |
Отчёты отсортированы от новых к старым по дате генерации. Как и в кабинете, за каждый день в истории остаётся последний ручной и последний автоматический отчёт. Удалённые отчёты в список не попадают. Чтобы найти отчёт за август, выберите строку с нужным period и прочитайте карточку по её report_id. Для следующей страницы увеличьте page, пока page × page_size меньше total.
403 history_forbidden со ссылкой на оплату в details.payment_url, а не пустой список. Последний отчёт проекта доступен на любом тарифе: его report_id есть в поле previous_report настроек генерации.Генерация и пересчёт отчёта
reports:createМетод для создания отчёта за выбранный период или повторной сборки готового отчёта. Чтобы собрать отчёт заново, передайте refresh: true. Генерация выполняется в фоне, её статус проверяется по карточке отчёта.
| Поле JSON | Тип и назначение |
|---|---|
project_id | Обязательная строка, идентификатор проекта. |
period | Обязательный объект с from и to в формате YYYY-MM-DD. Начало не позже конца. |
template_id | Строка, доступный шаблон. Без поля выбирается шаблон автогенерации, затем последнего отчёта. Если их нет, поле обязательно. |
comparison | Необязательный период from/to. Передавайте обе даты. Без поля сравнение отключено. |
refresh | Логическое значение, по умолчанию false. true запрашивает пересборку, даже если результат уже есть. |
make_public | Логическое значение, по умолчанию false. true включает для отчёта гостевой режим (доступ по ссылке). |
Ответ приходит сразу: HTTP 202 при сборке, HTTP 200 при готовом результате. Полученный report_id используйте для чтения карточки (см. ниже). Дождитесь, когда поле status примет значение ready, затем проверьте поле warnings. Ссылка на отчёт возвращается сразу в ответе, но открыть по ней отчёт можно только после завершения его формирования.
report_id и не создаёт вторую задачу.Пока структуру не правили, пересчёт может обновить тот же отчёт и сохранить ссылку. После правки структура входит в наследуемые параметры: запрос с теми же шаблоном и периодом может создать новый report_id, сохранив прежний отчёт по старой ссылке. Отдельного метода пересчёта правленого отчёта по report_id нет.
make_public: false не закрывает уже публичный отчёт. Флаг true открывает доступ, а обратное закрытие этим запросом не предусмотрено. Не включайте публичность автоматически. Проверяйте preview_public в ответе.Карточка отчёта и готовность
reports:readМетод нужен и для опроса готовности, и для чтения текущей структуры и версии.
Это сокращённый пример с двумя блоками. В реальном отчёте блоков может быть больше. После сохранения структуры и повторной сборки значение revision растёт.
| Поле | Назначение |
|---|---|
status | generating, ready или failed. |
poll_after_ms | Пауза перед повторным чтением при generating. |
error_code | Причина при failed. |
preview_url / preview_public | Ссылка просмотра и признак гостевого доступа. |
warnings | Предупреждения о полноте данных и выбранных настройках. |
blocks | Порядок и настройки блоков. Доступны у собранного отчёта. При generating отсутствуют. |
При failed не считайте HTTP 200 успешной сборкой. При ready проверяйте предупреждения: их значения описаны в диагностике. Поле blocks описывает структуру отчёта. Чтобы получить цифры, используйте отдельный метод блока.
Данные и схема настроек блока
reports:readМетод для получения данных отдельного блока отчёта и описания его настроек. Возвращает показатели блока для анализа, а также доступные параметры и допустимые значения для изменения настроек.
Для запроса используйте blockRef из blocks[].block_ref в карточке отчёта. Отчёт должен быть готов (status: ready).
Формат ответа ниже условный: имена провайдеров, содержимое data и список settings_schema зависят от конкретного блока. Настоящие имена настроек берите только из ответа своего отчёта.
В data находятся данные провайдеров без служебных объектов. В settings_schema для каждого поля есть name, type и label, текущее value, а при необходимости options или min/max/step. Типы: enum, boolean, number, string. Проверяйте допустимые значения перед изменением settings.
Комментарии и структура отчёта
reports:write, а для предварительного чтения — также reports:readМетод для изменения структуры и оформления отчёта: порядка блоков, их видимости, заголовков, комментариев и настроек. Также позволяет добавлять и удалять текстовые блоки.
| Поле | Назначение |
|---|---|
expected_revision | Обязательное целое значение revision из прочитанной карточки. |
blocks | Обязательный непустой массив всех сохраняемых блоков в новом порядке. |
block_ref | Идентификатор существующего блока. Не выдумывайте его. |
disabled | Явно сохраняйте true для скрытых блоков. Отсутствие поля трактуется как false. |
title | Новый заголовок. |
comment_top_html / comment_bottom_html | HTML-комментарий над или под данными. Пустая строка очищает комментарий. |
settings | Патч настроек с именами из settings_schema. |
type: textblock | Новый свободный текстовый блок. Сервер назначает block_ref. |
blocks заменяется целиком. Все обычные блоки, включая скрытые, должны остаться в списке, иначе придёт 422. Чтобы скрыть обычный блок, передайте disabled: true. Отсутствие disabled может включить ранее скрытый блок, поэтому копируйте это поле из карточки явно.Неуказанные заголовки, комментарии и настройки сохраняются, но для disabled действует правило выше. Чтобы удалить текстовый блок, исключите его из списка.
comment_top_html — именно в нём определяется содержимое блока. Если задать comment_bottom_html, API вернёт ошибку 422, так как такого поля нет в текстовых блоках. Новый текстовый блок передаётся без block_ref.Сначала получите актуальную карточку отчёта. В тело запроса скопируйте её revision как expected_revision и полный массив blocks. Затем измените нужные поля, сохранив остальные блоки и их видимость (disabled).
Пример ниже соответствует демонстрационной карточке с двумя блоками выше и добавляет комментарий к publicTraffic. Для своего отчёта используйте его актуальную версию и полный список блоков. Не заменяйте свою структуру сокращённым списком из примера.
Запрос возвращает обновлённую карточку с новым revision. Ссылка просмотра сохраняется. Запрос применяется целиком. При конфликте версии приходит 409 revision_conflict. Перечитайте отчёт и согласуйте изменения, не подставляйте новую версию вслепую.
Как применяются изменения:
- Порядок объектов в
blocksзадаёт порядок в отчёте. - Сервер очищает HTML и не сохраняет скрипты. Используйте простые абзацы, списки, выделения и ссылки.
- Чтобы добавить текстовый блок, включите в полный массив объект с
type: textblock,titleиcomment_top_html. - Правки сохраняются в параметрах отчёта и могут наследоваться при следующей генерации.
Word, PDF и доступ по ссылке
reports:readМетод для выгрузки отчёта в Word или PDF. Отчёт должен быть готов (status: ready). Формат — word или pdf. При успешном запросе приходит файл с заголовком Content-Disposition: attachment. Возьмите имя файла из этого заголовка или задайте его в своём клиенте.
Word имеет MIME-тип application/vnd.openxmlformats-officedocument.wordprocessingml.document, PDF — application/pdf. Учитывайте таймаут своего клиента: экспорт может занять десятки секунд. Обе выгрузки входят в тяжёлый лимит запросов.