Skip to content
Язык: Русский

API для разработчиков

Пошагово: обновление страницы через API

Обновлено 1 ноября 2026 г. 2 мин чтения

От API-ключа до опубликованной версии: добавьте ссылку, поднимите её наверх, измените дизайн, проверьте черновик и опубликуйте — с curl и jq.

В этом примере вы обновляете существующую страницу полностью через API: добавляете ссылку, поднимаете её наверх, меняете стиль кнопок, проверяете черновик и публикуете его. Команды работают в любой оболочке с curl и jq.

1. Создайте API-ключ

  1. Откройте в панели управления «Callback и API»
  2. Нажмите «+ Создать ключ»
  3. Выберите «Запись» и для «Страницы», и для «Ссылки» (это включает доступ на чтение)
  4. Нажмите «Создать ключ» и скопируйте секрет ключа
  5. Скопируйте ID ключа из списка

Сохраните оба значения в переменных окружения, а не в скрипте:

Задать учётные данные
export LH_KEY_ID="6F668EA6598B0692"
export LH_KEY_SECRET="lt_…"
export API="https://dock.at-harbor.com"

2. Получите токен доступа

POST /v1/token
LH_TOKEN=$(curl -sS -X POST "$API/v1/token" \
  -H "Content-Type: application/json" \
  -d "{\"key_id\":\"$LH_KEY_ID\",\"key_secret\":\"$LH_KEY_SECRET\"}" \
  | jq -r .token)

Токен действует 15 минут. Если ваш скрипт работает дольше, получите новый в процессе.

3. Найдите страницу

GET /v1/pages
curl -sS "$API/v1/pages" -H "Authorization: Bearer $LH_TOKEN" \
  | jq '.items[] | {id, handle, title, status, current_version}'

Запомните id страницы. В этом примере это 42:

bash
PAGE_ID=42

4. Добавьте ссылку

POST /v1/pages/{id}/links
LINK_ID=$(curl -sS -X POST "$API/v1/pages/$PAGE_ID/links" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"title":"Осенняя распродажа","target_url_template":"https://shop.example.com/autumn","enabled":true}' \
  | jq -r .id)
echo "New link: $LINK_ID"

API отвечает HTTP 201 и новым ID. Новые ссылки добавляются в конец списка. Если лимит ссылок по вашему тарифу достигнут, вы получите 409 link_limit_reached.

5. Поднимите ссылку наверх

POST /v1/pages/{id}/links/reorder
curl -sS -X POST "$API/v1/pages/$PAGE_ID/links/reorder" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"order\":[$LINK_ID]}"

Достаточно отправить ID, которые должны переместиться в начало. Все остальные ссылки сохраняют свой порядок после них.

6. Измените дизайн в черновике

При PATCH theme_config заменяется полностью. Поэтому сначала прочитайте черновик, измените только нужное значение и отправьте объект обратно целиком:

GET и PATCH /v1/pages/{id}/draft
THEME=$(curl -sS "$API/v1/pages/$PAGE_ID/draft" -H "Authorization: Bearer $LH_TOKEN" \
  | jq -c '(.theme_config // {}) | .button_style = "pill"')

curl -sS -X PATCH "$API/v1/pages/$PAGE_ID/draft" \
  -H "Authorization: Bearer $LH_TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"theme_config\":$THEME}"

button_style принимает rounded, pill и square. Среди других полей theme_config — bg_color, text_color, button_color, button_text_color и background.

7. Проверьте черновик

GET /v1/pages/{id}/draft/validate
curl -sS "$API/v1/pages/$PAGE_ID/draft/validate" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"valid":true,"issues":[]}

Если valid равно false, в issues перечислены проблемы. Исправьте их перед публикацией. Отличается ли черновик от опубликованной версии вообще, показывает поле has_unpublished_changes в GET /v1/pages/$PAGE_ID — если там false, публикацию можно пропустить.

8. Опубликуйте

POST /v1/pages/{id}/publish
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"
# → {"ok":true,"version":8,"checksum":"…"}

Теперь посетители видят новую версию — с новой ссылкой, новым порядком и дизайном. Если у вас есть вебхук для page.published, он сейчас получит доставку. Если черновик нельзя опубликовать, API отвечает 409 draft_not_publishable и списком в details.issues.

9. Отмена

Если результат вам не нравится, верните предыдущую версию в черновик и опубликуйте снова:

Восстановить версию 7
curl -sS -X POST "$API/v1/pages/$PAGE_ID/versions/7/restore" -H "Authorization: Bearer $LH_TOKEN"
curl -sS -X POST "$API/v1/pages/$PAGE_ID/publish" -H "Authorization: Bearer $LH_TOKEN"

Вместо номера версии можно передать current: это отменяет все изменения черновика с последней публикации. Восстановление возвращает дизайн, шаблон, собственный CSS, SEO, блоки и ссылки; заголовок, хэндл и видимость не версионируются.

Частые ошибки

400 bad_request
Нет заголовка Content-Type: application/json. Без него curl -d отправляет другой тип.
401 invalid_token
Токен истёк через 15 минут. Получите новый.
403 insufficient_scope
У ключа нет нужной области доступа, например «Запись» для ссылок.
Дизайн внезапно сбросился
theme_config был отправлен только с одним полем и заменил всю тему. Отправьте полную тему снова или используйте restore с current, чтобы отменить все изменения черновика с последней публикации.

Все коды объяснены в статье Формат ошибок и коды ошибок, а все эндпоинты перечислены в статье Эндпоинты по разделам.

Ничего не нашли?

Напишите, что вам нужно, и наша служба поддержки поможет вам лично.

Написать в поддержку