Cómo Usar APIs de Brevo para Marketing por SMS

Ashley Innocent

Ashley Innocent

24 March 2026

Cómo Usar APIs de Brevo para Marketing por SMS

Apidog para empresas

Despliegue local

SSO & RBAC

Conforme con SOC 2

Explorar Apidog Enterprise

TL;DR

Las APIs de Brevo te permiten enviar correos electrónicos de marketing, correos transaccionales y mensajes SMS de forma programática. Te autenticas con una clave API, envías solicitudes a api.brevo.com y utilizas webhooks para rastrear la entrega y el engagement. Para pruebas, usa Apidog para validar cargas útiles, probar manejadores de webhooks y asegurarte de que tu integración maneje correctamente los rebotes y las cancelaciones de suscripción.

Introducción

Brevo (anteriormente Sendinblue) procesa millones de correos electrónicos diariamente para más de 500,000 empresas. Maneja campañas de marketing, correos electrónicos transaccionales, marketing por SMS y flujos de trabajo de automatización.

Las APIs de correo electrónico parecen sencillas: enviar un mensaje, listo. Pero los sistemas de correo electrónico de producción necesitan manejar rebotes, quejas de spam, cancelaciones de suscripción y tiempos de entrega. Brevo gestiona esta complejidad para que tú no tengas que hacerlo.

La API cubre tres casos de uso principales:

💡
Si estás integrando el correo electrónico en tu aplicación, Apidog te ayuda a probar plantillas, validar cargas útiles de webhooks y asegurar que tu integración funcione en todos los clientes de correo electrónico. Puedes simular las respuestas de Brevo durante el desarrollo y probar el manejo de errores sin enviar correos electrónicos reales.
button
button

Autenticación y configuración

Obtener una clave API

  1. Inicia sesión en Brevo
  2. Ve a SMTP & API → Claves API
  3. Crea una nueva clave con los permisos apropiados
  4. Guárdala de forma segura

La clave API va en el encabezado api-key:

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

URL base de la API

Todas las solicitudes van a:

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

Límites de tasa

Brevo limita las solicitudes por plan:

Verifica el encabezado X-RateLimit-Remaining para rastrear el uso.

Envío de correos electrónicos transaccionales

Los correos electrónicos transaccionales son mensajes individuales activados por acciones del usuario. Piensa en restablecimientos de contraseña, confirmaciones de pedidos, correos de bienvenida.

Enviar un correo electrónico simple

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "accept: application/json" \
  -H "api-key: tu-clave-api" \
  -H "content-type: application/json" \
  -d '{
    "sender": {
      "name": "Tu Aplicación",
      "email": "noreply@tuapp.com"
    },
    "to": [
      {
        "email": "usuario@ejemplo.com",
        "name": "Juan Pérez"
      }
    ],
    "subject": "Bienvenido a Nuestra Plataforma",
    "htmlContent": "<html><body><h1>¡Bienvenido!</h1><p>Gracias por registrarte.</p></body></html>",
    "textContent": "¡Bienvenido! Gracias por registrarte."
  }'

Respuesta:

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

Uso de plantillas

Crea plantillas en el editor visual de Brevo, luego envíalas por ID:

curl -X POST "https://api.brevo.com/v3/smtp/email" \
  -H "api-key: tu-clave-api" \
  -H "content-type: application/json" \
  -d '{
    "templateId": 15,
    "to": [
      {
        "email": "usuario@ejemplo.com",
        "name": "Juan Pérez"
      }
    ],
    "params": {
      "name": "Juan",
      "order_number": "ORD-12345",
      "tracking_url": "https://seguimiento.ejemplo.com/ORD-12345"
    }
  }'

Las variables de plantilla usan doble llave:

<p>Hola {{params.name}},</p>
<p>Tu pedido {{params.order_number}} ha sido enviado.</p>
<p><a href="{{params.tracking_url}}">Rastrea tu paquete</a></p>

Enviar con adjuntos

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: 'Tu Aplicación', email: 'noreply@tuapp.com' },
    to: [{ email: 'usuario@ejemplo.com' }],
    subject: 'Tu Factura',
    htmlContent: '<p>Adjunto encontrarás tu factura.</p>',
    attachment: [
      {
        name: 'factura.pdf',
        content: contenidoPdfCodificadoBase64
      }
    ]
  })
})

Campañas de marketing

Los correos electrónicos de marketing se envían a listas de contactos. Brevo maneja los enlaces de cancelación de suscripción, la programación y las analíticas.

Crear una campaña

curl -X POST "https://api.brevo.com/v3/emailCampaigns" \
  -H "api-key: tu-clave-api" \
  -H "content-type: application/json" \
  -d '{
    "name": "Boletín de Marzo",
    "subject": "Novedades de Marzo",
    "sender": {
      "name": "Tu Marca",
      "email": "boletin@tumarea.com"
    },
    "type": "classic",
    "htmlContent": "<html><body>Contenido del boletín aquí...</body></html>",
    "recipients": {
      "listIds": [12, 15]
    },
    "scheduledAt": "2026-03-25T09:00:00+00:00"
  }'

