Cómo Integrar la API de Vecsy con n8n: Genera y Comparte Imágenes Automáticamente
Aprende a automatizar la generación y el envío de imágenes personalizadas usando la API de Vecsy y n8n, ideal para eventos y marketing digital.
Emitir certificados manualmente es uno de los procesos más fáciles de automatizar — y uno de los que más persisten manuales por falta de una solución sencilla. Alguien termina un curso, finaliza una capacitación o participa en un evento, y alguien del equipo tiene que abrir un archivo, completar los datos y enviar.
Con la API de Vecsy conectada a n8n, este proceso se convierte en un flujo automático: llega el disparador (finalización, inscripción confirmada, presencia registrada), el certificado se genera con los datos del participante y se entrega por email o WhatsApp sin ninguna interacción manual.
Este tutorial muestra cómo montar esto desde cero.
La plantilla es la base de todo. En el editor de Vecsy, arma el diseño del certificado con tu identidad visual y define qué campos variarán por participante.
Para un certificado de finalización de curso, los campos más comunes son:
CampoTipoEjemplonombreTextoAna SouzacursoTextoAutomatización con APIsfechaTexto30/05/2025fotoImagenURL pública de la fotocargoTextoDesarrolladoraempresaTextoAcme Corp
No necesitas usar todos — configura solo los que tengan sentido para tu caso. Lo importante es que cada campo definido en la plantilla debe ser enviado en la llamada a la API, de lo contrario la solicitud devuelve error 400.
Después de configurar, anota el UUID de la plantilla. Aparece en la URL de la plantilla o en la sección de API de la plataforma.
El flujo de certificados tiene esta estructura básica:
[Trigger] → [HTTP Request: Vecsy API] → [Envío al participante]
Con un paso opcional de almacenamiento entre la generación y el envío:
[Trigger] → [HTTP Request: Vecsy API] → [Guardar en Drive/S3] → [Envío al participante]
Vamos a montar cada parte.
Elige el trigger según cómo sepas que un certificado debe ser emitido.
Úsalo cuando tu plataforma o sistema pueda hacer un POST al completar un curso o evento. Añade el nodo Webhook en n8n:
/certificadoPayload esperado:
json
{
"nombre": "Ana Souza",
"curso": "Automatización con APIs",
"fecha": "30/05/2025",
"foto": "https://ejemplo.com/fotos/ana.jpg",
"email": "ana@ejemplo.com"
}
Úsalo cuando registres finalizaciones en una hoja de cálculo. Añade el nodo Google Sheets → On Row Added y mapea las columnas a las variables del flujo. Funciona bien para operaciones donde el control de finalizaciones se hace manualmente por un equipo.
Añade un nodo HTTP Request después del trigger con la siguiente configuración:
CampoValorMethodPOSTURLhttps://www.vecsy.co/api/generate-imageAuthenticationHeader AuthHeader nameAuthorizationHeader valueBearer TU_TOKEN_AQUIBody Content TypeJSON
Cuerpo de la solicitud:
json
{
"template_uuid": "TU_UUID_AQUI",
"file_format": "pdf",
"nombre": "{{ $json.nombre }}",
"curso": "{{ $json.curso }}",
"fecha": "{{ $json.fecha }}",
"foto": "{{ $json.foto }}"
}
Algunas notas sobre los parámetros:
file_format: usa pdf para certificados (más adecuado para documentos formales) o png si quieres una imagen para compartir en redes sociales. El valor por defecto es png.Respuesta exitosa (HTTP 200):
json
{
"url": "https://…/certificado-ana-souza.pdf",
"key": "uploads/api/generate-image/…",
"format": "pdf"
}
El campo url es el enlace temporal al archivo generado. Úsalo en los siguientes nodos.
Si necesitas archivar los certificados o el enlace temporal de Vecsy puede expirar antes del envío, añade un nodo de almacenamiento entre la generación y la entrega.
Añade el nodo Google Drive → Upload File:
{{ $json.url }}Certificado - {{ $('Webhook').item.json.nombre }}.pdfDespués de la subida, tendrás un enlace permanente de Drive para usar en el email.
Añade el nodo AWS S3 → Upload y pasa la URL del archivo. Útil cuando los certificados forman parte de un producto digital que necesita un enlace permanente.
Añade el nodo Send Email (o Gmail):
{{ $('Webhook').item.json.email }}¡Tu certificado está listo, {{ $('Webhook').item.json.nombre }}!html
Hola, {{ $('Webhook').item.json.nombre }}!
Felicitaciones por completar {{ $('Webhook').item.json.curso }}. Tu certificado está disponible en el siguiente enlace:
El enlace expirará pronto. Recomendamos guardar el archivo lo antes posible.
json
{
"number": "{{ $('Webhook').item.json.phone }}",
"mediaUrl": "{{ $json.url }}",
"caption": "¡Felicidades, {{ $('Webhook').item.json.nombre }}! Aquí tienes tu certificado de finalización de {{ $('Webhook').item.json.curso }}. 🎓"
}
Añade un nodo IF después del HTTP Request de Vecsy para verificar si la generación fue exitosa antes de continuar:
{{ $json.url }} existe y no está vacío → verdadero → sigue al envíoErrores principales de la API:
CódigoCausaQué hacer401Token inválido o ausenteVerificar el header Authorization400Campo faltante o inválidoRevisar que todos los campos de la plantilla estén siendo enviados404Plantilla no encontrada o no está en ReadyVerificar UUID y estado de la plantilla en Vecsy
[Webhook / Google Sheets]
↓
[HTTP Request → Vecsy API]
↓
[IF: url existe?]
↓ sí ↓ no
[Guardar Drive/S3] [Alerta para el equipo]
↓
[Envío por Email / WhatsApp]
El verdadero beneficio aparece cuando el volumen aumenta. Una plataforma que emite 50 certificados al mes lo resuelve manualmente sin problema. Con 500 al mes, el proceso empieza a ser pesado. Con 5.000, o automatizas o necesitas a alguien dedicado solo para eso.
Con este flujo en marcha, cada finalización genera y entrega el certificado en segundos — sin importar si es a las 3 de la mañana o en medio de un feriado.
¿Quieres configurar la API de Vecsy en tu flujo? Habla con el equipo para obtener acceso y resolver dudas sobre la integración. Solicita acceso a la API →
Continue lendo sobre temas similares
Aprende a automatizar la generación y el envío de imágenes personalizadas usando la API de Vecsy y n8n, ideal para eventos y marketing digital.
Descubre por qué los desarrolladores están cambiando de Bannerbear a la API de Vecsy para generación de imágenes a gran escala, optimizando costos y eficiencia.