Ir al contenido

Enviar un correo

POST
/v1/mail/send
curl --request POST \
--url https://api.mailerdash.com/v1/mail/send \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "send_at": "2026-08-15T09:00:00Z", "personalizations": [ { "to": [ { "email": "recipient@example.com", "name": "Recipient Name" } ], "cc": [ { "email": "cc@example.com", "name": "CC Name" } ], "bcc": [ { "email": "bcc@example.com", "name": "BCC Name" } ], "subject": "Asunto específico de este destinatario", "headers": { "additionalProperty": "example" } } ], "from": { "email": "no-reply@example-domain.com", "name": "Service Name" }, "subject": "Email subject", "content": [ { "type": "text/plain", "value": "Hello world" } ], "reply_to": { "email": "reply@example-domain.com", "name": "Reply Name" }, "headers": { "additionalProperty": "example" }, "attachments": [ { "content": "JVBERi0xLjQgZmFjdHVyYSBkZW1v", "filename": "invoice-123.pdf", "type": "application/pdf", "content_id": "logo@inv" } ] }'

Envía un correo usando un payload tipo SendGrid. Requiere API key en el header Authorization.

X-Xilo-Test
string

Modo sandbox. Se activa con true, 1, yes u on (sin distinguir mayusculas); cualquier otro valor envia normalmente. Valida la peticion COMPLETA (auth, dominio, formato, destinatarios, supresiones, reputacion, limite de destinatarios) y se detiene justo antes de cobrar la cuota y entregar el mensaje: no sale ningun correo, no se consume cuota y no cuenta para las estadisticas. La respuesta trae sandbox: true y un message_id con prefijo sandbox-. Solo un “si” explicito lo activa: X-Xilo-Test: false envia de verdad, para que un header vestigial no apague los envios en produccion sin que nadie lo note. Las peticiones en sandbox ignoran Idempotency-Key en los dos sentidos: no guardan su respuesta (probar con una clave y despues mandar de verdad con la misma devolveria la respuesta de la prueba y ningun correo) ni leen la de un envio real.

Media type application/json
object
send_at

Programa el envío para esa fecha (ISO 8601, hasta 90 días). Omitir para enviar de inmediato. Devuelve 202 con el id del envío programado en lugar de enviarlo. Los permisos se re-evalúan al disparar: si entre el agendado y la fecha vence la gracia del dominio o se suspende la cuenta, el envío se descarta. Programar no reserva cuota. Solo admite UNA personalización — para varios destinatarios, usar una campaña.

string format: date-time
Example
2026-08-15T09:00:00Z
personalizations
required
Array<object>
>= 1 items <= 1000 items
object
to
required
Array<object>
>= 1 items
object
email
required
string format: email
Example
recipient@example.com
name
string
Example
Recipient Name
cc

Copia (CC). Misma validación, supresión y cobro de cuota que to.

Array<object>
object
email
required
string format: email
Example
cc@example.com
name
string
Example
CC Name
bcc

Copia oculta (BCC). Misma validación, supresión y cobro de cuota que to.

Array<object>
object
email
required
string format: email
Example
bcc@example.com
name
string
Example
BCC Name
subject

Override del subject para esta personalización. Si falta, se usa el subject de nivel mensaje.

string
>= 1 characters
Example
Asunto específico de este destinatario
headers

Headers personalizados para esta personalización. X-Xilo-Channel se ignora (el canal transaccional no se puede sobrescribir).

object
key
additional properties
string
from
required
object
email
required
string format: email
Example
no-reply@example-domain.com
name
string
Example
Service Name
subject
required
string
>= 1 characters
Example
Email subject
content
required
Array<object>
>= 1 items
object
type
required
string
Allowed values: text/plain text/html
Example
text/plain
value
required
string
Example
Hello world
reply_to
object
email
required
string format: email
Example
reply@example-domain.com
name
string
Example
Reply Name
headers

Headers personalizados a nivel mensaje. X-Xilo-Channel se ignora — el canal transaccional no se puede sobrescribir. Los headers por-personalización tienen precedencia sobre estos.

object
key
additional properties
string
attachments

Archivos adjuntos codificados en base64 (p.ej. facturas PDF, imágenes inline). Límites por defecto: 10MB por adjunto y 20MB en total (env MAX_ATTACHMENT_MB / MAX_TOTAL_ATTACHMENTS_MB), 413 al excederlos. El body JSON completo está topado por MAX_JSON_MB (15MB por defecto), suficiente para un adjunto de 10MB (base64 infla ~33% → ~13.3MB).

Array<object>
object
content
required

Contenido del archivo codificado en base64.

string
>= 1 characters
Example
JVBERi0xLjQgZmFjdHVyYSBkZW1v
filename
required
string
>= 1 characters
Example
invoice-123.pdf
type

MIME type del adjunto (Content-Type).

string
Example
application/pdf
content_id

CID para adjuntos inline: referenciar como cid:<content_id> dentro del HTML.

string
Example
logo@inv

Accepted – message queued for delivery

Media type application/json
object
message
string
app
string
request_id
string
sandbox
boolean
items
Array<object>
object
personalization_index
integer
status
string
Allowed values: queued failed skipped suppressed rejected
message_id

En sandbox lleva prefijo sandbox-, para que se note que no corresponde a ningun correo si termina guardado.

string
sandbox
boolean
error
string
Example
{
"message": "accepted",
"app": "example-app",
"sandbox": true,
"items": [
{
"status": "queued"
}
]
}

Invalid JSON or request body

Media type application/json
object
message
string
Example
{
"message": "Invalid JSON body"
}

Missing or invalid API key

From domain not authorized

Internal server error