Статьи составляют Базу знаний. Создавайте, просматривайте, обновляйте и удаляйте содержимое, которое AI-агент использует для ответов.
Статьи являются основными элементами Базы знаний AI-агента. Каждая статья содержит отдельный фрагмент знаний: справочную страницу, ответ на частый вопрос, описание продукта или любое содержимое, которое AI должен знать.
Есть три типа статей: Статьи (полные документы с заголовком и текстом), Абзацы (короткие самостоятельные текстовые записи) и URL-статьи (создаются автоматически при импорте веб-содержимого). Можно создавать статьи вручную через API, импортировать с сайтов через Импорт внешнего содержимого, загружать через Загрузку файлов или синхронизировать из Intercom.
Повторное обучение не требуется. Каждая созданная, изменённая или удалённая статья автоматически обрабатывается в фоне, а изменения начинают действовать сразу после завершения, обычно за несколько секунд. Отслеживайте это по полю embed_state ниже или pending_embed_count в Получении настроек Базы знаний.
Необязательные проверки примеров
Заголовок раздела «Необязательные проверки примеров»-
Предпросмотр запроса API-действия. Подставьте синтетические примеры значений в заданный шаблон без отправки. Не включайте заголовки с учётными данными.
-
Предпросмотр совпадений JSONPath. Проверьте пути к корню, полям, индексам массивов и подстановочные пути на заданном JSON. Это не запускает действие и не сохраняет память разговора.
Создание статьи
Заголовок раздела «Создание статьи»POST https://app.quickchat.ai/v1/api/knowledge_base/articles/
Тело запроса
| Параметр | Описание |
|---|---|
content строка, обязательный | Содержимое статьи |
type строка | "Article" (по умолчанию) или "Paragraph" |
title строка | Заголовок статьи |
"Article": полный документ Базы знаний с заголовком и содержимым. Для FAQ, справочных статей и описаний продуктов."Paragraph": короткая самостоятельная запись без заголовка. Для кратких фактов, однострочных ответов и справочных данных."URL"(только чтение): создаётся автоматически при импорте содержимого сайта. Содержит извлечённый текст страницы с исходным URL. Нельзя задать при создании.
curl -X POST https://app.quickchat.ai/v1/api/knowledge_base/articles/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "content": "Our return policy allows returns within 30 days.", "title": "Return Policy"}'import requests
response = requests.post( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "content": "Our return policy allows returns within 30 days.", "title": "Return Policy", },)data = response.json()Ответ 201 Created
{ "id": 1234, "article_id": "abc-123", "type": "Article", "title": "Return Policy", "description": "", "content": "Our return policy allows returns within 30 days.", "state": "draft", "deploy_state": "draft", "embed_state": "pending", "refresh_failure_reason": "", "version": null, "max_available_version": null, "url": null, "tags": [], "created_timestamp": "2026-01-15", "last_modified_timestamp": "2026-01-15", "downloaded_timestamp": "2026-01-15", "last_updated_timestamp": "2026-01-15", "last_updated_from_external_source_timestamp": null}| Поле | Описание |
|---|---|
id целое число | Числовой ID статьи. Основной идентификатор во всех URL-путях |
article_id строка | Устаревший строковый идентификатор. Может быть пустым; используйте id |
type строка | "Article", "Paragraph" или "URL" |
title строка | Заголовок статьи |
description строка | Описание статьи |
content строка | Содержимое статьи |
deploy_state строка | "draft" или "published": только метка (см. примечание ниже) |
embed_state строка или null | Доступность статьи: "pending", "embedding", "embedded" или "failed" (см. ниже) |
state строка | Внутренний статус обработки (см. ниже) |
refresh_failure_reason строка | Причина ошибки последнего обновления URL. Пусто, если классифицированная ошибка не сохранена |
version целое число или null | Номер текущей версии |
max_available_version целое число или null | Наибольшая доступная версия |
url строка или null | Исходный URL (для URL-статей) |
tags массив строк | Связанные теги |
created_timestamp строка | Дата создания |
last_modified_timestamp строка | Дата последнего изменения |
downloaded_timestamp строка | Дата загрузки |
last_updated_timestamp строка | Дата последнего обновления |
last_updated_from_external_source_timestamp строка или null | Последнее обновление из внешнего источника |
У статей три поля состояния. Только одно показывает, использует ли AI-агент статью:
embed_state: главное поле."pending"и"embedding"означают, что статья ещё обрабатывается;"embedded"означает, что она доступна и используется агентом;"failed"означает, что обработка не завершилась и статья не используется. Опрашивайте это поле после записи.deploy_state:"draft"или"published". Только организационная метка, которая не влияет на использование статьи AI.state: внутренний статус получения содержимого. Большинство пользователей API могут его игнорировать. Для URL-статьи"refresh_failed"означает, что последнее обновление не заменило сохранённое содержимое.refresh_failure_reason: стабильная категория классифицированной ошибки обновления URL:"http_error","soft_404","off_domain_redirect","auth_wall","error_page","empty_content"или"thin_content". Может быть пустой, если извлечение завершилось ошибкой до классификации страницы. Последнее сохранённое содержимое остаётся доступным, еслиembed_stateтакже не перешло в ошибку.
Список статей
Заголовок раздела «Список статей»GET https://app.quickchat.ai/v1/api/knowledge_base/articles/
Параметры запроса
| Параметр | Описание |
|---|---|
limit целое число | Число элементов на странице |
offset целое число | Число пропускаемых элементов |
types строка | Фильтр по типу: Article, Paragraph, URL |
tags строка | Фильтр по тегу |
url строка | Фильтр по URL |
title строка | Фильтр по заголовку |
query строка | Поиск по содержимому |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/?limit=10&offset=0' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10, "offset": 0},)data = response.json()Ответ 200 OK
{ "items": [ { "id": 1234, "article_id": "abc-123", "type": "Article", "title": "Return Policy", "description": "", "state": "published", "deploy_state": "published", "embed_state": "embedded", "refresh_failure_reason": "", "version": 1, "max_available_version": 1, "url": null, "tags": ["policies"], "created_timestamp": "2026-01-15", "last_modified_timestamp": "2026-01-15", "downloaded_timestamp": "2026-01-15", "last_updated_timestamp": "2026-01-15", "last_updated_from_external_source_timestamp": null } ], "offset": 0, "limit": 10, "count": 1}Ответ со списком не включает поле content. Используйте Получение статьи, чтобы получить полный текст конкретной статьи.
Получение статьи
Заголовок раздела «Получение статьи»GET https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}
curl https://app.quickchat.ai/v1/api/knowledge_base/articles/1234 \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234", headers={"Authorization": "Bearer <API_TOKEN>"},)data = response.json()Ответ 200 OK: возвращает полный объект статьи (схема как в ответе Создания статьи), включая content.
Обновление статьи
Заголовок раздела «Обновление статьи»PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/{article_id}
Тело запроса
| Параметр | Описание |
|---|---|
content строка | Обновлённое содержимое статьи |
title строка | Обновлённый заголовок |
tags массив строк | Обновлённые теги |
save_mode строка | "draft" (по умолчанию) или "publish" |
Параметр save_mode: "draft" лишь задаёт флаг deploy_state и не скрывает содержимое от AI. Черновик обрабатывается и используется точно так же, как опубликованная статья. Не используйте его для подготовки непубличного содержимого: записывайте статью, только когда она готова к использованию.
curl -X PATCH https://app.quickchat.ai/v1/api/knowledge_base/articles/1234 \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "title": "Updated Return Policy", "content": "Returns accepted within 60 days.", "save_mode": "publish"}'import requests
response = requests.patch( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/1234", headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "title": "Updated Return Policy", "content": "Returns accepted within 60 days.", "save_mode": "publish", },)data = response.json()Ответ 200 OK: возвращает обновлённый объект статьи.
Удаление статей
Заголовок раздела «Удаление статей»Удалите одну или несколько статей по ID.
Права: write_allDELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/
Тело запроса: JSON-массив ID статей.
curl -X DELETE https://app.quickchat.ai/v1/api/knowledge_base/articles/ \ -H 'Authorization: Bearer <API_TOKEN>' \ -H 'Content-Type: application/json' \ -d '[1234, 5678]'import requests
response = requests.delete( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/", headers={"Authorization": "Bearer <API_TOKEN>"}, json=[1234, 5678],)Ответ 200 OK
Поиск статей
Заголовок раздела «Поиск статей»Ищите по содержимому статей с помощью текстового сопоставления.
Права: read_allGET https://app.quickchat.ai/v1/api/knowledge_base/articles/search
Параметры запроса
| Параметр | Описание |
|---|---|
query строка, обязательный | Поисковый запрос |
is_case_insensitive логическое значение | Поиск без учёта регистра (по умолчанию: true) |
with_title_url_and_tags логическое значение | Включать заголовок, URL и теги в поиск (по умолчанию: true) |
strict_search логическое значение | Требовать точное совпадение (по умолчанию: false) |
num_of_display_articles целое число | Число отображаемых статей (по умолчанию: 5) |
num_of_data_articles целое число | Число просматриваемых при поиске статей (по умолчанию: 15) |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/search?query=return%20policy' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/search", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"query": "return policy"},)data = response.json()Ответ 200 OK
{ "article_snippets": [ { "article_id": 1234, "expository_sentence": "Our return policy allows returns within 30 days.", "query_words_ids": [ {"start_char": 4, "end_char": 10, "text": "return"} ] } ], "article_snapshots": { "items": [], "offset": 0, "count": 1 }}Список абзацев
Заголовок раздела «Список абзацев»Получите все статьи типа Paragraph. Абзацы являются короткими самостоятельными записями без заголовка, в отличие от полных статей, у которых есть и заголовок, и текст.
Права: read_allGET https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs
Параметры запроса
| Параметр | Описание |
|---|---|
limit целое число | Число элементов на странице |
offset целое число | Число пропускаемых элементов |
query строка | Фильтр по содержимому |
curl 'https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs?limit=10' \ -H 'Authorization: Bearer <API_TOKEN>'import requests
response = requests.get( url="https://app.quickchat.ai/v1/api/knowledge_base/articles/paragraphs", headers={"Authorization": "Bearer <API_TOKEN>"}, params={"limit": 10},)data = response.json()Ответ 200 OK
{ "items": [ { "id": 1, "content": "Our return policy allows returns within 30 days." } ], "offset": 0, "count": 1}