Для разработчиков

Список черновиков

GET/drafts

Свои черновики, от новых к старым.

По умолчанию возвращаются только обычные черновики: отложенные нужно запросить параметром type. Отличить их в ответе можно по полю schedule.

Пара entity_type и entity_id сужает выдачу до одного чата, треда или личной переписки. Если такого чата нет или он недоступен, метод отвечает пустым списком, а не ошибкой.

Параметры строки запроса

type
string
Что возвращать: regular — обычные черновики, scheduled — отложенные сообщения, all — и те и другие
Возможные значения
Пример:all
По умолчанию:
regular
entity_type
string
Тип чата для фильтра по одному чату. Указывается вместе с entity_id: если прислать только один из двух, ответ будет 422.
Возможные значения
Пример:discussion
entity_id
integer, (int32)
Идентификатор того, что названо в entity_type. Указывается вместе с ним.
Пример:334
limit
integer, (int32)
Количество возвращаемых сущностей за один запрос
Пример:25
По умолчанию:
50
Диапазон:
1 — 50
cursor
string
Курсор для пагинации (из meta.paginate.next_page или meta.paginate.prev_page)
Пример:eyJpZCI6MTAsImRpciI6ImFzYyJ9

Ответ

200OK
The request has succeeded.
data[]
array of objects
*
id
integer, (int32)
*
Идентификатор черновика
Пример:4821
entity_type
nullablestring
*
Куда уйдёт сообщение: в беседу или канал, в тред либо в личную переписку с сотрудником
Возможные значения
Пример:discussion
entity_id
nullableinteger, (int32)
*
Идентификатор того, что названо в entity_type: беседы или канала, треда либо сотрудника
Пример:334
chat_id
nullableinteger, (int32)
*
Идентификатор чата, в котором лежит черновик. У черновика треда это чат самого треда.
Пример:334
content
string
*
Текст черновика. У черновика из одних вложений приходит пустая строка, а не null.
Пример:Отчёт за неделю: продажи выросли на 10%
parent_message_id
nullableinteger, (int32)
*
Идентификатор сообщения, ответом на которое уйдёт черновик. null, если это не ответ.
Пример:196093
files[]
array of objects
*
Прикреплённые файлы
id
integer, (int32)
*
Идентификатор файла
Пример:3560
key
string
*
Путь к файлу
Пример:attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png
name
string
*
Название файла с расширением
Пример:congrat.png
file_type
string
*
Тип файла
Возможные значения
Пример:image
url
string
*
Ссылка на скачивание файла. Обычно ведёт прямо в хранилище и действует до 7 дней, а оставшийся срок может быть меньше — если такая ссылка вернула 403, запросите сообщение заново и получите свежую. Если в пространстве включено шифрование или задан безопасный контур, ссылка ведёт на GETСкачивание файла: забирать такой файл нужно с заголовком Authorization, а токену нужен скоуп files:read.
Пример:https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8
width
nullableinteger, (int32)
Ширина изображения в пикселях. null для файлов, не являющихся изображением, а также если размер не был передан при загрузке.
Пример:1920
height
nullableinteger, (int32)
Высота изображения в пикселях. null для файлов, не являющихся изображением, а также если размер не был передан при загрузке.
Пример:1080
duration_ms
nullableinteger, (int32)
Длительность в миллисекундах у голосового, аудио- и видеофайла. null у остальных файлов и если длительность не была передана при загрузке.
Пример:5400
voice_content
nullableobject
*
Голосовое сообщение. null, если голосового вложения нет. Расшифровка в transcript у черновика всегда null — она запускается после отправки.
duration_ms
integer, (int32)
*
Длительность голосового сообщения в миллисекундах
Пример:5400
waveform
string
*
Форма волны (амплитуды) для визуализации голосового сообщения
Пример:4,8,12,20,16,10,6,3
transcript
nullablestring
*
Расшифровка голосового сообщения в текст. null, пока расшифровка не готова или недоступна.
Пример:Привет, посмотри пожалуйста последний отчёт
schedule
nullableobject
*
Расписание отправки. null у обычного черновика.
start_date
string, (date-time)
*
Первая отправка (ISO-8601). Из неё берутся время суток, число месяца и день недели, по которым дальше строится повтор.
Пример:2026-09-17T12:00:00.000Z
end_date
nullablestring, (date-time)
*
Дата, после которой повтор прекращается (ISO-8601). null, если конец не задан.
Пример:2026-12-31T12:00:00.000Z
repetition
object
*
Правило повтора
interval
string
*
Периодичность
Возможные значения
Пример:weekly
days[]
array of integers, (int32)
Дни недели, по которым уходит сообщение: 0 — воскресенье, 6 — суббота. Приходит только при периодичности weekly.
Пример:[1,3]
nth_day
nullableinteger, (int32)
Какой по счёту день недели в месяце: от 1 до 4 — первый, второй, третий, четвёртый, 5 — последний. Приходит только при периодичности по месяцам, а null в ней означает повтор по числу месяца из start_date.
Пример:2
next_send_at
nullablestring, (date-time)
*
Ближайшая отправка (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ. null у обычного черновика.
Пример:2026-09-17T12:00:00.000Z
created_at
string, (date-time)
*
Дата и время создания (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ
Пример:2026-09-16T10:00:00.000Z
updated_at
string, (date-time)
*
Дата и время последнего изменения (ISO-8601, UTC+0) в формате YYYY-MM-DDThh:mm:ss.sssZ
Пример:2026-09-16T10:00:00.000Z
meta
object
*
Метаданные пагинации
paginate
object
*
Вспомогательная информация
next_page
string
*
Курсор пагинации следующей страницы
Пример:eyJxZCO2MiwiZGlyIjomSNYjIn3
prev_page
string
Курсор пагинации предыдущей страницы. Используется для polling новых записей «сверху» списка.
Пример:eyJxZCO2MiwiZGlyIjoiYXNjIn0
has_next
boolean
Есть ли ещё данные на следующей странице. На последней странице — false.
Пример:true
has_prev
boolean
Есть ли ещё данные на предыдущей странице. На первом запросе без курсора — false.
Пример:false
Список черновиков
# Добавьте --all для автоматической пагинацииpachca drafts list \  --type=all \  --entity-type=discussion \  --entity-id=334 \  --limit=25 \  --json \  --token YOUR_ACCESS_TOKEN
Ответ 200
{  "data": [    {      "id": 4821,      "entity_type": "discussion",      "entity_id": 334,      "chat_id": 334,      "content": "Отчёт за неделю: продажи выросли на 10%",      "parent_message_id": 196093,      "files": [        {          "id": 3560,          "key": "attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png",          "name": "congrat.png",          "file_type": "image",          "url": "https://pachca-prod-uploads.s3.storage.selcloud.ru/attaches/files/12/21zu7934-02e1-44d9-8df2-0f970c259796/congrat.png?response-cache-control=max-age%3D3600%3B&response-content-disposition=attachment&X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=142155_staply%2F20231107%2Fru-1a%2Fs3%2Faws4_request&X-Amz-Date=20231107T160412&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=98765asgfadsfdSaDSd4sdfg35asdf67sadf8",          "width": 1920,          "height": 1080,          "duration_ms": 5400        }      ],      "voice_content": {        "duration_ms": 5400,        "waveform": "4,8,12,20,16,10,6,3",        "transcript": "Привет, посмотри пожалуйста последний отчёт"      },      "schedule": {        "start_date": "2026-09-17T12:00:00.000Z",        "end_date": "2026-12-31T12:00:00.000Z",        "repetition": {          "interval": "weekly",          "days": [            1,            3          ],          "nth_day": 2        }      },      "next_send_at": "2026-09-17T12:00:00.000Z",      "created_at": "2026-09-16T10:00:00.000Z",      "updated_at": "2026-09-16T10:00:00.000Z"    }  ],  "meta": {    "paginate": {      "next_page": "eyJxZCO2MiwiZGlyIjomSNYjIn3",      "prev_page": "eyJxZCO2MiwiZGlyIjoiYXNjIn0",      "has_next": true,      "has_prev": false    }  }}