◆ Sapport для разработчиков Справочник API Каталог ошибок OpenAPI
Разделы

Статьи

Методов в разделе: 2. Все методы

МетодПутьОписаниеОбластиСтатус
GET/articlesСписок статейarticles:readДоступно
GET/articles/{id}Получить статьюarticles:readДоступно
GET /articles Доступно

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

Статьи вашего арендатора (раздел SEO) без содержимого, по убыванию updated_at. Статьи общего блога площадки сюда не входят. include_deleted=true даёт 422 not_supported: удалённые статьи не хранятся.

Области
articles:read
Предел частоты
чтение
Идемпотентность
не требуется
Успешный ответ
200 Страница статей.

Параметры

ПолеТипОписание
limitinteger
необязательное
Где: query. Размер страницы: от 1 до 100, по умолчанию 25.
cursorstring
необязательное
Где: query. Значение next_cursor из предыдущего ответа. Живёт 24 часа; при смене фильтров начинайте заново.
statusstring
необязательное
Где: query. Статус статьи.
updated_afterstring
необязательное
Где: query. Только статьи, изменённые строго позже момента. ISO 8601: дата или дата-время.
include_deletedboolean
необязательное
Где: query. true — вернуть также «надгробия» удалённых записей {id, deleted_at} (хранятся 30 суток).

Тело ответа

ПолеТипОписание
dataarray<ArticleSummary>
обязательное
next_cursorstring
обязательное, может быть null
Курсор следующей страницы; null — список закончился. Живёт 24 часа.

Примеры

Запрос
curl -X GET 'https://wfacademy.org/api/public/v1/articles' \
  -H 'Authorization: Bearer '"$SAPPORT_API_KEY"
Ответ 200
{
  "data": [
    {
      "id": "EXAMPLE_ID",
      "title": "string",
      "slug": null,
      "status": "string",
      "locale": null,
      "keyword": null,
      "meta_title": null,
      "meta_description": null,
      "cover_image_url": null,
      "word_count": 0,
      "created_at": null,
      "updated_at": null,
      "published_at": null
    }
  ],
  "next_cursor": "EXAMPLE_CURSOR"
}
Пример ошибки
{
  "type": "https://wfacademy.org/developers/errors#scope_missing",
  "title": "Scope is missing",
  "status": 403,
  "code": "scope_missing",
  "detail": "EXAMPLE",
  "request_id": "req_EXAMPLE"
}

Примеры иллюстративны: ключ в них условный (EXAMPLE), значения полей выдуманы.

Возможные ошибки

invalid_api_key wrong_cell integration_inactive tenant_inactive ip_not_allowed feature_not_in_plan rate_limited wallet_suspended service_unavailable internal_error scope_missing validation_failed

GET /articles/{id} Доступно

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

Статья с содержимым в формате html (по умолчанию), markdown или blocks и состоянием выкладки (publication). HTML очищен от скриптов; тело больше 2 000 000 байт даёт 422.

Области
articles:read
Предел частоты
чтение
Идемпотентность
не требуется
Успешный ответ
200 Статья.

Параметры

ПолеТипОписание
idstring
обязательное
Где: path. Идентификатор статьи.
formatstring
необязательное
Где: query. Формат содержимого.

Тело ответа

ПолеТипОписание
idstring
обязательное
Идентификатор статьи.
titlestring
обязательное
slugstring
обязательное, может быть null
statusstring
обязательное
draft — черновик; review — на проверке; approved — одобрена; published — опубликована; rejected — отклонена; transferred — передана в блог; external — внешняя.
localestring
обязательное, может быть null
Язык статьи (ru, en, id).
keywordstring
обязательное, может быть null
Главный запрос статьи.
meta_titlestring
обязательное, может быть null
meta_descriptionstring
обязательное, может быть null
cover_image_urlstring
обязательное, может быть null
word_countinteger
обязательное
created_atstring
обязательное, может быть null
ISO 8601 UTC.
updated_atstring
обязательное, может быть null
ISO 8601 UTC.
published_atstring
обязательное, может быть null
ISO 8601 UTC.
contentobject
обязательное
Тело статьи в запрошенном формате: html и markdown — строка; blocks — массив блоков {type, html}. HTML очищен от скриптов, опасных ссылок и обработчиков событий. У статьи, чьё тело переехало в блог площадки, содержимое пустое.
publicationArticlePublication
обязательное, может быть null
null — статью ещё не выкладывали через модуль сайта.

Примеры

Запрос
curl -X GET 'https://wfacademy.org/api/public/v1/articles/EXAMPLE_ID' \
  -H 'Authorization: Bearer '"$SAPPORT_API_KEY"
Ответ 200
{
  "id": "EXAMPLE_ID",
  "title": "string",
  "slug": "string",
  "status": "string",
  "locale": "string",
  "keyword": "string",
  "meta_title": "string",
  "meta_description": "string",
  "cover_image_url": "https://example.com/hooks/sapport",
  "word_count": 0,
  "created_at": "2026-10-11T09:00:00Z",
  "updated_at": "2026-10-11T09:00:00Z",
  "published_at": "2026-10-11T09:00:00Z",
  "content": "string",
  "publication": {
    "target": "string",
    "state": "queued",
    "published_url": null,
    "error": null
  }
}
Пример ошибки
{
  "type": "https://wfacademy.org/developers/errors#scope_missing",
  "title": "Scope is missing",
  "status": 403,
  "code": "scope_missing",
  "detail": "EXAMPLE",
  "request_id": "req_EXAMPLE"
}

Примеры иллюстративны: ключ в них условный (EXAMPLE), значения полей выдуманы.

Возможные ошибки

invalid_api_key wrong_cell integration_inactive tenant_inactive ip_not_allowed feature_not_in_plan rate_limited wallet_suspended service_unavailable internal_error scope_missing not_found validation_failed