Desenvolvedores

Webhooks

O PollsLive pode enviar eventos assinados por POST ao seu endpoint quando enquetes e sessões ao vivo mudam - para que seus sistemas reajam em tempo real em vez de fazer polling.

Configuração

Adicione um endpoint em Studio → Desenvolvedores: informe sua URL HTTPS e selecione os eventos que deseja assinar. O PollsLive exibe um segredo de assinatura (whsec_…) uma única vez - guarde-o para verificar as entregas.

Eventos

  • poll.published - A poll was published and is now live/shareable.
  • poll.closed - Voting was closed on a poll.
  • vote.created - A new vote was recorded on an async poll.
  • session.started - A live presenter session was started.
  • session.ended - A live presenter session ended.
  • response.created - A participant submitted a response in a live session.

Payload

Cada entrega é um corpo JSON com o nome do evento, um carimbo de data/hora e os dados do evento:

Corpo do POST
{
  "event": "poll.published",
  "createdAt": "2026-06-18T12:00:00.000Z",
  "data": {
    "poll": { "id": "...", "slug": "...", "title": "...", "shareUrl": "..." }
  }
}

Cada requisição também carrega estes cabeçalhos:

  • X-PollsLive-Event - o nome do evento.
  • X-PollsLive-Delivery - um id de entrega exclusivo.
  • X-PollsLive-Signature - t=<unix>,v1=<hex>.

Verificar assinaturas

Calcule um HMAC-SHA256 de <t>.<rawBody> usando seu segredo de assinatura e compare-o com o valor v1 (em tempo constante):

Node.js
import crypto from "crypto";

function verify(rawBody, header, secret) {
  const parts = Object.fromEntries(
    header.split(",").map((kv) => kv.split("="))
  );
  const expected = crypto
    .createHmac("sha256", secret)
    .update(`${parts.t}.${rawBody}`)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(expected),
    Buffer.from(parts.v1)
  );
}

Responda com um status 2xx para confirmar. Rejeite qualquer coisa que falhe na verificação.

Tentativas

Se o seu endpoint estiver inacessível ou retornar um status diferente de 2xx, o PollsLive tenta novamente com backoff exponencial (cerca de 1m, 5m, 30m, 2h, 6h) por até seis tentativas. Torne seu handler idempotente usando o id X-PollsLive-Delivery .

Ainda tem dúvidas?

Nossa equipe terá prazer em ajudar.

Fale conosco
Webhooks - API para desenvolvedores do PollsLive | PollsLive