Desarrolladores · Capítulo 08
Enviar emails
Enviar correos desde la API con adjuntos base64, archivos o PDFs de documentos
08 - Enviar emails
sendEmail permite enviar correos desde una instancia Beply usando la configuracion SMTP del propio servicio. Es el endpoint pensado para automatizaciones como enviar la factura al cliente, remitir un presupuesto firmado o mandar un justificante adjunto desde tu software.
A diferencia del CRUD generico, este endpoint recibe JSON.
Peticion
POST https://<tu-instancia>.beply.es/api/3/sendEmail
Content-Type: application/json
Token: <tu-api-key>
Body
| Campo | Tipo | Requerido | Descripcion |
|---|---|---|---|
to | string o string[] | Si | Destinatario principal. Acepta un email o un array de emails |
subject | string | Si | Asunto del correo |
body | string | Si | Cuerpo del correo. Puede contener HTML |
cc | string o string[] | No | Copia visible |
bcc | string o string[] | No | Copia oculta |
replyTo | string | No | Email de respuesta |
attachments | array | No | Adjuntos. Ver tipos soportados abajo |
Ejemplo minimo
curl https://example.beply.es/api/3/sendEmail \
-H "Token: a1b2c3d4..." \
-H "Content-Type: application/json" \
--data '{
"to": "cliente@example.com",
"subject": "Gracias por tu compra",
"body": "<p>Hemos recibido tu pedido correctamente.</p>"
}'
Enviar una factura PDF adjunta
Para adjuntar un documento Beply como PDF usa type: "document". El PDF se genera en el momento con el mismo motor de exportacion que usa el panel.
curl https://example.beply.es/api/3/sendEmail \
-H "Token: a1b2c3d4..." \
-H "Content-Type: application/json" \
--data '{
"to": "cliente@example.com",
"subject": "Factura FAC2026A1",
"body": "<p>Adjuntamos tu factura en PDF.</p>",
"attachments": [
{
"type": "document",
"modelClassName": "FacturaCliente",
"modelCode": "1",
"format": 0,
"lang": "es_ES"
}
]
}'
modelCodees el ID interno del documento (idfactura,idpresupuesto, etc.), no necesariamente el codigo visible impreso comoFAC2026A1.
Tipos de adjunto
Documento Beply convertido a PDF
{
"type": "document",
"modelClassName": "FacturaCliente",
"modelCode": "1",
"format": 0,
"lang": "es_ES"
}
Modelos soportados:
| Documento | modelClassName |
|---|---|
| Factura de cliente | FacturaCliente |
| Factura de proveedor | FacturaProveedor |
| Albaran de cliente | AlbaranCliente |
| Albaran de proveedor | AlbaranProveedor |
| Pedido de cliente | PedidoCliente |
| Pedido de proveedor | PedidoProveedor |
| Presupuesto de cliente | PresupuestoCliente |
| Presupuesto de proveedor | PresupuestoProveedor |
Campos opcionales:
| Campo | Descripcion |
|---|---|
format | ID numerico de formato de impresion. 0 usa el formato predeterminado |
lang | Codigo de idioma. Si se omite, Beply intenta usar el idioma del sujeto del documento |
Archivo ya subido a Beply
Si antes subiste un archivo con uploadFiles, puedes adjuntarlo por idfile:
{
"type": "attachedFile",
"idfile": 432
}
Ver 06 - Archivos adjuntos para subir y vincular archivos.
Contenido base64
Para adjuntar un archivo generado por tu integracion:
{
"type": "base64",
"filename": "resumen.txt",
"content": "SG9sYSwgY2xpZW50ZQ=="
}
content debe ser base64 valido. Beply sanea el nombre del archivo antes de adjuntarlo.
Respuesta de exito
{
"status": "success",
"message": "email-sent-successfully",
"data": {
"uuid": "itbHCk7lGqOASWSxr3uG",
"recipients": ["cliente@example.com"],
"attachments": ["FAC2026A1.pdf"],
"sent_at": "2026-06-01 13:30:21"
}
}
| Campo | Significado |
|---|---|
data.uuid | Codigo interno de verificacion del envio |
data.recipients | Destinatarios principales normalizados |
data.attachments | Nombres de los adjuntos enviados |
data.sent_at | Fecha/hora de envio generada por el servidor |
Seguridad de documentos y archivos
Con una API key de acceso completo (fullaccess) puedes adjuntar documentos y archivos de la instancia.
Con una API key limitada, Beply solo permite adjuntar:
- documentos cuyo
nickcoincida con el usuario de la API key; - archivos vinculados a ese usuario por una relacion interna de Beply;
- adjuntos autorizados por una capability firmada de plataforma.
Si el adjunto no cumple estas reglas, la API devuelve 500 SEND_ERROR y el motivo queda registrado en los logs internos. Esta restriccion evita que conceder permiso a sendEmail permita extraer documentos arbitrarios.
Requisitos SMTP
La instancia debe tener el envio de correo configurado en FacturaScripts/Beply. Si no hay SMTP o el servidor no puede conectar con el proveedor de correo, el endpoint devuelve email-send-failed.
En servicios Beply SaaS, la plataforma debe permitir salida SMTP a los puertos habituales 465 o 587.
Errores habituales
| HTTP | message | Causa |
|---|---|---|
400 | invalid-json-body | Body vacio, JSON invalido o Content-Type incorrecto |
400 | to-is-required | Falta to |
400 | subject-is-required | Falta subject |
400 | body-is-required | Falta body |
400 | invalid-email-address: ... | Email de destinatario no valido |
400 | attachments-must-be-array | attachments no es un array |
400 | attachment[0]: invalid type ... | Tipo de adjunto distinto de document, base64 o attachedFile |
400 | attachment[0]: invalid modelClassName... | Modelo de documento no soportado |
500 | email-send-failed | SMTP sin configurar, fallo de envio, documento inexistente o adjunto no autorizado |
Ver 07 - Errores y validaciones para la estructura comun de errores.
Flujo recomendado
- Crea o localiza el documento con la API (
crearFacturaCliente,facturaclientes, etc.). - Guarda su ID interno (
idfactura,idpresupuesto, etc.). - Llama a
sendEmailcon un adjuntodocument. - Guarda
data.uuiden tu sistema para trazabilidad del envio.
Siguientes pasos
- 04 - Facturas: crear y exportar facturas
- 05 - Otros documentos: presupuestos, pedidos y albaranes
- 06 - Archivos adjuntos: subir archivos y vincularlos a registros