WS WSAPI
API de WhatsApp · Brasil · 99.97% uptime

Sua API de WhatsApp não precisa custar o salário do seu dev.

Multi-instância, multi-tenant, REST simples. Suporte em PT-BR. Um curl POST e a mensagem foi.

Ver documentação
Sem cartão de crédito
3 minutos até o primeiro envio
Suporte humano em PT-BR
terminal
# enviar uma mensagem
curl -X POST https://api.wsapi.app/v1/message/send-text \
  -H "Authorization: Bearer $TOKEN" \
  -d '{
    "phone": "5547999198263",
    "message": "Olá, mundo!"
  }'

# 200 OK · ack: ✓✓ · 187ms
→ +5547*****8263 · delivered · ✓✓ · 187ms 200 OK → +5511*****7777 · read · ✓✓ · 142ms 200 OK → +5521*****5678 · delivered · ✓✓ · 211ms 200 OK → +5531*****1234 · read · ✓✓ · 168ms

Empresas que confiam na WS API

Acme Suporte
Mercato
Beta SaaS
Conexão.io
CrediClick
Notifyr
Como funciona

Do zero ao primeiro “Olá, mundo” em ~3 minutos.

Três passos curtos. Sem onboarding-call de 45min. Sem demo agendada.

01

Cria a conta

14 dias grátis, sem cartão. Confirma o email e está dentro.

02

Conecta o QR

Cria uma instância e escaneia o QR — pelo painel ou via GET /v1/instance/qrcode na sua aplicação.

03

Confere e dispara

Checa o status, faz o POST. Se desconectou, sua tela pede o QR de novo. Sem suporte humano.

Integração

Uma chamada HTTP. Sem SDK chato.

Não tem cliente proprietário, não tem build step, não tem npm install obscuro. É REST puro com Bearer token. Funciona com a stack que você já tem.

O que você precisa
  • instanceId — ex.: INST-RMQJHC-7CKZH3
  • token — 32 hex, gerado por instância
  • um número — formato 55DDDxxxxxxxx
  • uma mensagem — string, pode ter emoji

Você pega tudo isso no painel em ~3 minutos. Sem onboarding-call, sem demo de 45min.

