Introducción
API de email transaccional y campañas de ReallyQuickEmails — base URL, autenticación Bearer (sk_proj_/sk_live_/sk_test_), POST /v1/send-email, /v1/send-template-email, /v1/send-batch, leads, events, activity, dominios, webhooks firmados, inbound replies, automatizaciones, SDK Node.js y acceso markdown para agentes IA (/llms.txt, /llms-full.txt).
ReallyQuickEmails (RQE) es la API para enviar emails transaccionales y campañas masivas: una llamada HTTP y tu primer email está en camino.
Tu primer email
curl -X POST https://api.reallyquickemails.com/v1/send-email \
-H "Authorization: Bearer sk_proj_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"recipient_email": "usuario@ejemplo.com",
"sender_email": "hola@tudominio.com",
"subject": "Hola desde ReallyQuickEmails",
"html_body": "<h1>Hola</h1><p>Mi primer email con RQE.</p>"
}'Respuesta exitosa (200):
{
"message": "Email sent successfully",
"email_id": "550e8400-e29b-41d4-a716-446655440000",
"project_id": "123e4567-e89b-12d3-a456-426614174000"
}email_id identifica el envío: úsalo para consultar su estado en Activity y correlacionar los eventos que llegan a tus webhooks. El sender_email debe pertenecer a un dominio verificado.
Para desarrollo usa tu key sk_test_*: el email se envía de verdad (puedes probar render y deliverability), pero queda marcado con is_test: true y separado de tus métricas de producción. Detalle en Modos Live y Test.
Tres pasos al primer email
Obtén tu API key
En el dashboard, entra a tu proyecto y abre Configuración → Integraciones → API Keys. Copia la Test key (sk_test_*) para desarrollo, o la Live key (sk_proj_* / sk_live_*) para producción. Más detalle en API Keys.
Envía el curl
Reemplaza sender_email por un remitente de tu dominio verificado y recipient_email por tu propio email. Si la respuesta es 200 con email_id, el envío quedó en camino.
Verifica el resultado
Consulta el estado del envío en Activity del dashboard o vía GET /v1/activity/:id (referencia). Para recibir los eventos en tu servidor (entrega, apertura, click, respuesta), configura tus webhooks.
Lo esencial
| Base URL | https://api.reallyquickemails.com |
| Autenticación | Header Authorization: Bearer <api_key> en todos los endpoints |
| Formato | JSON — Content-Type: application/json |
| API keys | sk_proj_* y sk_live_* (producción) · sk_test_* (modo de prueba) |
| SDK oficial | @reallyquickemails/sdk para Node.js / TypeScript |
Qué puedes construir
Emails transaccionales
Lo que acabas de ver: POST /v1/send-email envía a hasta 50 destinatarios con cc/bcc y adjuntos, y POST /v1/send-template-email usa plantillas pre-configuradas con variables. Referencia completa en API Pública v1.
Campañas y envío masivo
POST /v1/send-batch acepta hasta 10,000 destinatarios por request, con variables Handlebars por destinatario vía recipients[].data:
curl -X POST https://api.reallyquickemails.com/v1/send-batch \
-H "Authorization: Bearer sk_proj_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"sender": "noticias@tudominio.com",
"senderName": "Mi Empresa",
"subject": "Oferta especial para ti, {{nombre}}",
"html": "<h1>Hola {{nombre}}!</h1><p>Tenemos una oferta en {{producto}}.</p>",
"recipients": [
{ "email": "juan@ejemplo.com", "data": { "nombre": "Juan", "producto": "Plan Pro" } },
{ "email": "maria@ejemplo.com", "data": { "nombre": "Maria", "producto": "Plan Business" } }
]
}'Soporta idempotencia (header Idempotency-Key), previsualización con dry_run y envío programado con scheduled_at (ISO 8601). Ver API Pública v1 y Programar envíos.
Automatizaciones
Dispara flujos de emails (onboarding, recuperación de carritos, secuencias) desde tu backend con el SDK de Node.js:
import { RQE } from '@reallyquickemails/sdk';
const rqe = new RQE({ apiKey: process.env.RQE_API_KEY });
// Enroll idempotente — pasa trigger_reference_id para que múltiples calls
// con el mismo external_id NO creen runs duplicados, sino que actualicen el run existente
await rqe.automations.enroll('automation-uuid', {
email: 'user@example.com',
data: { first_name: 'Adriano', plan: 'pro' },
trigger_reference_id: 'order-12345',
});Respuestas entrantes (inbound)
Los emails enviados vía API (POST /v1/send-email, POST /send-email y POST /v1/send-batch) incluyen automáticamente un Reply-To con token único:
Reply-To: "Tu Empresa" <r-{token}@rqe.inbound.reallyquickemails.com>Los clientes de correo muestran el nombre del remitente, no la dirección técnica. Cuando el destinatario responde, la respuesta llega a tu webhook como evento email.inbound — adjuntos incluidos (payload resumido; esquema completo en Webhooks):
{
"event": "email.inbound",
"timestamp": "2026-04-28T22:45:32.299Z",
"project_id": "uuid",
"is_test": false,
"data": {
"from": { "email": "cliente@empresa.com", "name": "Cliente Externo" },
"subject": "Re: Asunto original",
"text_body": "respuesta del cliente",
"attachments": [
{
"filename": "factura.pdf",
"content_type": "application/pdf",
"size": 50826,
"download_url": "https://..."
}
],
"original_outbound": { "activity_id": "uuid", "thread_id": "uuid" }
}
}Solo aplica a envíos hechos vía API — los envíos desde la UI de RQE (campañas, automatizaciones, "enviar prueba") usan el Reply-To del remitente humano para que reciba la respuesta en su inbox.
Endpoints principales
| Método y ruta | Qué hace | Referencia |
|---|---|---|
POST /v1/send-email | Envío individual (hasta 50 destinatarios), cc/bcc, adjuntos | API v1 |
POST /v1/send-template-email | Envío con plantilla pre-configurada y variables | API v1 |
POST /v1/send-batch | Hasta 10,000 destinatarios por request, idempotencia, dry run, scheduled_at | API v1 |
POST /send-email | API avanzada: envío programado con lenguaje natural y timezone | Enviar Email · Scheduling |
/v1/leads (POST · GET · PUT · DELETE) | CRUD de contactos, segmentos, tags y atributos custom | Leads |
POST /v1/events · POST /v1/events/bulk | Tracking de eventos custom (bulk hasta 1,000) | Events |
GET /v1/activity · GET /v1/activity/:id | Estado de envíos, timeline de eventos, filtros | Activity |
POST /domains/register · POST /domains/:domain/verify | Alta y verificación de dominios (DKIM/SPF/DMARC) | Dominios |
Los eventos de entrega (email.send, email.delivery, email.bounce, email.open, email.click, email.inbound, entre otros) llegan a tu servidor vía webhooks firmados con HMAC-SHA256 (header X-RQE-Signature).
Errores comunes
| Código | Mensaje | Solución |
|---|---|---|
401 | Missing or invalid API key. Use: Authorization: Bearer sk_proj_... | Verifica el header Authorization y el prefijo de la key |
400 | Missing required fields: recipient_email, sender_email, html_body | Revisa los campos requeridos del endpoint |
400 | ENVIRONMENT_NOT_CONFIGURED | El environment enviado no está configurado en el proyecto — ver Webhook environments |
404 | Template not found with ID ... | El template_id no existe en el proyecto de esa API key |
Para agentes IA
Esta documentación está optimizada para consumo por LLMs:
/llms.txt— índice de todas las páginas con sus descripciones./llms-full.txt— todo el contenido de la documentación en un solo archivo.- Agrega el sufijo
.mdxa la URL de cualquier página para obtener su markdown crudo — por ejemplo,/api-reference/public-api.mdx. Los clientes que envíanAccept: text/markdownreciben markdown directamente.
Siguientes pasos
Quickstart
De cero a tu primer email enviado en menos de 5 minutos, con la Test key.
SDK de Node.js
@reallyquickemails/sdk — emails, leads, automations, events y senders con tipos TypeScript.
API Keys (Live vs Test)
Prefijos sk_proj_ / sk_live_ / sk_test_, idempotencia y dry run.
Webhooks
Eventos de entrega e inbound replies, verificación HMAC y routing Live/Test.
Templates y variables
Variables, condicionales, loops y helpers que se resuelven al momento del envío.
Envío masivo
POST /v1/send-batch — hasta 10,000 destinatarios con variables por destinatario.
Programar envíos
scheduled_at con ISO 8601 o lenguaje natural en inglés y zonas IANA.
¿Preguntas? Escríbenos a soporte@reallyquickemails.com o consulta las preguntas frecuentes.