GET /v1/messages
Получение истории сообщений канала с пагинацией и фильтрацией по контакту.
URL
GET https://api.wazzabee.com/api-gateway/v1/messages?channelId=...&chatId=...&limit=50&offset=0
Заголовки
Authorization: Bearer ВАШ_API_КЛЮЧ
Параметры запроса (query string)
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
channelId | string (UUID) | ✅ Да | — | ID канала. Получить через GET /v1/channels |
chatId | string | Нет | — | Фильтр по контакту: номер телефона или chat_id. Если не указан — возвращаются все сообщения канала |
limit | integer | Нет | 50 | Количество сообщений на страницу. Максимум: 200 |
offset | integer | Нет | 0 | Смещение для пагинации (сколько сообщений пропустить) |
Примеры запросов
Все сообщения канала (последние 50)
curl -X GET "https://api.wazzabee.com/api-gateway/v1/messages?channelId=550e8400-e29b-41d4-a716-446655440000" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ"
Сообщения конкретного контакта
curl -X GET "https://api.wazzabee.com/api-gateway/v1/messages?channelId=550e8400-e29b-41d4-a716-446655440000&chatId=77001234567" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ"
Пагинация — вторая страница по 20 сообщений
curl -X GET "https://api.wazzabee.com/api-gateway/v1/messages?channelId=550e8400-e29b-41d4-a716-446655440000&limit=20&offset=20" \
-H "Authorization: Bearer ВАШ_API_КЛЮЧ"
Успешный ответ (200 OK)
{
"success": true,
"messages": [
{
"id": "msg-uuid-1",
"conversationId": "conv-uuid-1",
"contactId": "contact-uuid-1",
"direction": "incoming",
"type": "text",
"text": "Здравствуйте, когда будет готов заказ?",
"mediaUrl": null,
"createdAt": "2026-03-12T10:30:00.000Z"
},
{
"id": "msg-uuid-2",
"conversationId": "conv-uuid-1",
"contactId": "contact-uuid-1",
"direction": "outgoing",
"type": "text",
"text": "Добрый день! Заказ будет готов завтра.",
"mediaUrl": null,
"createdAt": "2026-03-12T10:31:00.000Z"
}
],
"total": 156,
"limit": 50,
"offset": 0
}
Описание полей ответа
| Поле | Тип | Описание |
|---|---|---|
messages | array | Массив сообщений, отсортированных от новых к старым |
messages[].id | string (UUID) | Уникальный ID сообщения |
messages[].conversationId | string (UUID) | ID диалога, к которому относится сообщение |
messages[].contactId | string (UUID) | ID контакта |
messages[].direction | string | incoming — входящее, outgoing — исходящее |
messages[].type | string | Тип сообщения: text, image, video, document, audio |
messages[].text | string | null | Текст сообщения (null для медиа без текста) |
messages[].mediaUrl | string | null | URL медиафайла (null для текстовых сообщений) |
messages[].createdAt | string (ISO 8601) | Дата и время создания сообщения |
total | integer | Общее количество сообщений (для пагинации) |
limit | integer | Текущий лимит на страницу |
offset | integer | Текущее смещение |
Пагинация
Сообщения сортируются от новых к старым (по createdAt DESC). Используйте offset и limit для постраничной навигации.
💡 Пример пагинации:
- Страница 1:
?limit=20&offset=0 - Страница 2:
?limit=20&offset=20 - Страница 3:
?limit=20&offset=40 - Проверяйте
totalчтобы знать, есть ли ещё страницы
Фильтрация по chatId
Если указан chatId, API ищет контакт по номеру телефона или external_id и возвращает только его сообщения. Если контакт с таким chatId не найден — возвращается пустой массив (не ошибка).
Возможные ошибки
| Код | Ошибка | Причина |
|---|---|---|
400 | Параметр channelId обязателен | Не указан channelId в query string |
403 | Канал не привязан к данной интеграции | Канал не входит в разрешённые для этого API-ключа |
404 | Канал не найден или нет доступа | Канал не существует или принадлежит другому пользователю |
