Diil Docs
  1. Документація
  2. Довідник API

GET /v1/pages — сторінки та їхній вміст

Оновлено:

Сторінки — робоча конячка API. Один запит дає вам цілу сторінку — кожну секцію, кожен блок, кожен переклад — готову до того, щоб вилити її у ваші шаблони. Ні N+1, ні водоспаду запитів, ні «чому hero вантажиться після підвалу».

Є два варіанти:

  • GET /v1/pages — зміст: усі сторінки сайту без контенту. Чудово для меню та sitemap.
  • GET /v1/pages/:marker — одна сторінка з усім вмістом. Саме його ви викликатимете в 95% випадків.

Список усіх сторінок

GET/v1/pages

https://back.sitecog.com/content/v1/pages

Повертає всі сторінки сайту як об’єкт із ключами-маркерами сторінок. Секцій і блоків тут немає — це як табличка з переліком офісів у холі, а не сама будівля.

Параметри запиту

langquerystringнеобовʼязковоЗа замовчуванням: усі активні мови
Які переклади включити в параметри сторінки (title, description, keywords). Один код, список через кому (ru,en) або повторений параметр. Див. Мови.

Приклад

curl https://back.sitecog.com/content/v1/pages \
  -H "x-crm-key: pk_3f9c2a7e1b4d4c0e8a6f5b2d9c1e7a40"
200 OKjson
{
  "home": {
    "id": 26,
    "marker": "home",
    "name": "Home",
    "href": "/",
    "index": 0,
    "params": {
      "title": { "en": "VERTEX Air 3 — wireless earbuds" },
      "description": { "en": "Hybrid noise cancelling, 42 hours of battery." }
    }
  },
  "contacts": {
    "id": 29,
    "marker": "contacts",
    "name": "Contacts",
    "href": "/contacts",
    "index": 3,
    "params": {}
  }
}

Отримати одну сторінку з контентом

GET/v1/pages/:marker

https://back.sitecog.com/content/v1/pages/:marker

Уся сторінка за раз: сама сторінка, її секції в content і блоки кожної секції у власному content секції.

Параметри

markerpathstringобовʼязково
Маркер сторінки, заданий у CRM, наприклад home чи pricing. Латинські літери, цифри та підкреслення, 2–40 символів. Регістр важливий: Home — це не home.
langquerystringнеобовʼязковоЗа замовчуванням: усі активні мови
Обмежити переклади цими мовами. ?lang=en, ?lang=en,de або ?lang=en&lang=de. Кожен код має бути активною мовою сайту, інакше отримаєте 400 unknown_lang.
emptyqueryflagнеобовʼязковоЗа замовчуванням: вимкнено
Повернути сторінку без її content. Є параметр — увімкнено: ?empty, ?empty=1, ?empty=true. Вимкнути можна через 0 чи false. Зручно для SEO-метаданих, коли основний вміст береться деінде.
x-crm-keyheaderstringобовʼязково
Ключ вашого сайту. Можна передати і як ?key=, якщо заголовки недоступні. Див. Ключі сайту.

Приклад запиту

curl "https://back.sitecog.com/content/v1/pages/home?lang=en" \
  -H "x-crm-key: pk_3f9c2a7e1b4d4c0e8a6f5b2d9c1e7a40"

Приклад відповіді

200 OKjson
{
  "id": 26,
  "marker": "home",
  "name": "Home",
  "href": "/",
  "index": 0,
  "params": {
    "title": { "en": "VERTEX Air 3 — wireless earbuds" }
  },
  "content": {
    "hero": {
      "id": 41,
      "marker": "hero",
      "name": "Hero",
      "index": 0,
      "show": true,
      "content": {
        "hero_title": {
          "id": 95,
          "marker": "hero_title",
          "name": "Hero title",
          "type": "text",
          "multilang": true,
          "updatedAt": "2026-09-20T16:33:23.000Z",
          "content": { "en": "Earbuds that mute the city" }
        },
        "hero_image": {
          "id": 96,
          "marker": "hero_image",
          "name": "Hero image",
          "type": "image",
          "multilang": false,
          "updatedAt": "2026-09-18T09:12:40.000Z",
          "content": { "file": "https://cdn.example.com/storage/your-site/hero.jpg" }
        }
      }
    },
    "faq": {
      "id": 44,
      "marker": "faq",
      "name": "FAQ",
      "index": 5,
      "show": false,
      "content": { "…": "…" }
    }
  }
}

Поля відповіді

Три рівні, одна форма на рівень. Бачили одну сторінку — бачили всі.

idnumber
Внутрішній id сторінки. Стабільний, але в коді краще користуватися маркером — id різняться між середовищами.
markerstring
Маркер сторінки — той самий, що ви підставили в URL.
namestring
Людська назва з CRM («Home»). Вона для редакторів, а не для відвідувачів — не виводьте її на сторінці.
hrefstring | null
Шлях, за яким сторінка живе на вашому сайті, якщо редактор його заповнив. null для службових сторінок на кшталт common (шапка й підвал).
indexnumber
Позиція в меню CRM, починаючи з 0. Сортуйте за нею, щоб відтворити порядок, який бачать редактори.
paramsobject
Налаштування сторінки. title, description і keywords — мовні мапи, вони враховують lang; усе інше (теги Open Graph, скрипти) приходить точно так, як збережено.
params →
title{ [lang]: string }
<title> сторінки.
description{ [lang]: string }
Meta description.
keywords{ [lang]: string }
Meta keywords, якщо ними ще хтось користується. Ми не засуджуємо.
content{ [sectionMarker]: Section }
Секції сторінки з ключами-маркерами. Відсутні, якщо передати ?empty.
content →
idnumber
Id секції.
markerstring
Маркер секції, наприклад hero.
namestring
Назва для редакторів.
indexnumber
Порядок на сторінці. Ключі об’єкта зберігають порядок додавання, але сортування за index — чесніший спосіб.
showboolean
Чи хоче редактор, щоб секцію було видно. Приховані секції все одно повертаються — ховати їх має ваш шаблон ({section.show && <Faq />}).
content{ [blockMarker]: Block }
Блоки секції з ключами-маркерами.
content →
idnumber
Id блока.
markerstring
Маркер блока, наприклад hero_title.
namestring
Назва для редакторів.
typestring
Один із text, html, image, video, link, number, color, date, date_range, boolean, object, array. Від нього залежить форма content.
multilangboolean
Для зображень і відео: true, якщо для кожної мови свій файл.
updatedAtstring (ISO 8601)
Коли блок востаннє редагували. Згодиться для позначок «оновлено 2 години тому» і ключів кешу.
contentdepends on type
Саме значення. Мовна мапа для тексту, { file } для одного зображення і так далі — усі форми на сторінці Типи блоків.

Помилки

СтатусТілоЩо сталося
400{"message":"invalid_marker"}У маркері є символи поза A–Z a–z 0–9 _ або в нього неправильна довжина.
400{"message":"unknown_lang", …}Мова з lang не активна на сайті. У тілі є список доступних.
401{"message":"invalid_key"}Ключа немає, він некоректний або відкликаний.
404{"message":"page_not_found"}Сторінки з таким маркером немає. Одруківка? Інший ключ сайту?
429{"message":"rate_limit_exceeded"}Забагато запитів за цю хвилину. Див. Ліміти запитів.

Повний список із рішеннями — на сторінці Помилки.

Поради з передової