Enviar inmediatamente

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

Obtener estadísticas de campaña

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

La respuesta incluye:

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

Gestión de contactos

Los contactos son las personas a las que envías correos electrónicos. Organízalos en listas y añade atributos personalizados.

Crear un contacto

curl -X POST "https://api.brevo.com/v3/contacts" \
  -H "api-key: tu-clave-api" \
  -H "content-type: application/json" \
  -d '{
    "email": "nuevo.usuario@ejemplo.com",
    "attributes": {
      "FIRSTNAME": "Juana",
      "LASTNAME": "Gómez",
      "PLAN": "premium"
    },
    "listIds": [12, 15],
    "updateEnabled": true
  }'

La bandera updateEnabled: true actualiza los contactos existentes en lugar de fallar.

Obtener detalles del contacto

curl -X GET "https://api.brevo.com/v3/contacts/usuario@ejemplo.com" \
  -H "api-key: tu-clave-api"

Añadir a la lista

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

Eliminar de la lista

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

Cancelar suscripción de un contacto

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

Marketing por SMS

Brevo envía mensajes SMS globalmente a través de su API de SMS.

Enviar un SMS

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: tu-clave-api" \
  -H "content-type: application/json" \
  -d '{
    "sender": "TuApp",
    "recipient": "+15551234567",
    "content": "Tu código de verificación es: 123456",
    "type": "transactional"
  }'

Enviar SMS de marketing

curl -X POST "https://api.brevo.com/v3/transactionalSMS/sms" \
  -H "api-key: tu-clave-api" \
  -H "content-type: application/json" \
  -d '{
    "sender": "TuMarca",
    "recipient": "+15551234567",
    "content": "¡Venta flash! 50% de descuento solo hoy. Responde STOP para cancelar suscripción.",
    "type": "marketing"
  }'

Obtener estadísticas de SMS

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

Webhooks para seguimiento

Los webhooks notifican a tu aplicación sobre eventos de correo electrónico: entregado, abierto, clickeado, rebotado, cancelación de suscripción.

Configurar webhooks

En el panel de control de Brevo: Configuración → Webhooks → Añadir webhook

Eventos a rastrear:

Manejar la carga útil del webhook

app.post('/webhooks/brevo', (req, res) => {
  const event = req.body
  
  switch (event.event) {
    case 'delivered':
      console.log(`Correo ${event.messageId} entregado a ${event.email}`)
      break
    case 'opened':
      console.log(`Correo abierto por ${event.email} en ${event.date}`)
      break
    case 'bounced':
      console.log(`Rebote: ${event.email} - ${event.reason}`)
      // Marcar contacto como inválido
      markContactBounced(event.email)
      break
    case 'spam':
      console.log(`Queja de spam de ${event.email}`)
      // Eliminar de todas las listas
      removeFromAllLists(event.email)
      break
    case 'unsubscribed':
      console.log(`Cancelación de suscripción: ${event.email}`)
      break
  }
  
  res.status(200).send('OK')
})

Pruebas con Apidog

Las APIs de correo electrónico tienen modos de fallo complejos. Necesitas probar plantillas, rebotes y webhooks. Apidog ayuda.

1. Simular el envío de correos electrónicos

Durante el desarrollo, no envíes correos electrónicos reales. Simula la respuesta:

pm.test('La API de correo electrónico acepta una carga útil válida', () => {
  const response = pm.response.json()
  pm.expect(response).to.have.property('messageId')
  pm.expect(response.messageId).to.match(/<.*@relay\.brevo\.com>/)
})

2. Probar el manejo de webhooks

Crea cargas útiles de webhook simuladas en Apidog:

{
  "event": "bounced",
  "email": "invalido@ejemplo.com",
  "messageId": "<12345@relay.brevo.com>",
  "reason": "hard_bounce",
  "date": "2026-03-24T12:00:00Z",
  "subject": "Bienvenido a Nuestra Plataforma"
}

Envía a tu endpoint de webhook y verifica que tu código lo maneja.

3. Validar plantillas

Almacena las cargas útiles de las plantillas y prueba que las variables se reemplazan correctamente:

pm.test('Las variables de plantilla son válidas', () => {
  const payload = pm.request.body.toJSON()
  pm.expect(payload.params).to.have.property('name')
  pm.expect(payload.params).to.have.property('order_number')
})

4. Separación de entornos

# Desarrollo
BREVO_API_KEY: xkeysib-dev-xxx
BREVO_SENDER: dev@tuapp.com

# Producción
BREVO_API_KEY: xkeysib-prod-xxx
BREVO_SENDER: noreply@tuapp.com

Prueba las APIs de correo electrónico de Brevo con Apidog - gratis

Errores comunes y soluciones

400 Bad Request - Campo requerido faltante

Causa: La carga útil no tiene campos requeridos.

Solución: Revisa el mensaje de error para detalles específicos:

{
  "code": "invalid_parameter",
  "message": "sender.email es requerido"
}

401 No autorizado

Causa: Clave API inválida o faltante.

