Como Usar APIs Brevo (ex Sendinblue) para SMS Marketing?

Ashley Innocent

Ashley Innocent

24 março 2026

Como Usar APIs Brevo (ex Sendinblue) para SMS Marketing?

Apidog para empresas

Implantação local

SSO & RBAC

Conforme SOC 2

Explorar Apidog Enterprise

TL;DR

As APIs da Brevo permitem que você envie e-mails de marketing, e-mails transacionais e mensagens SMS programaticamente. Você se autentica com uma chave de API, envia solicitações para api.brevo.com e usa webhooks para rastrear a entrega e o engajamento. Para testar, use o Apidog para validar payloads, testar manipuladores de webhook e garantir que sua integração lide corretamente com bounces e cancelamentos de inscrição.

Introdução

A Brevo (anteriormente Sendinblue) processa milhões de e-mails diariamente para mais de 500.000 empresas. Ela gerencia campanhas de marketing, e-mails transacionais, marketing por SMS e fluxos de trabalho de automação.

As APIs de e-mail parecem simples - envie uma mensagem, pronto. Mas os sistemas de e-mail em produção precisam lidar com bounces, reclamações de spam, cancelamentos de inscrição e tempo de entrega. A Brevo gerencia essa complexidade para que você não precise se preocupar.

A API cobre três casos de uso principais:

💡
Se você estiver integrando e-mail em seu aplicativo, o Apidog ajuda a testar modelos, validar payloads de webhook e garantir que sua integração funcione em todos os clientes de e-mail. Você pode simular as respostas da Brevo durante o desenvolvimento e testar o tratamento de erros sem enviar e-mails reais.
button
button

Autenticação e configuração

Obter uma chave de API

  1. Faça login na Brevo
  2. Vá para SMTP & API → Chaves de API
  3. Crie uma nova chave com as permissões apropriadas
  4. Armazene-a de forma segura

A chave de API vai no cabeçalho api-key:

curl -X GET "https://api.brevo.com/v3/account" \
  -H "accept: application/json" \
  -H "api-key: sua-chave-api-aqui"

URL base da API

Todas as solicitações vão para:

https://api.brevo.com/v3/

Limites de taxa

A Brevo limita as solicitações por plano:

Verifique o cabeçalho X-RateLimit-Remaining para acompanhar o uso.

Envio de e-mails transacionais

E-mails transacionais são mensagens individuais acionadas por ações do usuário. Pense em redefinições de senha, confirmações de pedidos, e-mails de boas-vindas.

Enviar um e-mail simples

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "accept: application/json" \
  -H "api-key: sua-chave-api" \
  -H "content-type: application/json" \
  -d '{
    "sender": {
      "name": "Seu App",
      "email": "noreply@seusite.com"
    },
    "to": [
      {
        "email": "usuario@example.com",
        "name": "João Silva"
      }
    ],
    "subject": "Bem-vindo à Nossa Plataforma",
    "htmlContent": "<html><body><h1>Bem-vindo!</h1><p>Obrigado por se inscrever.</p></body></html>",
    "textContent": "Bem-vindo! Obrigado por se inscrever."
  }'

Resposta:

{
  "messageId": "<20260324123456.123456@relay.brevo.com>"
}

Usando modelos

Crie modelos no editor visual da Brevo e envie pelo ID:

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "api-key: sua-chave-api" \
  -H "content-type: application/json" \
  -d '{
    "templateId": 15,
    "to": [
      {
        "email": "usuario@example.com",
        "name": "João Silva"
      }
    ],
    "params": {
      "name": "João",
      "order_number": "PED-12345",
      "tracking_url": "https://rastreamento.example.com/PED-12345"
    }
  }'

Variáveis de modelo usam chaves duplas:

<p>Olá {{params.name}},</p>
<p>Seu pedido {{params.order_number}} foi enviado.</p>
<p><a href="{{params.tracking_url}}">Rastreie seu pacote</a></p>

Enviar com anexos