send-message.ts
const r = await fetch(
  `https://api.wsapi.app/v1/message/send-text`
  + `?instanceId=${id}`,
  {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${token}`,
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      phone: '5547999198263',
      message: 'Olá, mundo!'
    })
  }
);
// 200 OK · ack: ✓✓ · ~180ms
Auto-atendimento

Seu cliente reconecta sozinho. Sem te ligar às 3h.

A WS API expõe status e qrcode como endpoints. Sua aplicação embute essas duas chamadas em qualquer tela e dá autonomia total ao cliente final — ele nunca vê nosso painel.

Antes de enviar
check-status.ts
// na tela de envio, antes de habilitar o botão
const s = await fetch(
  `${API}/v1/instance/status?instanceId=${id}`,
  { headers: { Authorization: `Bearer ${token}` } }
).then(r => r.json());

if (s.state !== 'open') {
  // bloqueia o disparo, mostra o QR
  showReconnect();
}

Sua UI nunca tenta um envio cego. Sem timeout silencioso, sem fila parada, sem “a mensagem não chegou e ninguém sabe por quê”.

Reconexão pelo cliente final
reconnect.ts
// botão "Reconectar WhatsApp" na sua app
const qr = await fetch(
  `${API}/v1/instance/qrcode?instanceId=${id}`,
  { headers: { Authorization: `Bearer ${token}` } }
).then(r => r.json());

// renderiza qr.base64 num <img> ou <canvas>
showQR(qr.base64);

O cliente escaneia direto na tela do seu produto. Você fica com a UX, a marca e o dado de quem reconectou quando.

Recursos

O que você ganha além de alívio na fatura.

Tudo o que precisa pra colocar mensagens de WhatsApp em produção, sem promessas que a gente não consegue cumprir.

Multi-instância

Cada cliente, cada departamento, cada bot — uma instância isolada com QR Code próprio.

POST /v1/instance

Multi-tenant nativo

Tenant isolation no banco. Seu cliente vê só o que é dele. Você vê tudo.

header X-Tenant-Id

Webhooks (em breve)

Eventos de mensagem, status, conexão. Push pra sua URL — sem polling triste.

POST /v1/webhooks

Status em tempo real

GET /v1/instance/status devolve o estado da conexão antes de cada envio. Sem disparo cego.

GET /v1/instance/status

QR Code via API

Seu cliente final reconecta sozinho na sua aplicação — sem precisar entrar no painel da WS API.

GET /v1/instance/qrcode

REST honesto

JSON, Bearer token e códigos HTTP que fazem sentido. Sem SDK proprietário, sem build step.

Authorization: Bearer
Comparativo

A média do mercado vs. a gente.

Sem citar nome de concorrente — você sabe quem cobra caro e te deixa no chatbot. À esquerda, o que se vê por aí; à direita, o que oferecemos.

Aspecto
Mercado
WS API
Preço por instância
até R$ 200
R$ 49
API key por instância
sim
sim
Multi-tenant nativo
não
sim
Tempo até primeiro envio
~30 min
~3 min
Suporte em PT-BR
chatbot
humano que codifica
QR Code via API (sem painel)
não
sim
Snippets

Copia, cola, funciona.

Quatro linguagens, o mesmo body. Troca o token e o número, dá run.

terminal
curl -X POST "https://api.wsapi.app/v1/message/send-text?instanceId=$INSTANCE_ID" \
  -H "Authorization: Bearer $INSTANCE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "5547999198263",
    "message": "Olá, mundo!",
    "delayMessage": 2
  }'
Prova social

Times que já trocaram a fatura inflada por uma planilha menor.

Cases reais, com números. Quer ver mais? Acessa /cases pra história completa.

Migrei 14 instâncias do nosso provedor anterior e cortamos R$ 2.100/mês na hora. Setup foi de uma manhã.
14 instâncias · -R$ 2.1k/mês
MC
Marina Cordeiro
Tech Lead· Mercato
Plugamos o endpoint de status na nossa tela de envio e o número de chamados de 'mensagem não chegou' caiu pra zero.
-100% chamados de envio cego
FA
Felipe Andrade
CTO· Acme Suporte
Suporte responde no WhatsApp em PT-BR, em horário comercial brasileiro. Parece pouco, mas faz toda a diferença.
resposta média < 30min
JR
Júlia Reis
Product Manager· Notifyr
Preço

Um plano. Sem letras miúdas.

Sem degraus. Sem surpresa. Sem aquele plano “Enterprise” cinza que esconde o preço.

R$ 49 / instância / mês

Cancele a qualquer momento, sem multa, sem formulário psicológico de retenção. Trial de 14 dias sem cartão.

  • Mensagens ilimitadas (limite real é o do WhatsApp).
  • REST simples, JSON puro, Bearer token.
  • Multi-instância e multi-tenant nativos.
  • Suporte em PT-BR de gente que sabe Go.
Ver detalhes do plano

Precisa de mais de 50 instâncias? fale direto.

Sessão criptografada em repouso

Tokens e cookies do Baileys ficam no Mongo com encryption-at-rest. Sem logs do conteúdo das mensagens.

Latência típica: ~180ms p50

Servidor no Brasil, mesma região do AWS São Paulo. Veja números reais e histórico em /status.

Suporte humano em PT-BR

Não somos "chat de IA fingindo". Resposta média < 30min em horário comercial.

FAQ

As perguntas que você ia mandar mesmo.

Como funciona a integração?
É REST puro. Você cria uma instância no painel, copia o instanceId + token, e chama POST /v1/message/send-text com Authorization: Bearer e o body em JSON. Tem snippet pronto em cURL, Node, PHP e Go logo abaixo.
Quanto tempo dura o trial?
14 dias. Sem cartão de crédito, sem cobrança automática. Quando acabar você decide se assina ou some — e a gente não vai te perseguir por email.
O WhatsApp não vai bloquear minha conta?
Risco existe pra qualquer integração não-oficial. A WS API roda em cima de Baileys (engenharia reversa, não-oficial). Para produção crítica use a Cloud API oficial direto. Pra automações internas / suporte / disparos opt-in, tem rodado bem aqui.
Quantas mensagens por minuto eu mando?
Existe um campo delayMessage (0–30s) pra humanizar disparos em sequência. O limite real é o do WhatsApp, não nosso. Disparou demais e foi bloqueado, a gente não tem como destravar.
Tem webhook de eventos recebidos?
Em desenvolvimento. Por enquanto: polling em GET /v1/instance/status pra estado da conexão. Quem precisa de webhook hoje, fala com a gente — entra na lista.
Como o cliente final reconecta o WhatsApp dele?
Você integra o endpoint de QR Code na sua própria aplicação — quando o status volta como "desconectado", sua tela pede o QR via API e mostra pro usuário. Ele escaneia ali mesmo, sem precisar entrar no painel da WS API. Você fica com a marca, a gente fica com a infra.
Como evito disparar mensagem com o WhatsApp caído?
Antes de cada envio (ou no carregamento da tela de envio), faz um GET /v1/instance/status. Se o estado não for "open", você bloqueia o botão de enviar e oferece o QR pra reconectar. Sua UX fica blindada contra timeouts silenciosos.
Posso rodar isso na minha infra?
Hoje é só nuvem. A gente cuida da infra, dos updates do Baileys, da rotação de sessão, do Mongo, do certificado, da fila — você só faz o POST. Sem self-host por enquanto.
O que vocês fazem com meu número?
Nada. A sessão fica isolada na nossa infraestrutura e os tokens no banco, criptografados em repouso. Não vendemos lista, não disparamos pra você, não logamos conteúdo de mensagens.
Estou pagando caro em outro provedor. Vale a pena trocar?
Conta o que você gasta hoje e por quantas instâncias. Aqui é R$ 49 por instância, fixo. Se a sua planilha não fechar a nosso favor, a gente fica feliz de te ajudar a otimizar a integração atual mesmo assim.

Para de pagar caro pra conversar.

14 dias. Sem cartão. Sem letras miúdas. Se em 3 minutos você não tiver disparado a primeira mensagem, a culpa é nossa.