Перейти к содержанию
Публичный API

Разработчикам

Публичный API

Читайте свои сайты, отчёты, позиции и ключевые слова через простой API с ключевой аутентификацией. Функция Agency.

Публичный API

Пошаговая настройка описана в руководстве по публичному API.

Публичный API даёт доступ только для чтения к данным, которые RankMeFast уже хранит для вашего аккаунта, сайты, последний отчёт аудита, история позиций и отслеживаемые ключевые слова. Это функция плана Agency (см. Планы, лимиты и кредиты). API никогда не запускает новую работу поставщиков, он лишь читает то, что уже произвели ваши аудиты и проверки позиций.

Запуск анализа Content Intelligence и изменение рекомендаций не входят в /api/v1. Эти операции доступны только внутри продукта после входа и защищены Better Auth. MCP может читать сохранённые анализы, но не предоставляет инструмент для запуска анализа контента или изменения рекомендации.

Аутентификация

Создайте ключ в разделе Аккаунт → API-ключи (/profile?tab=api-keys). Полный ключ показывается только один раз: сразу скопируйте его; после этого виден лишь его префикс. Можно держать до десяти активных ключей и отзывать любой в любой момент. Отозванный ключ перестаёт работать немедленно.

Передавайте ключ как bearer-токен в каждом запросе:

Authorization: Bearer rmf_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Замените https://your-rankme-host в примерах ниже на origin вашего api (значение SERVER_URL вашей установки).

Язык ответа и контракт данных

Выбирайте язык текста через x-lang, затем через Accept-Language; в остальных случаях API использует en. Региональные значения заголовка, например fr-CA, безопасно нормализуются до fr. /api/v1 игнорирует браузерные cookie, язык аккаунта и настройки рабочего пространства. Каждый ответ содержит эффективный язык в Content-Language и дополняет Vary значениями x-lang, Accept-Language, не удаляя существующие.

Локализуются только созданные RankMeFast тексты отчётов, выводов, действий и безопасных ошибок. Имена свойств JSON, статусы HTTP, стабильные коды ошибок, значения перечислений и статусов, идентификаторы, домены, URL, ключевые слова, метки времени, измерения, наблюдения, курсоры и сохранённый текст пользователя или поставщика не меняются. Язык также не влияет на сортировку и формат чисел или дат.

CSV остаётся побайтово одинаковым машинным контрактом для всех языков ответа. Не меняются UTF-8 BOM, имена и порядок столбцов, порядок строк, экранирование RFC-4180, значения, окончания строк, имя файла, заголовки пагинации и поведение курсора. Content-Language описывает выбор ответа, но не переводит и не переименовывает байты CSV.

Конечные точки

Список ваших сайтов

curl -H "Authorization: Bearer rmf_..." \
  https://your-rankme-host/api/v1/sites

Возвращает { "sites": [{ "id", "domain", "url", "createdAt" }] }.

Последний отчёт аудита сайта

curl -H "Authorization: Bearer rmf_..." \
  https://your-rankme-host/api/v1/sites/<siteId>/report/latest

Возвращает самый свежий успешный аудит в виде { "runId", "report" }, те же находки, категории и локализованные тексты, что и в панели. Отвечает 404, если у сайта ещё нет завершённого аудита.

История позиций сайта

curl -H "Authorization: Bearer rmf_..." \
  "https://your-rankme-host/api/v1/sites/<siteId>/rank-history?from=2026-06-01&to=2026-07-01"

Возвращает { "keywords": [{ "id", "phrase", "series": [...] }] }. Каждая точка серии содержит позицию, ранжировавшийся URL и сигналы Google AI Overview (aiOverviewPresent, aiCited, aiCitedUrl). from и to, необязательные даты ISO.

Все отслеживаемые ключевые слова

curl -H "Authorization: Bearer rmf_..." \
  https://your-rankme-host/api/v1/keywords

Возвращает каждое отслеживаемое ключевое слово по всем вашим сайтам с последней позицией, дельтой и полями AI Overview.

CSV-экспорт и сохранённые строки

При включённом PUBLIC_EXPORTS_ENABLED любая списочная точка возвращает CSV по ?format=csv или Accept: text/csv. Файлы имеют стабильные столбцы, UTF-8 BOM, экранирование RFC-4180 и защиту от формул. JSON четырёх исходных маршрутов не меняется. История принимает engine=google|bing|youtube|amazon; без фильтра столбец engine содержит все движки.

CSV истории позиций и ключевых слов сохраняют прежнюю выдачу без пагинации, пока не указан limit или непрозрачный cursor. Страница истории принимает от 1 до 25 групп ключевых слов (не более 730 точек в группе), а страница ключевых слов, от 1 до 1 000 строк. Передавайте значение X-Next-Cursor в следующий запрос и завершайте чтение, когда заголовок отсутствует. JSON игнорирует эти параметры CSV-пагинации и сохраняет исходный контракт ответа.

Добавлены чтения GET /api/v1/serp-features?siteId=<siteId> и GET /api/v1/backlink-rows?siteId=<siteId>. Они принимают limit от 1 до 1 000 и непрозрачный cursor, возвращают только строки аккаунта и метку sourceKind=provider_observation (source_kind в CSV). Если флаг выключен, новые маршруты и CSV отвечают 503, а исходный JSON работает. Настройка коннектора и полей описана в руководстве Looker Studio.

Лимиты запросов

По умолчанию каждый ключ может делать 120 запросов в минуту. Сверх этого API отвечает 429 до сброса окна.

Ошибки

Ошибки имеют форму { "error": { "message": "...", "details": ... } }. Их безопасное сообщение выбирается через x-lang, затем Accept-Language, затем en; статус, поля, стабильные коды и безопасные детали сохраняют машинную совместимость:

  • 401, ключ отсутствует, повреждён, отозван или неизвестен.
  • 402, ваш план не включает API.
  • 404, сайт или отчёт не существует в вашем аккаунте.
  • 429, превышен лимит запросов (тело: { "error": "..." }).

Совместимость

В этом выпуске доступны ровно шесть маршрутов только для чтения:

  • GET /api/v1/sites
  • GET /api/v1/sites/:siteId/report/latest
  • GET /api/v1/sites/:siteId/rank-history
  • GET /api/v1/keywords
  • GET /api/v1/serp-features
  • GET /api/v1/backlink-rows

«Радар бренда», «Аналитика отзывов», «Аналитика ссылок», «Данные о трафике», «Тренды ключевых слов» и датчик SERP не добавляют маршрутов в /api/v1. Пять платных функций остаются в панели с аутентификацией; публичный датчик остаётся в /api/volatility. Смысл существующих полей ответа не меняется. Клиенты должны игнорировать незнакомые дополнительные поля.

<!-- public-api-routes: GET /api/v1/sites; GET /api/v1/sites/:siteId/report/latest; GET /api/v1/sites/:siteId/rank-history; GET /api/v1/keywords; GET /api/v1/serp-features; GET /api/v1/backlink-rows -->

Назад к оглавлению документации