Разработчикам
Публичный API
Читайте свои сайты, отчёты, позиции и ключевые слова через простой API с ключевой аутентификацией. Функция Agency.
Публичный API
Публичный API даёт доступ только для чтения к данным, которые RankMeFast уже хранит для вашего аккаунта: сайтам, последнему отчёту аудита, истории позиций и отслеживаемым ключевым словам. Это функция плана Agency (см. Планы, лимиты и кредиты). API не запускает новую работу у поставщиков и лишь читает то, что уже произвели ваши аудиты и проверки позиций.
Content Intelligence не входит в /api/v1: запустить анализ или изменить рекомендацию можно только в приложении после входа. 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/sitesGET /api/v1/sites/:siteId/report/latestGET /api/v1/sites/:siteId/rank-historyGET /api/v1/keywordsGET /api/v1/serp-featuresGET /api/v1/backlink-rows
У «Радара бренда», «Аналитики отзывов», «Аналитики ссылок», «Данных о трафике» и «Трендов ключевых слов» нет маршрутов в /api/v1. Они работают в панели после входа. Существующие поля ответа сохраняют смысл; клиентам следует игнорировать новые поля, которые они не знают.