Diil Docs
  1. Документація

Content API Diil: ваш сайт, наш контент

Оновлено:

Ви робите сайт. Команда вашого клієнта редагує тексти, картинки й ціни. Diil Content API стоїть посередині й віддає вашому коду чистий JSON — тож більше ніхто й ніколи не відкриватиме pull request, щоб виправити одруківку в заголовку на першому екрані.

Що таке Diil Content API?

Diil — це візуальний редактор сайтів із вбудованою CRM. Редактори змінюють контент у двох місцях: у CRM або просто на живому сайті в режимі Live — клацнув заголовок, надрукував, зберіг. Content API — це двері лише для читання, крізь які ваш сайт отримує цей контент.

Інакше кажучи, це API headless CMS: ми зберігаємо й віддаємо контент, а ви повністю керуєте фронтендом — стеком, дизайном, хостингом, процесом збірки. Ми ніколи не чіпаємо ваш HTML, а вам ніколи не доведеться писати адмінку.

Як це працює

Уся архітектура вміщається на одну картинку:

Загальна картинаtext
  Редактори                   Diil                              Ваш сайт
  ─────────                   ────                              ────────

  CRM ────────┐
              ├──►  pages → sections → blocks  ──►  Content API  ──►  fetch() ──►  ваші шаблони
  Режим Live ─┘     (кожна правка піднімає           лише читання      x-crm-key     React, Vue, HTML…
  (на вашому сайті)  версію контенту сайту)          JSON через HTTPS
  1. Редактори пишуть. Контент розкладено по сторінках, секціях і блоках, у кожного з яких є короткий маркер на кшталт home, hero чи hero_title. Саме за маркерами ваш код усе знаходить. Докладніше — у розділі «Як влаштований контент».
  2. Ваш сайт читає. Один запит GET із ключем сайту повертає цілу сторінку — кожну секцію, кожен блок, кожен запитаний переклад.
  3. Зміни з’являються самі. Будь-яка правка в CRM піднімає версію контенту сайту, тож уже наступний запит отримає свіжі дані. Відвідувачі можуть побачити їх приблизно за хвилину через кешування в браузері й CDN — див. «Кеш і ETag».

Хочете, щоб редактори клацали просто по ваших справжніх сторінках, а не заповнювали форми? Додайте один тег <script> і кілька атрибутів data-crm-* — це редагування на сайті, і воно працює поверх того самого API.

Що можна збудувати

Якщо щось уміє надіслати HTTP-запит і розібрати JSON, воно може працювати з Diil. Жодного SDK, жодної прив’язки до фреймворку.

  • Next.js, Nuxt, Astro, SvelteKit — запит на сервері, кеш із ревалідацією, і сторінки швидкі, як статика, а контент редагується.
  • Звичайний HTML + JavaScript — лендинг на будь-якому хостингу: один fetch(), і готово.
  • Односторінкові застосунки на React чи Vue — ключ сайту публічний за задумом, тож звертатися до API з браузера — нормально.
  • Мобільні застосунки — тексти онбордингу, промобанери й FAQ, які змінюються без релізу в стор.
  • Багатомовні сайти — кожен текстовий блок приходить як мовна мапа; запитуйте одну мову або кілька в одному запиті.
  • Блоги — статті з обкладинками, авторами, відкладеною публікацією й пагінацією через /v1/blog.

Спробуйте за 10 секунд

Ось один блок — заголовок головної сторінки, — отриманий за маркером. Підставте свій ключ, і все запрацює як є:

curl "https://back.sitecog.com/content/v1/blocks/hero_title?section=hero&lang=en" \
  -H "x-crm-key: pk_3f9c2a7e1b4d4c0e8a6f5b2d9c1e7a40"
200 OKjson
{
  "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" }
}

От і все. Текст приходить як мовна мапа, зображення — як { "file": "https://…" }, посилання — як { url, target, title }; усі форми зібрано на сторінці «Типи блоків».

API з одного погляду

Усі ендпоінти живуть під https://back.sitecog.com/content, усі — GET (і HEAD), усі повертають JSON.

ЕндпоінтЩо ви отримаєте
/v1/langsАктивні мови сайту в порядку, який задали редактори. Ідеально для перемикача мов.
/v1/pagesУсі сторінки без контенту — для меню й мап сайту.
/v1/pages/:markerОдна сторінка з усіма секціями й блоками. Ваша робоча конячка.
/v1/sections/:markerОдна секція з її блоками.
/v1/blocks/:markerРівно один блок: номер телефону, банер, ціна.
/v1/blogОпубліковані статті блогу з пагінацією.
/v1/blog/:slugОдна стаття з HTML-текстом.

Кілька речей, які ми зробили як слід — для вас

  • Один запит на сторінку. Жодного водоспаду запитів — сторінка приходить з усім вмістом.
  • Пошук за маркером, а не за id. Відповіді — це об’єкти з маркерами як ключами, тож page.content.hero просто працює.
  • Публічні ключі лише для читання. Ключ сайту може тільки читати опублікований контент одного сайту, тож у коді для браузера він у безпеці. Див. «Ключі сайту».
  • Чесні мови. Запитуйте потрібні мови через ?lang=en,de. Відсутнього перекладу просто немає — резервну мову обираєте ви (ось як).
  • HTTP-кешування з коробки. Кожна успішна відповідь має ETag, тож If-None-Match дає вам дешевий 304 Not Modified.
  • Щедрі ліміти. 300 запитів на хвилину з одного IP і 600 на ключ — з невеликим кешуванням ви з ними ніколи не зустрінетеся. Подробиці — у розділі «Ліміти запитів».

Куди далі