• Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • Markdown
      • Аналитика страниц
    • Фреймы
      • Блоки
      • Бинды data-op-bind
      • Повторитель onpress/repeat
      • Сборка и копии
      • Фреймы в Markdown
      • Фреймы с данными
      • Готовые фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
  • КЕЙСЫ
    • Создание сайтов
    • Работа с контентом
    • Фреймы и данные
    • Настройка сайта
    • Перевод страницы
  • ПРИЛОЖЕНИЯ
    • Приложения
      • Закрытый доступ
      • Данные приложения
      • Внешние данные
      • Демо
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
    • Фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
    • Редиректы
    • Кредиты и автоматизация
    • Входящие
    • Кросспостинг
OnPress OnPress
  • Документация
  • Контакты
Войти
Обзор Справочник API
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
      • Markdown
      • Аналитика страниц
    • Фреймы
      • Блоки
      • Бинды data-op-bind
      • Повторитель onpress/repeat
      • Сборка и копии
      • Фреймы в Markdown
      • Фреймы с данными
      • Готовые фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
  • КЕЙСЫ
    • Создание сайтов
    • Работа с контентом
    • Фреймы и данные
    • Настройка сайта
    • Перевод страницы
  • ПРИЛОЖЕНИЯ
    • Приложения
      • Закрытый доступ
      • Данные приложения
      • Внешние данные
      • Демо
    • Быстрый старт
    • Доступ и токен
  • СУЩНОСТИ
    • Страницы
    • Фреймы
    • Данные
    • Медиа
  • УСТРОЙСТВО САЙТА
    • Сайты
    • Настройки сайта
    • Меню
    • Языки и переводы
    • Стили и оформление
  • УПРАВЛЕНИЕ
    • Домены
    • Соцсети и контакты
    • SEO
    • Аналитика
    • Кэш
    • Дашборд и вход
    • Пользователи и профиль
    • Сайдбар документации
    • Ошибки и проблемы
    • Редиректы
    • Кредиты и автоматизация
    • Входящие
    • Кросспостинг
Сущности
Markdown
Открыть в ИИ
  • Открыть в ChatGPT
  • Открыть в Claude
  • Открыть в Gemini
  • Открыть в Perplexity
  • Открыть в Grok
  • Открыть в DeepSeek

Переводы

Эндпоинты группы переводов страницы — с параметрами, ответами и кодами отказов; как переводить сайт по шагам, написано на странице «Языки и переводы».

info

Во всех примерах API — https://onpress.pro/api/v2, SITE — id сайта (SITE_ID), OP_TOKEN — токен op_XXXX.

Группа переводов — страницы одного содержания на разных языках: из неё строятся hreflang и переключатель языков. Эндпоинты — под $API/site/$SITE/pages/{ref}/translations, {ref} — id, слаг или путь с ~ вместо / (ru~o-nas). На сайте, где не заведено ни одного языка, все четыре отвечают 409 polylang_inactive. Все проверки идут до записи: неудачный запрос не меняет ничего. После изменения группы каждая затронутая страница, в том числе выпавшая из группы, получает событие сохранения — у неё пересобираются hreflang и сбрасывается кэш; их id — в поле content_saved.

GET /pages/{ref}/translations

Возвращает группу переводов страницы и сводку по каждой странице группы. Например, группа английской страницы с русским переводом:

curl -s -H "Authorization: Bearer $OP_TOKEN" "$API/site/$SITE/pages/6428/translations"
{
  "success": true,
  "site_id": "x9HTLHECq",
  "page": { "id": 6428, "lang": "en", "title": "Проба API" },
  "translations": { "en": 6428, "ru": 6431 },
  "pages": {
    "en": { "id": 6428, "title": "Проба API", "status": "publish", "url": "/proba-api/", "link": "https://test.onpress.pro/proba-api/" },
    "ru": { "id": 6431, "title": "Проба API по-русски", "status": "publish", "url": "/ru/proba-api/", "link": "https://test.onpress.pro/ru/proba-api/" }
  },
  "missing_languages": []
}
ПолеСмысл
pageстраница из адреса: id, lang, title
translations{язык: id}; всегда содержит саму страницу под её языком, даже вне группы
pagesпо странице группы: id, title, status, url с префиксом языка, link (null у неопубликованной)
missing_languagesязыки сайта, на которых перевода нет
КодHTTPКогдаЧто делать
polylang_inactive409у сайта нет языковдобавьте язык: PATCH /data/site.languages
page_not_found404страницы нетпроверьте {ref}
ambiguous_page409слаг у нескольких страницназовите страницу id или путём

PUT /pages/{ref}/translations

Кладёт группу целиком: карта и есть группа, кто был в группе и отсутствует в карте — выходит из неё (unlinked). Страница из адреса всегда участник под своим языком, её можно не указывать. Например, связать английскую страницу 6444 с русской:

