Saltar al contenido principal

Enviar Correo

Envía un correo electrónico transaccional usando una plantilla o HTML directo.

Endpoint

POST /api/v1/send

Autenticación: Clave Secreta (sdk_...)

Parámetros de Solicitud

CampoTipoRequeridoDescripción
email o tostringCorreo del destinatario.
templatestring*Nombre de la plantilla (ej. welcome).
htmlstring*Contenido HTML (si no usas template).
subjectstringNoSobrescribir el asunto.
dataobjectNoVariables para reemplazar en la plantilla.
info

Se requiere template O html.

Ejemplos

Usando una Plantilla

curl -X POST https://senddock.dev/api/v1/send \
-H "Authorization: Bearer sdk_..." \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"template": "welcome",
"data": { "name": "Developer" }
}'

Usando HTML Directo

curl -X POST https://senddock.dev/api/v1/send \
-H "Authorization: Bearer sdk_..." \
-H "Content-Type: application/json" \
-d '{
"to": "user@example.com",
"html": "<h1>Hello!</h1>",
"subject": "Direct HTML"
}'
await fetch('https://senddock.dev/api/v1/send', {
method: 'POST',
headers: {
'Authorization': 'Bearer sdk_your_api_key',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: 'user@example.com',
template: 'welcome',
data: {
name: 'John',
activationLink: 'https://...'
}
})
});

Respuesta

Éxito (200)

{
"success": true,
"data": {
"message": "Email sent successfully",
"template": "welcome-email",
"to": "user@example.com"
}
}

Error (400)

{
"success": false,
"error": "Missing required field: email"
}

Plantillas del Sistema

Si no has creado una plantilla personalizada en el panel, puedes usar estas plantillas integradas:

  • verification: Para códigos de verificación de correo.
  • welcome: Un correo de bienvenida genérico.
  • purchase_confirmation: Confirmación de pedido simple.
  • credentials: Para enviar contraseñas temporales o credenciales.

Sintaxis de Plantillas (Handlebars)

Soportamos sintaxis completa de Handlebars:

  • Variables: {{name}}
  • Condicionales: {{#if premium}} ... {{/if}}
  • Bucles: {{#each items}} {{this.name}} {{/each}}