История сообщений

    5 мин чтения
    ·
    104 просмотра
    ·
    Обновлено 7 сентября 2026

    GET /v1/messages

    Получение истории сообщений канала с пагинацией и фильтрацией по контакту.

    URL

    GET https://api.wazzabee.com/api-gateway/v1/messages?channelId=...&chatId=...&limit=50&offset=0

    Заголовки

    Authorization: Bearer ВАШ_API_КЛЮЧ

    Параметры запроса (query string)

    ПараметрТипОбязательныйПо умолчаниюОписание
    channelIdstring (UUID)✅ ДаID канала. Получить через GET /v1/channels
    chatIdstringНетФильтр по контакту: номер телефона или chat_id. Если не указан — возвращаются все сообщения канала
    limitintegerНет50Количество сообщений на страницу. Максимум: 200
    offsetintegerНет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
    }

    Описание полей ответа

    ПолеТипОписание
    messagesarrayМассив сообщений, отсортированных от новых к старым
    messages[].idstring (UUID)Уникальный ID сообщения
    messages[].conversationIdstring (UUID)ID диалога, к которому относится сообщение
    messages[].contactIdstring (UUID)ID контакта
    messages[].directionstringincoming — входящее, outgoing — исходящее
    messages[].typestringТип сообщения: text, image, video, document, audio
    messages[].textstring | nullТекст сообщения (null для медиа без текста)
    messages[].mediaUrlstring | nullURL медиафайла (null для текстовых сообщений)
    messages[].createdAtstring (ISO 8601)Дата и время создания сообщения
    totalintegerОбщее количество сообщений (для пагинации)
    limitintegerТекущий лимит на страницу
    offsetintegerТекущее смещение

    Пагинация

    Сообщения сортируются от новых к старым (по 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Канал не найден или нет доступаКанал не существует или принадлежит другому пользователю