App gerado por IA no navegador

WhatsApp no Bolt: Secrets do banco, função de servidor e checagem antes do envio

O Bolt gera e publica apps a partir de conversa. A documentação de suporte do Bolt (lida em 11/11/2026) descreve a aba Secrets do banco: o valor fica disponível apenas para funções de servidor, não é exibido de novo depois de salvo e não é escrito nos arquivos do projeto nem no site publicado. Esse é o cofre certo para a chave da ZapZap.

Atualizado em

Por que conectar

Você pede ao Bolt um formulário de contato, um painel de pedidos ou um lembrete de consulta. A parte que fala com o WhatsApp precisa rodar no servidor. O fluxo mais seguro, e o que este exemplo mostra, é checar com POST /chat/check se o número tem WhatsApp antes de enviar, o que evita erro e envio perdido. A ZapZap conecta números por um canal não oficial: o WhatsApp pode limitar ou bloquear qualquer número, então ritmo, consentimento e aquecimento contam. São R$15 por número ativo/mês, pré-pago, sem cobrança por mensagem, e você começa com crédito de boas-vindas ao verificar o telefone, sujeito à campanha vigente.

Passo a passo

  1. 1

    Conecte um banco ao projeto

    Na documentação, a aba Secrets exige um banco conectado ao projeto. Conecte o banco antes de continuar.

  2. 2

    Salve as chaves em Secrets

    Clique no ícone do banco no menu superior, abra Secrets, e salve ZAPZAP_API_KEY, ZAPZAP_API_SECRET e ZAPZAP_INSTANCE_ID. O nome é sensível a maiúsculas e minúsculas. Em conta individual só o dono vê os secrets; em conta de equipe, dono, co-donos e administradores. Chaves em Settings > API de app.zapzapapi.com.

  3. 3

    Peça a função de servidor

    Prompt: "Crie uma função de servidor que recebe number e text, chama POST /chat/check da ZapZap com numbers: [number], e só se o número existir chama POST /send/text. Leia ZAPZAP_API_KEY, ZAPZAP_API_SECRET e ZAPZAP_INSTANCE_ID dos secrets. O front só chama essa função."

  4. 4

    Revise o que o Bolt gerou

    Procure por três erros comuns: chave escrita no código, chamada feita pelo componente do front e envio sem validar o número. Corrija pedindo ao Bolt, e compare com o exemplo desta página.

  5. 5

    Teste com um número seu e olhe o status da instância

    Chame a função com o seu telefone, confira a resposta e consulte GET /{instanceId}/instance/status. Se a instância estiver desconectada, reconecte pelo QR code no painel.

Exemplo

// Server function (Deno edge function): check the number first, then send. Secrets: ZAPZAP_API_KEY, ZAPZAP_API_SECRET, ZAPZAP_INSTANCE_ID
const BASE = "https://api.zapzapapi.com/api/v1/" + Deno.env.get("ZAPZAP_INSTANCE_ID");
const headers = {
  "Content-Type": "application/json",
  "x-api-key": Deno.env.get("ZAPZAP_API_KEY") ?? "",
  "x-api-secret": Deno.env.get("ZAPZAP_API_SECRET") ?? "",
};

Deno.serve(async (req: Request) => {
  const { number, text } = await req.json();
  const check = await fetch(BASE + "/chat/check", { method: "POST", headers, body: JSON.stringify({ numbers: [number] }) });
  if (!check.ok) return new Response("check failed: " + check.status, { status: 502 });
  const found = JSON.stringify(await check.json());
  if (!found.includes(number)) return new Response("number not found", { status: 404 });
  const send = await fetch(BASE + "/send/text", { method: "POST", headers, body: JSON.stringify({ number, text }) });
  return new Response(await send.text(), { status: send.status });
});

Ilustrativo. Os campos e endpoints exatos estão na documentação.

Por que checar o número antes de enviar

POST /{instanceId}/chat/check recebe numbers e informa quais têm WhatsApp. Enviar só para quem existe reduz erros e mantém o histórico limpo. Não é garantia contra bloqueio: o canal é não oficial e o WhatsApp pode limitar números, então envie só para quem tem relação com você e mantenha ritmo humano.

Perguntas frequentes

Onde guardo a chave no Bolt?

Em Secrets, pelo ícone do banco. Segundo a documentação do Bolt (11/11/2026), o valor só fica disponível para funções de servidor e não vai para os arquivos do projeto nem para o site publicado.

Posso chamar a API do componente de front?

Não. A chave ficaria no navegador de qualquer visitante. Chame a função de servidor e deixe só ela falar com a ZapZap.

A documentação do Bolt cobre webhook de entrada?

A página que li trata de secrets. Para receber mensagens, crie outra função de servidor, cadastre a URL com PUT /instances/{id}/webhook e valide a assinatura X-ZapZap-Signature.

Preciso de plano pago no Bolt?

A documentação que li não informa; consulte a página de planos do Bolt.

Quanto custa a ZapZap?

São R$15 por número ativo/mês, pré-pago, sem cobrança por mensagem, e você começa com crédito de boas-vindas ao verificar o telefone, sujeito à campanha vigente.

Comece agora

Crie sua conta, conecte um número em minutos e teste a API com aquecimento e anti-bloqueio. R$15 por número ativo/mês, pré-pago, sem fidelidade.