Ви робите сайт. Команда вашого клієнта редагує тексти, картинки й ціни. Diil Content API стоїть посередині й віддає вашому коду чистий JSON — тож більше ніхто й ніколи не відкриватиме pull request, щоб виправити одруківку в заголовку на першому екрані.
Що таке Diil Content API?
Diil — це візуальний редактор сайтів із вбудованою CRM. Редактори змінюють контент у двох місцях: у CRM або просто на живому сайті в режимі Live — клацнув заголовок, надрукував, зберіг. Content API — це двері лише для читання, крізь які ваш сайт отримує цей контент.
Інакше кажучи, це API headless CMS: ми зберігаємо й віддаємо контент, а ви повністю керуєте фронтендом — стеком, дизайном, хостингом, процесом збірки. Ми ніколи не чіпаємо ваш HTML, а вам ніколи не доведеться писати адмінку.
Як це працює
Уся архітектура вміщається на одну картинку:
Редактори Diil Ваш сайт
───────── ──── ────────
CRM ────────┐
├──► pages → sections → blocks ──► Content API ──► fetch() ──► ваші шаблони
Режим Live ─┘ (кожна правка піднімає лише читання x-crm-key React, Vue, HTML…
(на вашому сайті) версію контенту сайту) JSON через HTTPS- Редактори пишуть. Контент розкладено по сторінках, секціях і блоках, у кожного з яких є короткий маркер на кшталт
home,heroчиhero_title. Саме за маркерами ваш код усе знаходить. Докладніше — у розділі «Як влаштований контент». - Ваш сайт читає. Один запит
GETіз ключем сайту повертає цілу сторінку — кожну секцію, кожен блок, кожен запитаний переклад. - Зміни з’являються самі. Будь-яка правка в 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"const res = await fetch('https://back.sitecog.com/content/v1/blocks/hero_title?section=hero&lang=en', {
headers: { 'x-crm-key': 'pk_3f9c2a7e1b4d4c0e8a6f5b2d9c1e7a40' },
});
const block = await res.json();
console.log(block.content.en); // "Earbuds that mute the city"{
"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 на ключ — з невеликим кешуванням ви з ними ніколи не зустрінетеся. Подробиці — у розділі «Ліміти запитів».