const response = await fetch('https://api.brevo.com/v3/smtp/email', {
  method: 'POST',
  headers: {
    'api-key': process.env.BREVO_API_KEY,
    'content-type': 'application/json'
  },
  body: JSON.stringify({
    sender: { name: 'Seu App', email: 'noreply@seusite.com' },
    to: [{ email: 'usuario@example.com' }],
    subject: 'Sua Fatura',
    htmlContent: '<p>Por favor, encontre sua fatura anexada.</p>',
    attachment: [
      {
        name: 'fatura.pdf',
        content: base64EncodedPdfContent
      }
    ]
  })
})

Campanhas de marketing

E-mails de marketing vão para listas de contatos. A Brevo gerencia links de cancelamento de inscrição, agendamento e análises.

Criar uma campanha

curl -X POST "https://api.brevo.com/v3/emailCampaigns" \
  -H "api-key: sua-chave-api" \
  -H "content-type: application/json" \
  -d '{
    "name": "Newsletter de Março",
    "subject": "Novidades em Março",
    "sender": {
      "name": "Sua Marca",
      "email": "newsletter@suamarca.com"
    },
    "type": "classic",
    "htmlContent": "<html><body>Conteúdo da newsletter aqui...</body></html>",
    "recipients": {
      "listIds": [12, 15]
    },
    "scheduledAt": "2026-03-25T09:00:00+00:00"
  }'

Enviar imediatamente

curl -X POST "https://api.brevo.com/v3/emailCampaigns/{campaignId}/sendNow" \
  -H "api-key: sua-chave-api"

Obter estatísticas da campanha

curl -X GET "https://api.brevo.com/v3/emailCampaigns/{campaignId}" \
  -H "api-key: sua-chave-api"

A resposta inclui:

{
  "statistics": {
    "delivered": 4850,
    "opened": 1455,
    "clicked": 291,
    "unsubscribed": 12,
    "bounces": 150
  }
}

Gerenciamento de contatos

Contatos são as pessoas para quem você envia e-mails. Organize-os em listas e adicione atributos personalizados.

Criar um contato

curl -X POST "https://api.brevo.com/v3/contacts" \
  -H "api-key: sua-chave-api" \
  -H "content-type: application/json" \
  -d '{
    "email": "novo.usuario@example.com",
    "attributes": {
      "FIRSTNAME": "Joana",
      "LASTNAME": "Silva",
      "PLAN": "premium"
    },
    "listIds": [12, 15],
    "updateEnabled": true
  }'

A flag updateEnabled: true atualiza contatos existentes em vez de falhar.

Obter detalhes do contato

curl -X GET "https://api.brevo.com/v3/contacts/usuario@example.com" \
  -H "api-key: sua-chave-api"

Adicionar à lista

curl -X POST "https://api.brevo.com/v3/contacts/lists/12/contacts/add" \
  -H "api-key: sua-chave-api" \
  -H "content-type: application/json" \
  -d '{
    "emails": ["usuario1@example.com", "usuario2@example.com"]
  }'

Remover da lista

curl -X DELETE "https://api.brevo.com/v3/contacts/lists/12/contacts/remove" \
  -H "api-key: sua-chave-api" \
  -H "content-type: application/json" \
  -d '{
    "emails": ["usuario@example.com"]
  }'

Cancelar inscrição de um contato

curl -X PUT "https://api.brevo.com/v3/contacts/usuario@example.com" \
  -H "api-key: sua-chave-api" \
  -H "content-type: application/json" \
  -d '{
    "emailBlacklisted": true
  }'

Marketing por SMS

A Brevo envia mensagens SMS globalmente através de sua API de SMS.

Enviar um SMS

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: sua-chave-api" \
  -H "content-type: application/json" \
  -d '{
    "sender": "SeuApp",
    "recipient": "+15551234567",
    "content": "Seu código de verificação é: 123456",
    "type": "transactional"
  }'

Enviar SMS de marketing

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: sua-chave-api" \
  -H "content-type: application/json" \
  -d '{
    "sender": "SuaMarca",
    "recipient": "+15551234567",
    "content": "Liquidação relâmpago! 50% de desconto hoje. Responda PARAR para cancelar.",
    "type": "marketing"
  }'

Obter estatísticas de SMS

