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:
{
"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):
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.