ZynzapAPI
Eventos

Stream de eventos em tempo real (SSE)

Abre um stream Server-Sent Events com os eventos dos números da chave (mensagens recebidas, status de entrega, conexão...). Cada evento persistido vem como event: domain com id: (cursor) e data: = JSON do evento. Há também ping (a cada 25 s), refresh (refaça uma consulta completa), error e end.

Para continuar de onde parou, reconecte com o cabeçalho Last-Event-ID (ou ?after_cursor=). O stream valida a chave a cada poucos segundos e fecha se ela for revogada.

Permissão: events:read. Limite: 10 aberturas por minuto por conta. Veja Eventos em tempo real.

GET
/events
AuthorizationBearer <token>

Chave de API criada no painel (API e integrações). Prefixos: zz_live_, zz_test_ (e os antigos wl_live_/wl_test_).

In: header

Query Parameters

after_cursor?string

Cursor do último evento processado.

Match^\d{1,20}$
session_id?array<string>

Filtra por número (repita o parâmetro).

Itemsitems <= 1000
include_product?boolean

Inclui eventos de campanhas e aquecimento (só chaves sem restrição de números).

Defaultfalse

Header Parameters

Last-Event-ID?string

Alternativa a after_cursor (padrão do EventSource).

Response Body

curl -N "https://api.zynzap.com.br/v1/events?after_cursor=string&session_id=497f6eca-6276-4993-bfeb-53cbbbba6f08&include_product=false" \  -H "Authorization: Bearer $ZYNZAP_API_KEY" \  -H "Last-Event-ID: string"
"id: 1042\nevent: domain\ndata: {\"MessageReceived\":{\"session_id\":\"8c1f7a52-4d1e-4b8a-9a43-2f6f5d0c9e11\",\"from\":\"[email protected]\",\"body\":\"Oi, tudo bem?\",\"message_id\":\"3EB0C431C2B5A1F0\",\"is_group\":false,\"timestamp_unix_ms\":1760280000000,\"message_type\":\"text\",\"push_name\":\"Ana\"}}\n\nevent: ping\ndata: {\"t\":1760280025000}\n"
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "Requisição inválida para esta operação.",
    "requestId": "7f3c1a9e-2b4d-4c6e-8f10-a1b2c3d4e5f6",
    "reason": "RPC_REQUEST_INVALID"
  }
}
{
  "error": {
    "code": "UNAUTHENTICATED",
    "message": "Credencial de API ausente, inválida ou revogada.",
    "requestId": "7f3c1a9e-2b4d-4c6e-8f10-a1b2c3d4e5f6",
    "reason": "API_AUTH_REQUIRED"
  }
}
{
  "error": {
    "code": "FORBIDDEN",
    "message": "Este endereço IP não está autorizado a usar esta chave de API.",
    "requestId": "7f3c1a9e-2b4d-4c6e-8f10-a1b2c3d4e5f6",
    "reason": "API_KEY_IP_FORBIDDEN"
  }
}
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Não encontramos o recurso solicitado.",
    "requestId": "7f3c1a9e-2b4d-4c6e-8f10-a1b2c3d4e5f6"
  }
}
{
  "error": {
    "code": "CONFLICT",
    "message": "A cotação expirou. Revise os custos novamente.",
    "requestId": "7f3c1a9e-2b4d-4c6e-8f10-a1b2c3d4e5f6",
    "reason": "BILLING_QUOTE_EXPIRED"
  }
}
{
  "error": {
    "code": "VALIDATION_FAILED",
    "message": "Requisição inválida para esta operação.",
    "requestId": "7f3c1a9e-2b4d-4c6e-8f10-a1b2c3d4e5f6",
    "reason": "RPC_REQUEST_INVALID"
  }
}
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Limite de requisições desta chave atingido. Aguarde um instante.",
    "requestId": "7f3c1a9e-2b4d-4c6e-8f10-a1b2c3d4e5f6",
    "reason": "API_KEY_RATE_LIMITED"
  }
}
{
  "error": {
    "code": "UNAVAILABLE",
    "message": "Resultado incerto. Confira o estado antes de repetir a operação.",
    "requestId": "7f3c1a9e-2b4d-4c6e-8f10-a1b2c3d4e5f6",
    "reason": "OUTCOME_UNCERTAIN"
  }
}