curl -X GET "https://api.brevo.com/v3/transactionalSMS/statistics?startDate=2026-03-01&endDate=2026-03-31" \
  -H "api-key: sua-chave-api"

Webhooks para rastreamento

Webhooks notificam seu aplicativo sobre eventos de e-mail: entregue, aberto, clicado, bounce, cancelado.

Configurar webhooks

No painel da Brevo: Configurações → Webhooks → Adicionar webhook

Eventos para rastrear:

Manipular payload de webhook

app.post('/webhooks/brevo', (req, res) => {
  const event = req.body
  
  switch (event.event) {
    case 'delivered':
      console.log(`E-mail ${event.messageId} entregue para ${event.email}`)
      break
    case 'opened':
      console.log(`E-mail aberto por ${event.email} em ${event.date}`)
      break
    case 'bounced':
      console.log(`Bounce: ${event.email} - ${event.reason}`)
      // Marcar contato como inválido
      markContactBounced(event.email)
      break
    case 'spam':
      console.log(`Reclamação de spam de ${event.email}`)
      // Remover de todas as listas
      removeFromAllLists(event.email)
      break
    case 'unsubscribed':
      console.log(`Cancelado: ${event.email}`)
      break
  }
  
  res.status(200).send('OK')
})

Testando com Apidog

APIs de e-mail têm modos de falha complexos. Você precisa testar modelos, bounces e webhooks. O Apidog ajuda.

1. Simular envio de e-mail

Durante o desenvolvimento, não envie e-mails reais. Simule a resposta:

pm.test('Email API accepts valid payload', () => {
  const response = pm.response.json()
  pm.expect(response).to.have.property('messageId')
  pm.expect(response.messageId).to.match(/<.*@relay\.brevo\.com>/)
})

2. Testar manipulação de webhook

Crie payloads de webhook simulados no Apidog:

{
  "event": "bounced",
  "email": "invalid@example.com",
  "messageId": "<12345@relay.brevo.com>",
  "reason": "hard_bounce",
  "date": "2026-03-24T12:00:00Z",
  "subject": "Bem-vindo à Nossa Plataforma"
}

Envie para o seu endpoint de webhook e verifique se o seu código o manipula.

3. Validar modelos

Armazene payloads de modelo e teste se as variáveis são substituídas corretamente:

pm.test('Template variables are valid', () => {
  const payload = pm.request.body.toJSON()
  pm.expect(payload.params).to.have.property('name')
  pm.expect(payload.params).to.have.property('order_number')
})

4. Separação de ambiente

# Desenvolvimento
BREVO_API_KEY: xkeysib-dev-xxx
BREVO_SENDER: dev@seusite.com

# Produção
BREVO_API_KEY: xkeysib-prod-xxx
BREVO_SENDER: noreply@seusite.com

Teste as APIs de e-mail da Brevo com Apidog - grátis

Erros comuns e soluções

400 Bad Request - Campo obrigatório ausente

Causa: Payload sem campos obrigatórios.

Solução: Verifique a mensagem de erro para detalhes:

{
  "code": "invalid_parameter",
  "message": "sender.email é obrigatório"
}

401 Não autorizado

Causa: Chave de API inválida ou ausente.

Solução: Verifique se o cabeçalho api-key está configurado corretamente. Verifique se a chave não foi revogada.

402 Pagamento Necessário

Causa: Conta excedeu limites ou faltam créditos.

Solução:

429 Muitas Solicitações

Causa: Limite de taxa excedido.

Solução: Implemente um backoff exponencial:

async function sendWithRetry(email, retries = 3) {
  for (let i = 0; i < retries; i++) {
    const response = await sendEmail(email)
    if (response.status === 429) {
      await sleep(Math.pow(2, i) * 1000)
    } else {
      return response
    }
  }
  throw new Error('Limite de taxa excedido')
}

404 Contato não encontrado

Causa: Tentando atualizar um contato que não existe.

Solução: Use updateEnabled: true ao criar contatos:

{
  "email": "novo@example.com",
  "updateEnabled": true
}

Isso cria ou atualiza o contato.

Alternativas e comparações

