Solicita acceso anticipado

Indica tu nombre y un email o número de teléfono. Nos pondremos en contacto contigo para darte los detalles de acceso a Tajo.

Enviar un email

Envía emails transaccionales individuales con el endpoint /v3/smtp/email.

Endpoint

POST /v3/smtp/email

Cuerpo de la solicitud

Email básico

{
"sender": {
"name": "Your App",
"email": "[email protected]"
},
"to": [
{
"email": "[email protected]",
"name": "John Doe"
}
],
"subject": "Welcome to our service!",
"htmlContent": "<html><body><h1>Welcome!</h1><p>Thank you for signing up.</p></body></html>"
}

Email avanzado

{
"sender": {
"name": "Your App",
"email": "[email protected]"
},
"to": [
{
"email": "[email protected]",
"name": "John Doe"
}
],
"cc": [
{
"email": "[email protected]",
"name": "CC User"
}
],
"bcc": [
{
"email": "[email protected]"
}
],
"subject": "Order Confirmation #{{order_id}}",
"htmlContent": "<html><body><h1>Order Confirmed</h1><p>Your order {{order_id}} has been confirmed.</p></body></html>",
"textContent": "Your order {{order_id}} has been confirmed.",
"params": {
"order_id": "12345"
},
"tags": ["transactional", "order-confirmation"],
"headers": {
"X-Custom-Header": "custom-value"
}
}

Ejemplos de código

JavaScript/Node.js

const brevo = require('@getbrevo/brevo');
const apiInstance = new brevo.TransactionalEmailsApi();
apiInstance.setApiKey(brevo.TransactionalEmailsApiApiKeys.apiKey, process.env.BREVO_API_KEY);
const sendEmail = async () => {
const sendSmtpEmail = new brevo.SendSmtpEmail();
sendSmtpEmail.subject = "Welcome to our service!";
sendSmtpEmail.htmlContent = "<html><body><h1>Welcome!</h1></body></html>";
sendSmtpEmail.sender = { name: "Your App", email: "[email protected]" };
sendSmtpEmail.to = [{ email: "[email protected]", name: "John Doe" }];
try {
const result = await apiInstance.sendTransacEmail(sendSmtpEmail);
console.log('Email sent:', result);
return result;
} catch (error) {
console.error('Error sending email:', error);
throw error;
}
};

Python

import sib_api_v3_sdk
from sib_api_v3_sdk.rest import ApiException
configuration = sib_api_v3_sdk.Configuration()
configuration.api_key['api-key'] = 'YOUR_API_KEY'
api_instance = sib_api_v3_sdk.TransactionalEmailsApi(sib_api_v3_sdk.ApiClient(configuration))
send_smtp_email = sib_api_v3_sdk.SendSmtpEmail(
to=[{"email": "[email protected]", "name": "John Doe"}],
sender={"name": "Your App", "email": "[email protected]"},
subject="Welcome to our service!",
html_content="<html><body><h1>Welcome!</h1></body></html>"
)
try:
api_response = api_instance.send_transac_email(send_smtp_email)
print(api_response)
except ApiException as e:
print("Exception when calling TransactionalEmailsApi->send_transac_email: %s\n" % e)

cURL

Terminal window
curl -X POST "https://api.brevo.com/v3/smtp/email" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "api-key: YOUR_API_KEY" \
-d '{
"sender": {
"name": "Your App",
"email": "[email protected]"
},
"to": [
{
"email": "[email protected]",
"name": "John Doe"
}
],
"subject": "Welcome to our service!",
"htmlContent": "<html><body><h1>Welcome!</h1></body></html>"
}'

Respuesta

Respuesta correcta (201 Created)

{
"messageId": "<[email protected]>"
}

Respuestas de error

Clave de API no válida (401)

{
"code": "unauthorized",
"message": "Invalid API key provided"
}

Formato de email no válido (400)

{
"code": "invalid_parameter",
"message": "Invalid email format in 'to' field"
}

Límite de tasa superado (429)

{
"code": "too_many_requests",
"message": "Rate limit exceeded"
}

Parámetros

Parámetros obligatorios

ParámetroTipoDescripción
senderobjectDatos del remitente
toarrayArray de objetos de destinatario
subjectstringAsunto del email

Parámetros opcionales

ParámetroTipoDescripción
htmlContentstringContenido HTML del email
textContentstringContenido de texto del email
ccarrayDestinatarios en copia
bccarrayDestinatarios en copia oculta
replyToobjectDirección de respuesta
attachmentsarrayArchivos adjuntos
paramsobjectParámetros de la plantilla
tagsarrayEtiquetas del email para el seguimiento
headersobjectCabeceras personalizadas

Variables de plantilla

Usa variables de plantilla en el asunto y en el contenido:

{
"subject": "Welcome {{firstName}}!",
"htmlContent": "<h1>Hello {{firstName}} {{lastName}}</h1>",
"params": {
"firstName": "John",
"lastName": "Doe"
}
}

Archivos adjuntos

Incluye archivos adjuntos:

{
"attachments": [
{
"content": "base64_encoded_content",
"name": "invoice.pdf"
},
{
"url": "https://example.com/document.pdf",
"name": "document.pdf"
}
]
}

Buenas prácticas

  1. Incluye siempre contenido HTML y de texto para mejorar la entregabilidad
  2. Usa variables de plantilla en lugar de concatenar el contenido
  3. Indica bien los datos del remitente para evitar los filtros de spam
  4. Añade etiquetas para el seguimiento y la analítica
  5. Valida las direcciones de email antes de enviar
  6. Gestiona los errores con elegancia con una lógica de reintentos

Límites de tasa

  • Cuentas gratuitas: 300 emails al día
  • Cuentas de pago: según tu plan
  • Límite de ráfaga: 100 emails por minuto

Seguimiento

Los emails enviados con este endpoint se miden automáticamente en cuanto a:

  • Estado de entrega
  • Tasas de apertura
  • Seguimiento de clics
  • Gestión de rebotes

Consulta la analítica detallada en tu panel de control de Brevo, en StatisticsTransactional.

Endpoints relacionados

Solicita acceso anticipado

Indica tu nombre y un email o número de teléfono. Nos pondremos en contacto contigo para darte los detalles de acceso a Tajo.

detección automática
Asistente AI

¡Hola! Pregúntame lo que quieras sobre la documentación.