Ir para o conteúdo

June 28, 2026 · 9 min read

API de enquetes ao vivo no seu produto

Crie enquetes, conduza sessões ao vivo, leia resultados e receba webhooks pelo seu código: o guia da API do PollsLive para apps SaaS e comunidades.

By the PollsLive team·DevelopersHow-to

Se o seu produto tem público (uma ferramenta de webinars, um LMS, uma plataforma de comunidade, um app de eventos), mais cedo ou mais tarde você vai querer enquetes dentro dele. Construir votação em tempo real, antifraude e uma interface de resultados do zero são meses de trabalho. Integrar o PollsLive é uma tarde. Este é o caminho para desenvolvedores: crie uma enquete, insira o embed, leia resultados e receba webhooks, com chamadas reais à a documentação para desenvolvedores.

Autenticação: um único token Bearer

Gere uma chave de API de workspace em Studio → API para desenvolvedores (elas se parecem com `plv_live_…`) e envie-a como token Bearer. Sem dança de OAuth para uso servidor-a-servidor; OAuth client-credentials está disponível quando você precisa de escopo por tenant.

auth
export POLLSLIVE_API=https://pollslive.com/api/v1
export POLLSLIVE_KEY=plv_live_xxxxxxxxxxxxxxxxxxxx

# Every request carries the key as a Bearer token:
#   Authorization: Bearer $POLLSLIVE_KEY
# Limits and HTTP 429 handling: https://pollslive.com/docs/developers/rate-limits

Passo 1: Crie uma enquete a partir do seu código

Uma enquete é um deck tipado: content.questions é um array de slides, cada um com um discriminador kind. POST /polls retorna a nova enquete, incluindo seu slug, que é tudo o que você precisa para inseri-la.

POST /polls
curl -sS -X POST "$POLLSLIVE_API/polls" \
  -H "Authorization: Bearer $POLLSLIVE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Which feature should we build next?",
    "renderingMode": "ASYNC",
    "content": {
      "questions": [{
        "id": "next",
        "kind": "multiple_choice",
        "text": "Which feature should we build next?",
        "options": [
          { "id": "a", "label": "Dark mode" },
          { "id": "b", "label": "Mobile app" },
          { "id": "c", "label": "Public API" }
        ]
      }]
    }
  }'
# → { "poll": { "slug": "which-feature-x7f2", ... } }

Passo 2: Insira-a na sua interface

Coloque a enquete em qualquer página com um iframe de uma linha: sem SDK, sem biblioteca cliente e sem rastreadores de terceiros viajando junto. Ela se adapta ao seu contêiner e funciona dentro de React, WordPress, Webflow ou HTML puro.

embed
<iframe
  src="https://pollslive.com/embed/which-feature-x7f2"
  width="100%" height="520"
  style="border:0;border-radius:12px"
  loading="lazy" title="PollsLive poll"></iframe>

Passo 3: Leia os resultados quando precisar

Obtenha as contagens sob demanda para os seus próprios painéis, ou exporte um CSV para relatórios. Os resultados voltam por slide com contagens e (para escalas) médias.

GET results
curl -sS "$POLLSLIVE_API/polls/POLL_ID/results" \
  -H "Authorization: Bearer $POLLSLIVE_KEY"
# → { "questions": [ { "id": "next", "options": [
#       { "id": "a", "label": "Dark mode",  "count": 64 },
#       { "id": "b", "label": "Mobile app", "count": 41 },
#       { "id": "c", "label": "Public API", "count": 95 } ] } ] }

Passo 4: Receba atualizações com webhooks

Fazer polling na API funciona, mas os webhooks são melhores. Registre um endpoint e o PollsLive envia eventos assinados com HMAC (vote.created, poll.published, session.started/ended) para que o seu app reaja em tempo real. Verifique a assinatura e depois atualize a sua interface ou repasse o evento.

verify a webhook (Node)
import crypto from "node:crypto";

// header: the X-PollsLive-Signature value, "t=<unix>,v1=<hex>"
export function verify(rawBody, header, secret, toleranceSec = 300) {
  const parts = Object.fromEntries(
    header.split(",").map((kv) => kv.split("=")),
  );
  const t = Number(parts.t);
  if (!t || Math.abs(Date.now() / 1000 - t) > toleranceSec) return false;

  const expected = crypto
    .createHmac("sha256", secret)
    .update(`${t}.${rawBody}`)
    .digest("hex");

  const a = Buffer.from(expected);
  const b = Buffer.from(parts.v1 ?? "");
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}

Esse é o ciclo todo: criar, inserir, ler, reagir. Para a referência completa (cada endpoint, escopo e tipo de evento), consulte a documentação para desenvolvedores, e para um exemplo prático, levar resultados ao vivo a um painel interno com webhooks.

Tip

Comece com a REST API para criar e publicar, depois adicione webhooks quando precisar de pushes de resultados ao vivo.

Para compartilhamento sem código, veja compartilhe e incorpore sua enquete.

Desenvolva no PollsLive: crie enquetes, conduza sessões ao vivo, obtenha resultados e receba webhooks pelo seu próprio código.

Leia a documentação para desenvolvedores

Os cookies essenciais mantêm a sua sessão iniciada e evitam votos duplicados. Com a sua autorização, também utilizamos o Cloudflare Web Analytics para contar visualizações de páginas e o Whop Pixel para saber que visitas levam a uma compra. Política de cookies