Server-Sent Events (SSE)

GET /sse

Receber eventos em tempo real via Server-Sent Events (SSE)

Funcionalidades principais:

  • conexão HTTP persistente em text/event-stream
  • seleção granular de tipos de eventos
  • filtragem de tipos de mensagens
  • autenticação por token na query, compatível com EventSource

Eventos Disponíveis:

  • connection: Alterações no estado da conexão
  • history: Recebimento de histórico de mensagens
  • messages: Novas mensagens recebidas
  • messages_update: Atualizações em mensagens existentes
  • call: Eventos de chamadas VoIP
  • contacts: Atualizações na agenda de contatos
  • presence: Alterações no status de presença
  • groups: Modificações em grupos
  • labels: Gerenciamento de etiquetas
  • chats: Eventos de conversas
  • chat_labels: Alterações em etiquetas de conversas

Estabelece uma conexão persistente para receber eventos em tempo real. Este endpoint:

  1. Requer autenticação via token

  2. Mantém uma conexão HTTP aberta com o cliente

  3. Envia eventos conforme ocorrem no servidor

  4. Suporta diferentes tipos de eventos

Exemplo de uso:


const eventSource = new
EventSource('/sse?token=SEU_TOKEN&events=chats,messages');


eventSource.onmessage = function(event) {
  const data = JSON.parse(event.data);
  console.log('Novo evento:', data);
};


eventSource.onerror = function(error) {
  console.error('Erro na conexão SSE:', error);
};

Estrutura de um evento:


{
  "type": "message",
  "data": {
    "id": "3EB0538DA65A59F6D8A251",
    "from": "5511999999999@s.whatsapp.net",
    "to": "5511888888888@s.whatsapp.net",
    "text": "Olá!",
    "timestamp": 1672531200000
  }
}

Autenticação

[]
{}

Parâmetros

[
  {
    "name": "token",
    "in": "query",
    "schema": {
      "type": "string"
    },
    "required": true,
    "description": "Token de autenticação da instância",
    "example": "{{token}}"
  },
  {
    "name": "events",
    "in": "query",
    "schema": {
      "type": "string"
    },
    "required": true,
    "description": "Tipos de eventos a serem recebidos. Suporta dois formatos:\n- Separados por vírgula: `?events=chats,messages`\n- Parâmetros repetidos: `?events=chats&events=messages`\n",
    "example": "chats,messages"
  },
  {
    "name": "excludeMessages",
    "in": "query",
    "schema": {
      "type": "string"
    },
    "required": false,
    "description": "Tipos de mensagens a serem excluídas do evento `messages`. Suporta dois formatos:\n- Separados por vírgula: `?excludeMessages=poll,reaction`\n- Parâmetros repetidos: `?excludeMessages=poll&excludeMessages=reaction`\n",
    "example": "poll,reaction"
  }
]

Respostas

{
  "200": {
    "description": "Stream de eventos aberto",
    "headers": {
      "Cache-Control": {
        "schema": {
          "type": "string"
        },
        "example": "no-cache"
      }
    },
    "content": {
      "text/event-stream": {
        "schema": {
          "type": "string"
        },
        "example": "event: messages\ndata: {\"type\":\"message\",\"data\":{\"text\":\"Olá\"}}"
      }
    }
  },
  "400": {
    "description": "Lista de eventos ou parâmetros inválidos",
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "required": [
            "error"
          ],
          "properties": {
            "error": {
              "type": "string"
            }
          }
        }
      }
    }
  },
  "401": {
    "description": "Token inválido ou ausente",
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "required": [
            "error"
          ],
          "properties": {
            "error": {
              "type": "string",
              "example": "Unauthorized"
            }
          }
        }
      }
    }
  }
}

Guias relacionados

Autenticação · Erros e retries · Server URL