Solución: Verifica que el encabezado api-key esté configurado correctamente. Revisa que la clave no haya sido revocada.

402 Pago requerido

Causa: La cuenta ha excedido los límites o faltan créditos.

Solución:

429 Demasiadas solicitudes

Causa: Límite de tasa excedido.

Solución: Implementa retroceso 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('Límite de tasa excedido')
}

404 Contacto no encontrado

Causa: Intentando actualizar un contacto que no existe.

Solución: Usa updateEnabled: true al crear contactos:

{
  "email": "nuevo@ejemplo.com",
  "updateEnabled": true
}

Esto crea o actualiza el contacto.

Alternativas y comparaciones

Característica Brevo SendGrid Mailchimp Postmark
Precios 300 correos/día gratis 100 correos/día gratis 500 correos/mes gratis 100 correos/mes gratis
Correos de marketing No
Correos transaccionales Limitado Sí (especializado)
SMS No No No
Automatización Limitado
Editor de plantillas Visual + código Código Visual Código

Brevo destaca por su soporte combinado de correo electrónico y SMS a precios competitivos.

Casos de uso en el mundo real

Flujo de pedidos de comercio electrónico. Una tienda en línea utiliza Brevo para: confirmación de pedidos (transaccional), notificación de envío (transaccional), recuperación de carritos abandonados (automatización de marketing) y promociones semanales (campañas de marketing). Todo desde una sola integración.

Incorporación a SaaS. Una herramienta de gestión de proyectos envía correos electrónicos de bienvenida, restablecimiento de contraseñas e invitaciones de equipo a través de la API transaccional. Los correos electrónicos de marketing anuncian nuevas funciones a los usuarios suscritos.

Verificación por SMS. Una aplicación fintech utiliza la API de SMS de Brevo para códigos de autenticación de dos factores. El endpoint de SMS transaccional entrega códigos en segundos, y los webhooks rastrean los fallos de entrega para la lógica de reintento.

Conclusión

Esto es lo que has aprendido:

Tus próximos pasos:

  1. Crea una cuenta Brevo y obtén una clave API
  2. Envía tu primer correo electrónico transaccional
  3. Crea una plantilla en el editor visual
  4. Configura manejadores de webhooks para rebotes y cancelaciones de suscripción
  5. Prueba con Apidog en desarrollo

Prueba las APIs de correo electrónico de Brevo con Apidog - gratis

button

Preguntas frecuentes

¿Cuál es la diferencia entre Brevo y Sendinblue?Es el mismo producto, pero con un nuevo nombre. Sendinblue cambió su marca a Brevo en 2023. Las APIs siguen usando api.brevo.com, pero verás referencias a Sendinblue en documentación antigua.

¿Cuántos correos electrónicos puedo enviar gratis?300 correos electrónicos por día en el plan gratuito. Eso son 9,000 correos al mes. Para más, actualiza a un plan de pago que comienza en $25/mes por 20,000 correos.

¿Puedo usar Brevo para correos electrónicos en frío?Técnicamente sí, pero es arriesgado. Los correos electrónicos en frío tienen altas tasas de rebote y spam. Brevo monitorea la reputación del remitente. Altas tasas de quejas pueden suspender las cuentas. Calienta tu dominio primero y sigue las mejores prácticas de correo electrónico.

¿Cómo manejo los rebotes de correo electrónico?Escucha los webhooks de bounced. Los rebotes duros (correo electrónico inválido) deben eliminar contactos permanentemente. Los rebotes suaves (buzón lleno, problemas temporales) pueden ser reintentados. Rastrea la tasa de rebote; si excede el 5%, tu reputación de remitente disminuye.

¿Cuál es la diferencia entre correos electrónicos de marketing y transaccionales?Los correos electrónicos transaccionales son activados por acciones del usuario (compras, registros) y se envían a un solo destinatario. Los correos electrónicos de marketing son campañas enviadas a muchos destinatarios simultáneamente. Brevo los separa por razones de entregabilidad y cumplimiento.

¿Cómo añado un enlace de cancelación de suscripción?Brevo añade automáticamente enlaces de cancelación de suscripción a los correos electrónicos de marketing. Para correos electrónicos transaccionales, añade tu propio enlace:

<a href="{{ unsubscribe_url }}">Cancelar suscripción</a>

¿Puedo enviar correos electrónicos desde mi propio dominio?Sí. Configura los registros SPF, DKIM y DMARC. Brevo proporciona los valores en Configuración → Remitente & IP. Sin la autenticación adecuada, los correos electrónicos pueden terminar en spam.

¿Cómo programo correos electrónicos en una zona horaria específica?Usa el parámetro scheduledAt con una marca de tiempo ISO 8601:

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

¿Qué sucede si alcanzo el límite de tasa?Obtendrás un error 429. La respuesta incluye el encabezado X-RateLimit-Reset con los segundos hasta el reinicio. Implementa retroceso exponencial o encola los correos electrónicos para más tarde.

Practica el diseño de API en Apidog

Descubre una forma más fácil de construir y usar APIs