Skip to Content
Документация APIЦентр помощи

Центр помощи

Управление статьями центра помощи проекта и их категориями. Требуется, чтобы центр помощи был включён для проекта — если он выключен, все эндпоинты ниже возвращают 404.

Текст статей — это Markdown, а не HTML. Портал отображает его через просмотрщик, который никогда не выполняет сырой HTML, поэтому любой отправленный HTML читатели увидят как обычный текст.

GET/v1/articles

ParameterTypeDescription
statusstringФильтр по статусу: draft, published или archived.
category_idstringТолько статьи этой категории.
limitintegerРазмер страницы. По умолчанию 25, максимум 100.
offsetintegerСколько элементов пропустить. По умолчанию 0.

GET/v1/articles/search

ParameterTypeDescription
qrequiredstringПоисковый запрос. Поддерживает фразы в кавычках, OR и -отрицание.
limitintegerКоличество результатов. По умолчанию 25, максимум 100.

GET/v1/articles/:id

POST/v1/articles

ParameterTypeDescription
titlerequiredstringДо 200 символов.
bodystringMarkdown. До 50 000 символов.
excerptstringКраткое описание в одну строку, до 300 символов. Если не указано — берётся из текста.
slugstringСегмент URL, до 80 символов. Если не указан — строится из заголовка.
category_idstringКатегория, в которую поместить статью.

PATCH/v1/articles/:id

ParameterTypeDescription
titlestringНовый заголовок.
bodystringНовый текст в Markdown.
excerptstringНовое описание; null очищает его.
slugstringНовый сегмент URL.
category_idstringНовая категория; null убирает категорию.
statusstringdraft, published или archived.

DELETE/v1/articles/:id

Статьи всегда создаются как черновики — публикация выполняется отдельным PATCH, чтобы ничего не попало на портал случайно. Создание статьи требует доступа на запись платного плана, как и любой другой изменяющий метод здесь.

Список статей

curl "https://api.supdesk.app/v1/articles?status=published&limit=10" \ -H "Authorization: Bearer sd_live_..."
{ "data": [ { "id": "8f7a...", "title": "Как сбросить пароль?", "slug": "kak-sbrosit-parol", "body": "Откройте **Настройки** и выберите *Сбросить пароль*.", "excerpt": "Откройте Настройки и выберите Сбросить пароль.", "status": "published", "category_id": "3c2b...", "published_at": "2026-07-01T09:12:00Z", "helpful_count": 12, "not_helpful_count": 1, "created_at": "2026-06-28T14:03:00Z", "updated_at": "2026-07-01T09:12:00Z" } ], "pagination": { "limit": 10, "offset": 0, "has_more": false } }

Без фильтра возвращаются также черновики и архивные статьи, сначала недавно изменённые. Укажите status=published, чтобы получить то, что действительно видят клиенты.

Поиск по статьям

curl "https://api.supdesk.app/v1/articles/search?q=сбросить+пароль&limit=5" \ -H "Authorization: Bearer sd_live_..."
{ "data": [ { "id": "8f7a...", "title": "Как сбросить пароль?", "slug": "kak-sbrosit-parol", "category_slug": "nachalo-raboty", "category_name": "Начало работы", "snippet": "Откройте Настройки и выберите Сбросить пароль.", "rank": 0.6079 } ] }

Полнотекстовый поиск только по опубликованным статьям, отсортированный по релевантности, с текстовым фрагментом вокруг совпадения. Заголовки весят больше описаний, а описания — больше текста. Пустой или неразбираемый запрос возвращает пустой список, а не ошибку.

Получить статью

curl "https://api.supdesk.app/v1/articles/8f7a..." \ -H "Authorization: Bearer sd_live_..."

Возвращает одну статью в том же виде, что и в списке, либо 404, если такой id в вашем проекте неизвестен.

Создать статью

curl -X POST https://api.supdesk.app/v1/articles \ -H "Authorization: Bearer sd_live_..." \ -H "Content-Type: application/json" \ -d '{ "title": "Как сбросить пароль?", "body": "Откройте **Настройки** и выберите *Сбросить пароль*.", "category_id": "3c2b..." }'
{ "data": { "id": "8f7a...", "title": "Как сбросить пароль?", "slug": "kak-sbrosit-parol", "body": "Откройте **Настройки** и выберите *Сбросить пароль*.", "excerpt": "Откройте Настройки и выберите Сбросить пароль.", "status": "draft", "category_id": "3c2b...", "published_at": null, "helpful_count": 0, "not_helpful_count": 0, "created_at": "2026-07-01T09:12:00Z", "updated_at": "2026-07-01T09:12:00Z" } }

Возвращает 201. Без slug он строится из заголовка, с суффиксом -2, -3… если адрес занят. Без excerpt описание берётся из текста.

Ваш план ограничивает, сколько статей может хранить проект — Free 5, Pro 50, Team неограниченно. Сверх лимита возвращается limit_reached (429). Архивные статьи не учитываются, поэтому архивирование освобождает место.

Обновить статью

curl -X PATCH https://api.supdesk.app/v1/articles/8f7a... \ -H "Authorization: Bearer sd_live_..." \ -H "Content-Type: application/json" \ -d '{ "status": "published" }'

Записываются только переданные поля, поэтому PATCH никогда не очищает то, что вы не отправили. Установка status в published фиксирует published_at в первый раз и сохраняет его дальше — исправление опечатки не делает старую статью новой. Значение archived убирает статью, не удаляя её.

Возврат статьи из архива заново проверяет лимит плана и может вернуть limit_reached.

Удалить статью

curl -X DELETE https://api.supdesk.app/v1/articles/8f7a... \ -H "Authorization: Bearer sd_live_..."

Безвозвратно удаляет статью и отзывы её читателей, возвращает 204. Чтобы убрать статью, сохранив её, установите статус archived.

Категории

GET/v1/article-categories

ParameterTypeDescription
limitintegerРазмер страницы. По умолчанию 25, максимум 100.
offsetintegerСколько элементов пропустить. По умолчанию 0.

GET/v1/article-categories/:id

POST/v1/article-categories

ParameterTypeDescription
namerequiredstringДо 80 символов.
descriptionstringПоказывается на портале, до 300 символов.
sort_orderintegerПозиция отображения. По умолчанию 0.

PATCH/v1/article-categories/:id

ParameterTypeDescription
namestringНовое название.
descriptionstringНовое описание; null очищает его.
sort_orderintegerНовая позиция отображения.

DELETE/v1/article-categories/:id

curl -X POST https://api.supdesk.app/v1/article-categories \ -H "Authorization: Bearer sd_live_..." \ -H "Content-Type: application/json" \ -d '{ "name": "Начало работы", "sort_order": 1 }'
{ "data": { "id": "3c2b...", "name": "Начало работы", "slug": "nachalo-raboty", "description": null, "sort_order": 1, "created_at": "2026-07-01T09:12:00Z" } }

Категории перечисляются по sort_order, затем по названию. Слаги строятся из названия так же, как слаги статей строятся из заголовка.

Удаление категории возвращает 204 и не удаляет её статьи — они остаются без категории и по-прежнему доступны через поиск и с главной страницы центра помощи.

Ошибки

Помимо стандартных кодов:

КодСтатусКогда
not_found404Неизвестный id — либо центр помощи отключён для этого проекта.
forbidden403Запись на плане без доступа к API на запись.
limit_reached429Квота статей плана исчерпана.
Last updated on