Saltar al contenido principal

Enviar Email

Envía un correo transaccional usando una plantilla o HTML puro.

Endpoint

POST /api/v1/send

Autenticación: Secret Key (sdk_...)

Parámetros de Petición

CampoTipoRequeridoDescripción
email o tostringCorreo del destinatario.
templatestring*Nombre de la plantilla (ej. welcome).
htmlstring*Contenido HTML (si no usas template).
subjectstringNoSobrescribir 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": "usuario@ejemplo.com",
"template": "welcome",
"data": { "name": "Desarrollador" }
}'

Usando HTML Puro

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

Respuesta

Éxito (200)

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

Error (400)

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

Plantillas del Sistema

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

  • verification: Para códigos de verificación de email.
  • 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 Handlebars completa:

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