API REST oficial Meta com SDKs nativos. Idempotência, retry e webhooks já vêm de fábrica — você foca em vender, não em infra.
import { Arara } from '@arara/sdk'
const arara = new Arara(process.env.ARARA_API_KEY)
const message = await arara.messages.send({
to: '+5511999999999',
template: 'pedido_confirmado',
variables: {
nome: 'João',
pedido: '#1234',
valor: 'R$ 247,90',
},
})
console.log(message.id) // msg_abc123Cada estágio dispara um evento HTTP no seu endpoint. Você sabe onde a mensagem está sem fazer um único polling.
Idempotency-KeyCliente recebe uma vez — não importa quantas vezes seu backend tentou enviar. Mesma chave, mesma response, dentro de 24h.
Rede caiu antes da response chegar. Você não sabe se enfileirou. Tenta de novo com a mesma chave — só envia uma.
// 1ª chamada: timeout local antes da response
await arara.messages.send({...}, {
idempotencyKey: 'order:1234:confirm',
})
// (timeout)
// Você tenta de novo com a mesma key
await arara.messages.send({...}, {
idempotencyKey: 'order:1234:confirm',
})
// → mesma response, mensagem foi enviada UMA vezDois workers do mesmo job rodam em paralelo. Sem chave, manda duas vezes. Com chave, qual chegar segundo recebe a response do primeiro.
// Worker A
await arara.messages.send({...}, {
idempotencyKey: 'cart:abc:abandoned',
})
// → cria msg_xyz
// Worker B (paralelo)
await arara.messages.send({...}, {
idempotencyKey: 'cart:abc:abandoned',
})
// → retorna msg_xyz (mesmo!)Cron rodou duas vezes por engano. Sem chave, cliente recebe a notificação duplicada. Com chave, segunda execução é no-op.
// Cron 18:00
for (const order of overdue) {
await arara.messages.send({...}, {
idempotencyKey: `order:${order.id}:reminder:${today}`,
})
}
// Cron 18:00 (rodou de novo)
// → todas as keys já existem, zero enviosendBatchconst result = await arara.messages.sendBatch({
template: 'black_friday_promo',
recipients: customers.map(c => ({
to: c.phone,
variables: {
nome: c.firstName,
cupom: c.personalizedCoupon,
},
})),
})
// result.batchId pra acompanhar
// status individual via webhook (10k eventos)WebhooksCada interação vira POST no seu servidor. Replay pelos últimos 30 dias, retry exponencial em caso de falha, signature HMAC pra você verificar autenticidade.
Ver tudo sobre webhooksTempo do POST até a response 202 (mensagem enfileirada). Não inclui tempo de entrega no celular do cliente — esse depende da Meta e do dispositivo.
Não é sobre features. É sobre não ter que explicar pro financeiro o que é IOF.
Sim — você conecta o número da sua empresa (ou provisiona um novo com a gente) em poucos minutos, com a Arara cuidando da verificação na Meta. Pro inclui 1 número com a sua marca (nome e foto da sua empresa), Business inclui 3.
Cria no Template Studio → submete pelo dashboard → recebe webhook quando aprova ou rejeita. Utility e auth saem em minutos. Marketing leva até 24-48h.
Depende do tier de qualidade do número (definido pela Meta com base na reputação). Marketing: 1k/dia → 100k+/dia. Utility: ilimitado. Auth: 100k/dia.
Wallet pré-paga banca cada mensagem (custo Meta + nosso markup). Assinatura libera os módulos. Sem mensalidade obrigatória — se só quer enviar, paga só wallet.
Sim. Compatibilidade da API é alta — geralmente é trocar base URL e token. Migração de número é feita junto com Meta sem downtime. Se tem volume, time faz onboarding 1:1.
Pro 99,5%. Business 99,9%. Enterprise 99,95%. Status público em ararahq.statuspage.one — incidentes têm postmortem aberto.
Sim. IPs de saída são fixos e listados nas docs. Plano Business tem failover endpoint pra garantir delivery se primário cair.
Sim, em todos os planos (incluindo Free). Sandbox usa número de teste e mensagens não contam pro cap diário.
Cria a conta, recarrega R$ 100 (com +30% de bônus), dispara.