Recurso Brevo SendGrid Mailchimp Postmark
Preços 300 e-mails/dia grátis 100 e-mails/dia grátis 500 e-mails/mês grátis 100 e-mails/mês grátis
E-mails de marketing Sim Sim Sim Não
E-mails transacionais Sim Sim Limitado Sim (especializado)
SMS Sim Não Não Não
Automação Sim Sim Sim Limitado
Editor de modelos Visual + código Código Visual Código

A Brevo se destaca pelo suporte combinado de e-mail e SMS a preços competitivos.

Casos de uso reais

Fluxo de pedidos de e-commerce. Uma loja online usa a Brevo para: confirmação de pedido (transacional), notificação de envio (transacional), recuperação de carrinho abandonado (automação de marketing) e promoções semanais (campanhas de marketing). Tudo a partir de uma única integração.

Onboarding SaaS. Uma ferramenta de gerenciamento de projetos envia e-mails de boas-vindas, redefinições de senha e convites de equipe via API transacional. E-mails de marketing anunciam novos recursos para usuários opt-in.

Verificação por SMS. Um aplicativo fintech usa a API de SMS da Brevo para códigos de autenticação de dois fatores. O endpoint de SMS transacional entrega códigos em segundos, e webhooks rastreiam falhas de entrega para lógica de nova tentativa.

Conclusão

Aqui está o que você aprendeu:

Seus próximos passos:

  1. Crie uma conta Brevo e obtenha uma chave de API
  2. Envie seu primeiro e-mail transacional
  3. Crie um modelo no editor visual
  4. Configure manipuladores de webhook para bounces e cancelamentos de inscrição
  5. Teste com Apidog no desenvolvimento

Teste as APIs de e-mail da Brevo com Apidog - grátis

button

FAQ

Qual a diferença entre Brevo e Sendinblue?Mesmo produto, novo nome. A Sendinblue mudou a marca para Brevo em 2023. As APIs ainda usam api.brevo.com, mas você verá referências à Sendinblue em documentações mais antigas.

Quantos e-mails posso enviar gratuitamente?300 e-mails por dia no plano gratuito. Isso dá 9.000 e-mails por mês. Para mais, faça upgrade para um plano pago a partir de $25/mês para 20.000 e-mails.

Posso usar a Brevo para cold emails?Tecnicamente sim, mas é arriscado. Cold emails têm altas taxas de bounce e spam. A Brevo monitora a reputação do remetente. Altas taxas de reclamação podem suspender contas. Aqueça seu domínio primeiro e siga as melhores práticas de e-mail.

Como lidar com bounces de e-mail?Monitore webhooks de bounced. Hard bounces (e-mail inválido) devem remover contatos permanentemente. Soft bounces (caixa de entrada cheia, problemas temporários) podem ser retentados. Acompanhe a taxa de bounce - se exceder 5%, sua reputação de remetente cai.

Qual a diferença entre e-mails de marketing e transacionais?E-mails transacionais são acionados por ações do usuário (compras, cadastros) e vão para um destinatário. E-mails de marketing são campanhas enviadas para muitos destinatários simultaneamente. A Brevo os separa por motivos de entregabilidade e conformidade.

Como adicionar um link de cancelamento de inscrição?A Brevo adiciona automaticamente links de cancelamento de inscrição a e-mails de marketing. Para e-mails transacionais, adicione seu próprio link:

<a href="{{ unsubscribe_url }}">Cancelar inscrição</a>

Posso enviar e-mails do meu próprio domínio?Sim. Configure registros SPF, DKIM e DMARC. A Brevo fornece os valores em Configurações → Remetente & IP. Sem a autenticação adequada, os e-mails podem cair na caixa de spam.

Como agendar e-mails em um fuso horário específico?Use o parâmetro scheduledAt com um timestamp ISO 8601:

{
  "scheduledAt": "2026-03-25T09:00:00-05:00"
}

O que acontece se eu atingir o limite de taxa?Você receberá um erro 429. A resposta inclui o cabeçalho X-RateLimit-Reset com os segundos até o reset. Implemente um backoff exponencial ou enfileire os e-mails para mais tarde.

Pratique o design de API no Apidog

Descubra uma forma mais fácil de construir e usar APIs