Встройте AI-поиск LiKE в ваши приложения, сайт или внутренние системы. Три способа интеграции: REST API, JS-виджет, iframe.
#REST API
Доступность по тарифу. Публичный API и публичный виджет работают только на тарифах, которые их включают (см. Тарифы и оплата). На остальных тарифах создать ключ или публичный виджет нельзя, а уже выпущенные перестают отвечать: запрос по ключу получает
403, кнопка виджета на сайте не появляется. Корпоративный виджет от этого флага не зависит.
#Шаг 1 — Создайте API-ключ
- Интеграции → Public API → «Создать ключ»
- Введите название (например, «Мобильное приложение»)
- Скопируйте ключ — он показывается только один раз
#Шаг 2 — Используйте API
Все запросы авторизуются через заголовок:
X-API-Key: ваш-ключ#Основные endpoints
| Endpoint | Метод | Описание |
|---|---|---|
/api/public/search |
POST | AI-поиск по базе знаний |
/api/public/toc |
GET | Оглавление публичных статей |
/api/public/articles |
GET | Список публичных статей |
/api/public/articles/{id} |
GET | Содержимое статьи |
#Пример: AI-поиск
curl -X POST https://your-account.lynkora.pro/api/public/search \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"q": "Как оформить отпуск?"}'Ответ:
{
"answer": "Для оформления отпуска...",
"sources": [
{"title": "Политика отпусков", "url": "..."}
]
}#Rate limits
Запросы к API ограничены по каждому ключу; при превышении возвращается HTTP 429 с заголовком Retry-After.
#Безопасность
- Храните ключи в переменных окружения, не в коде
- Создавайте отдельный ключ для каждого приложения
- Удаляйте неиспользуемые ключи
- Ограничивайте домены в настройках ключа
#JS-виджет
Плавающая кнопка AI-поиска для встраивания на любой сайт.
#Шаг 1 — Получите код
- Интеграции → Каналы → карточка «JS Widget» → «Управлять виджетами» → «Создать виджет». Укажите «Адрес сайта, где будет стоять виджет»
- Настройте параметры (см. таблицу ниже)
- Скопируйте код
#Шаг 2 — Вставьте на сайт
Вставьте скопированный <script> перед закрывающим тегом </body>:
#Где вставить код в конструкторах сайтов
Код один для всех сайтов — менять его не нужно: виджет находит себя на странице сам, где бы конструктор ни вставил строку. Разница только в том, куда её вставить.
Любой сайт (HTML). Вставьте код перед закрывающим тегом </body> на каждой странице, где нужен поиск, — или в общий шаблон сайта.
WordPress. Установите плагин WPCode (Insert Headers and Footers) → Code Snippets → Header & Footer → вставьте код в поле Footer → Save Changes. На WordPress.com плагины доступны не на всех тарифах.
Tilda. Для всего сайта: Настройки сайта → Ещё → HTML-код для вставки внутрь HEAD → вставьте код → Сохранить → опубликуйте все страницы. Для одной страницы: добавьте блок Другое → T123 (HTML-код) и вставьте код в него.
Wix. В панели управления сайтом откройте Настройки → Собственный код (Custom Code; в зависимости от версии интерфейса — в разделе «Расширенные» или «Разработка и интеграции») → Добавить собственный код → вставьте код → Все страницы → Body — конец → Применить. Не используйте элемент «Встроить HTML» на странице: он открывается во фрейме на другом адресе, и виджет там не заработает. Собственный код в Wix доступен на премиум-тарифе с подключённым доменом.
Webflow. Site settings → Custom code → Footer code → вставьте код → Save → опубликуйте сайт. Код в настройках сайта доступен на платных тарифах сайта.
Squarespace. Откройте Code Injection (в настройках сайта; в зависимости от версии интерфейса — в разделе Developer tools или Website Tools) → вставьте код в поле Footer → Сохранить. Внедрение кода доступно не на всех тарифах.
Shopify. Интернет-магазин → Темы → … → Изменить код → файл layout/theme.liquid → вставьте код перед </body> → Сохранить.
Framer. Site Settings → General → Custom Code → вставьте код в поле End of tag → опубликуйте сайт.
Google Tag Manager. Теги → Создать → Пользовательский HTML → вставьте код → триггер All Pages → Сохранить → Опубликовать контейнер.
Docusaurus. Код задаётся в docusaurus.config.js, тем же ключом:
scripts: [
{
src: 'https://your-account.lynkora.pro/api/public/widget.js',
'data-key': 'wk_live_ВАШ_КЛЮЧ',
async: true,
},
],Адреса сайта. Виджет работает только на адресах из поля Разрешённые домены, и адрес сверяется точно: example.com и www.example.com — два разных адреса, добавьте оба. Если проверяете сайт на адресе предпросмотра конструктора (например, *.tilda.ws, *.wixsite.com, *.webflow.io, *.myshopify.com), добавьте и его.
Кнопка не появилась? Проверьте три вещи: виджет включён; адрес страницы есть в Разрешённых доменах — точно, с www или без; код стоит в настройках сайта или шаблоне, а не в элементе, который конструктор открывает во фрейме.
#Параметры виджета
| Параметр | Значение | Описание |
|---|---|---|
data-key |
wk_live_... |
Обязательный. Ключ виджета (создаётся в Интеграции → Каналы → JS Widget). Без него виджет не запустится |
data-position |
bottom-right / bottom-left / none |
Позиция плавающей кнопки (по умолчанию bottom-right) |
data-theme |
light / dark / auto |
Тема оформления (по умолчанию light; auto — как у сайта) |
data-lang |
ru / en / de / es / fr / it / pt / ko / sr / sr-Cyrl / zh / ar |
Язык по умолчанию. Применяется, только когда язык посетителя неизвестен: выбор посетителя и языки его браузера сильнее. Если не подошёл ни один — английский |
data-hotkey |
k |
Клавиша открытия в сочетании с Cmd/Ctrl (по умолчанию k → Cmd/Ctrl + K) |
data-session-token |
JWT | Опционально. Session-токен для режима per-user identity (см. «Сравнение режимов аутентификации» ниже) |
#Результат
На вашем сайте появится кнопка в углу (цвет — из настроек виджета). Клик → окно чата с полем вопроса → AI-ответ из вашей базы знаний.
#Язык
Посетитель меняет язык кнопкой с глобусом в шапке окна; выбор запоминается в его браузере для этого виджета. Без выбора виджет берёт первый подходящий из языков браузера, затем язык из настроек виджета (data-lang), затем английский. Язык страницы вашего сайта не учитывается. На арабском окно открывается справа налево.
#Привязка к сайту
Виджет работает только на адресах, указанных при создании («Адрес сайта, где будет стоять виджет»); с других сайтов запросы отклоняются. Несколько адресов — через запятую. Без адреса виджет включить нельзя, звёздочка «любой сайт» не принимается. Адрес сравнивается точно: example.com и www.example.com — разные адреса, укажите оба, если сайт открывается по обоим. Для локальной проверки укажите адрес с портом, например http://127.0.0.1:8899.
#Что видит посетитель
- В тексте ответа нет меток источников вида
[2.3]; заголовки и ссылки оформлены. - Под ответом — блок «Источники»: ссылка ведёт на страницу-первоисточник, а если её нет — на статью.
- Ссылка «Открыть полный поиск» есть только у корпоративного виджета.
#Если лимит AI-ответов исчерпан
Публичный виджет на сайте скрывается целиком, пока лимит не вернётся. Корпоративный виджет остаётся на месте, но не принимает вопросы и показывает, когда поиск снова станет доступен.
#iframe
Полноценный интерфейс поиска, встроенный на вашу страницу:
#Код для вставки
/embed — единственный адрес портала, который разрешено открывать в рамке на чужом сайте. Корень портала (https://your-account.lynkora.pro) встроить нельзя: браузер откажет. Ключ рамке не нужен — она работает анонимно и показывает ровно то, что видит анонимный посетитель портала; область берётся из настроек виджета.
#Прямая ссылка
Если iframe не подходит — дайте пользователям прямую ссылку: https://your-account.lynkora.pro
#Демо-режим
Для тестирования без API-ключа доступен демо-endpoint с ограничениями:
| Параметр | Значение |
|---|---|
| Авторизация | Не требуется |
| Ограничения | Действует лимит запросов с одного адреса. При превышении возвращается HTTP 429 с заголовком Retry-After |
| Назначение | Знакомство с API. Для рабочей нагрузки создайте ключ |
Endpoint: POST /api/public/demo/search
#Сравнение режимов аутентификации
Виджет поддерживает два режима аутентификации.
#Mode A — Доверять URL-зоне
Аутентификация на стороне клиента: вы сами отвечаете за то, кто попадает на страницы с виджетом (VPN, SSO, защищённые роуты). Lynkora не знает identity пользователя — только Origin/IP запроса. Виджет видят все, кто открывает страницу с embed-кодом.
- Бэкенд-код: 0 строк
- Время onboarding: ~2 минуты
- Подходит: intranet, internal portal
#Mode B — Session-токен (per-user JWT)
Ваш backend выпускает короткий session-токен на каждого пользователя. Lynkora знает identity, ведёт audit per user, поддерживает revocation и GDPR DSAR.
- Бэкенд-код: ~10 строк (через SDK)
- Время onboarding: 1–2 часа
- Подходит: multi-tenant SaaS, regulated industries
| Mode A — URL-зона | Mode B — Session-токен | |
|---|---|---|
| Identity пользователя | нет (только Origin/IP) | да (per-user JWT) |
| Audit per user | нет | да |
| Revocation / GDPR DSAR | нет | да |
| Бэкенд-код | 0 строк | ~10 строк (SDK) |
| Onboarding | ~2 минуты | 1–2 часа |