ПолеТипПо умолчаниюОписание
translationsobject—обязательно; {язык: ссылка}, ссылка — id, слаг или путь; null, "", 0 — «на этом языке страницы нет»
curl -s -X PUT "$API/site/$SITE/pages/6444/translations" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"translations": {"en": 6444, "ru": "/ru/docs-tr-proba/"}}'
{
  "success": true,
  "site_id": "x9HTLHECq",
  "page": { "id": 6444 },
  "translations": { "en": 6444, "ru": 6445 },
  "pages": { "en": { "id": 6444, "…": "…" }, "ru": { "id": 6445, "…": "…" } },
  "changed": true,
  "group": { "term_id": 172, "created": true },
  "unlinked": [],
  "deleted_groups": [],
  "content_saved": [6444, 6445]
}

Повтор той же карты отвечает changed: false и ничего не пишет. group.created — группа заведена этим запросом, deleted_groups — группы, которые опустели от переноса страниц и удалены. Голый слаг в карте ищется среди страниц своего языка. Все отказы translations_rejected собираются за один проход, чтобы карту можно было исправить за один заход.

КодHTTPКогдаЧто делать
bad_translations400translations не объектпришлите {"en": 12, "ru": "/ru/o-nas/"}
translations_rejected409в карте неизвестный язык, несуществующая страница, страница другого языка, одна страница дважды или чужая страница под языком страницы из адреса; rejected: [{lang, ref, reason}]исправьте строки из rejected, ничего не записано
page_in_other_group409страница уже в другой группе; its_group, target_groupвыведите её из группы DELETE /pages/{ref}/translations
page_has_no_language409у страницы из адреса нет языкапроставьте язык: POST /pages/language
polylang_inactive409у сайта нет языковдобавьте язык: PATCH /data/site.languages

POST /pages/{ref}/translations/{lang}

Добавляет один перевод и сохраняет остальных участников группы; прежний перевод этого языка выходит из группы (unlinked). Например, привязать к странице 6444 русскую страницу 6445:

ПолеТипПо умолчаниюОписание
pagenumber, string—обязательно; перевод: id, слаг или путь. Слаг ищется среди страниц языка {lang}
curl -s -X POST "$API/site/$SITE/pages/6444/translations/ru" \
  -H "Authorization: Bearer $OP_TOKEN" -H 'Content-Type: application/json' \
  -d '{"page": 6445}'
{
  "success": true,
  "site_id": "x9HTLHECq",
  "page": { "id": 6444 },
  "linked": { "lang": "ru", "id": 6445 },
  "translations": { "en": 6444, "ru": 6445 },
  "pages": { "en": { "id": 6444, "…": "…" }, "ru": { "id": 6445, "…": "…" } },
  "changed": true,
  "group": { "term_id": 172, "created": false },
  "unlinked": [],
  "deleted_groups": [],
  "content_saved": [6444, 6445]
}
КодHTTPКогдаЧто делать
page_required400нет pageпередайте ссылку на перевод
unknown_language422языка {lang} нет на сайтевозьмите язык из GET /data/site.languages
same_language409{lang} — язык самой страницыназовите язык перевода
page_language_mismatch409перевод на другом языке; actual_langпроставьте ему язык или возьмите другую страницу
page_in_other_group409перевод уже в другой группесначала DELETE /pages/{ref}/translations для него
page_has_no_language409у страницы из адреса нет языкапроставьте язык: POST /pages/language
page_not_found404страницы из адреса или перевода нетпроверьте ссылки
ambiguous_page409слаг у нескольких страницназовите страницу id или путём
polylang_inactive409у сайта нет языковдобавьте язык: PATCH /data/site.languages

DELETE /pages/{ref}/translations

Выводит страницу из группы; страница остаётся опубликованной со своим языком. Группа без страниц удаляется (group_deleted: true), группа из одной страницы остаётся. Например, вывести русскую страницу 6445:

curl -s -X DELETE "$API/site/$SITE/pages/6445/translations" -H "Authorization: Bearer $OP_TOKEN"
{
  "success": true,
  "site_id": "x9HTLHECq",
  "page": { "id": 6445 },
  "was_in": { "ru": 6445, "en": 6444 },
  "remaining": { "en": 6444 },
  "unlinked": true,
  "changed": true,
  "group_deleted": false,
  "content_saved": [6445, 6444]
}

Страница вне группы отвечает unlinked: false, changed: false, remaining: {}.

КодHTTPКогдаЧто делать
page_not_found404страницы нетпроверьте {ref}
ambiguous_page409слаг у нескольких страницназовите страницу id или путём
polylang_inactive409у сайта нет языковдобавьте язык: PATCH /data/site.languages

Перевод при публикации

POST /pages/markdown связывает перевод с оригиналом сразу при публикации: со свойством translation_of эндпоинт пишет страницу и ставит ее в группу в одной транзакции. Правила и отказы — в разделе «Опубликовать или обновить» справочника страниц; страница вместе с её данными и меню переводится одним запросом POST /pages/import.

arrow_backНазад
Авторизация
Далееarrow_forward
Данные
На этой странице
  • GET /pages/{ref}/translations
    • PUT /pages/{ref}/translations
      • POST /pages/{ref}/translations/{lang}
        • DELETE /pages/{ref}/translations
          • Перевод при публикации
          1. Главная
          2. Docs
          3. Документация OnPress v2
          4. Справочник API
          5. Переводы
          OnPress
          OnPress
          ИП Зуев И.В. ИНН: 360408359441
          info@onpress.pro
          © 2026
          политика конфиденциальности публичная оферта
          • visa
          • mastercard
          • sber
          • tpay