Messages
Сообщения принадлежат конкретному тикету. У сообщения есть тип отправителя (contact, operator, bot) и флагis_internal — внутренние заметки не видны клиенту.
/api/v1/tickets/{ticket_id}/messagesСписок сообщений тикета
Query параметры:
since— ISO 8601 datetime, только сообщения послеpage,page_size(default 50, max 200)
{
"items": [
{
"id": "f1...",
"ticket_id": "8a3f...",
"workspace_id": "1c2b...",
"sender_type": "contact",
"sender_id": "44e1...",
"content": "Здравствуйте!",
"is_internal": false,
"media": [
{
"id": "m1...",
"url": "https://api.support.forestsnet.com/api/v1/media/m1...",
"mime_type": "image/png",
"original_name": "screenshot.png",
"file_type": "image",
"width": 1280,
"height": 720
}
],
"created_at": "2026-04-06T10:12:33.123456"
}
],
"total": 4,
"page": 1,
"page_size": 50
}/api/v1/tickets/{ticket_id}/messagesОтправить сообщение от имени бота/системы
Сообщение публикуется с типом bot. Используется для автоответов и интеграций. К сообщению можно прикрепить ранее загруженные файлы черезmedia_ids — см. раздел Медиа.
{
"content": "Спасибо! Прикладываю инструкцию.",
"is_internal": false,
"media_ids": ["m1...", "m2..."]
}/api/v1/messages/{message_id}Редактировать сообщение
Перезаписывает content сообщения. Применимо к сообщениям которые отправил ваш бот / интеграция через предыдущие endpoint'ы — сообщения от посетителей и операторов через дашборд тоже редактируются, но обычно проще вызвать админский WS-канал.
{
"content": "Обновлённый текст сообщения"
}В ответ возвращается обновлённое сообщение целиком (как в GET-листе). Триггерит webhook event message.edited.
/api/v1/messagesПринять входящее сообщение от внешнего контакта
Универсальный «инбокс»: используйте этот эндпоинт, когда внешняя система (CRM, бот, форма на сайте) хочет передать сообщение от пользователя. Если активного тикета нет — он будет создан автоматически.
{
"external_id": "user-42",
"content": "Здравствуйте, не приходит код",
"media_ids": ["m1..."],
"contact": {
"full_name": "Иван Петров",
"email": "ivan@example.com"
}
}Поле media_ids опционально: передайте id файлов, ранее загруженных через POST /api/v1/media/upload. Они появятся в массиве media у созданного сообщения.
contact.extra_data.last_ip — удобно для антифрода и геоаналитики.