Skip to main content
Incorpore a caixa de entrada do WhatsApp (Chat) do Pilot Status no seu próprio SaaS, white-label, por meio de um iframe hospedado mais o SDK @pilot-status/embed.

Pré-requisitos compartilhados (Chat + Connect)

  1. Chave de API do tenant (ps_, com escopo de tenant) — gerada em Perfil → API. Ela nunca sai do seu backend. (Uma chave com escopo de número só pode incorporar o próprio número.)
  2. SDK<script src="https://pilotstatus.com.br/embed.js"> ou npm i @pilot-status/embed; chame PilotStatus.init().
  3. allowedOrigins — ao emitir o token do Chat, liste as origens exatas (scheme://host[:port], 1–20) autorizadas a incorporar.
  4. Token por superfície — o Chat usa POST /v1/embed/sessions (surface: "chat", um JWT de curta duração mantido em memória). O Connect usa POST /v1/numbers/remote-pairing (um token de pareamento na URL — veja Incorpore a Página de Connect).
  5. Renovação — o TTL do token do Chat é de 15 min com uma janela de atualização deslizante; ao expirar por completo, o SDK chama onSessionExpired.

Fluxo do Chat

1

Configuração única

Seu backend lista os números com GET /v1/numbers (x-api-key) e armazena o mapa cliente → [whatsappNumberIds].
2

Emita um token a cada carregamento de página

Seu frontend solicita um token ao seu backend; o backend chama:
Resposta 201: { token, surface, whatsappNumberIds, allowedOrigins, expiresAt }. O backend encaminha apenas o JWT para o frontend.
3

Monte a caixa de entrada

Protocolo postMessage (pai ↔ iframe)

Envelope: { source: "pilot-status-embed", v: 1, type, payload }. Mensagens sem esse source são ignoradas; a origem é validada em ambos os lados.

Modelo de segurança

  • A x-api-key fica apenas no seu backend; o navegador só manipula o JWT de curta duração.
  • O JWT tem escopo rígido para os seus whatsappNumberIds — as rotas do chat reverificam a cada requisição (defesa em profundidade).
  • Token apenas em memória, TTL de ~15 min com atualização deslizante; allowedOrigins fixa quem pode incorporar; a origem do postMessage é validada em ambos os lados.

Relacionados