Programar Envíos
Envío programado con scheduled_at y timezone en POST /send-email — timestamps ISO 8601 con offset, lenguaje natural en inglés, zonas IANA, error 400 por fechas pasadas, respuesta scheduled_send_id/scheduled_for y limitaciones (un destinatario, sin adjuntos).
La API de ReallyQuickEmails permite programar el envío de correos para una fecha y hora futura usando el endpoint POST /send-email. Puedes especificar la fecha de envío con timestamps ISO 8601 o con lenguaje natural en inglés.
Para programar envíos masivos,
POST /v1/send-batchtambién aceptascheduled_aten formato ISO 8601. Ver API Pública v1.
Campos relevantes
| Campo | Tipo | Descripción |
|---|---|---|
scheduled_at | string | Fecha y hora de envío. Acepta ISO 8601 o lenguaje natural en inglés. |
timezone | string | Nombre de zona horaria IANA. Opcional; solo aplica cuando scheduled_at es lenguaje natural. |
Formato de scheduled_at
Timestamps ISO 8601
Puedes especificar una fecha y hora exacta en formato ISO 8601. Incluye siempre el offset de zona horaria (o Z para UTC) — es la forma recomendada de programar un instante exacto:
"2026-10-16T15:00:00+09:00"
"2026-12-25T09:00:00-03:00"
"2027-01-15T08:30:00Z"Cuando scheduled_at es un timestamp ISO 8601 con offset, el campo timezone se ignora: el offset del timestamp determina el instante de envío.
Lenguaje natural
También puedes usar expresiones en lenguaje natural (en inglés). La API las interpreta en relación al momento actual:
"tomorrow at 3pm"
"in 2 hours"
"next monday at 9am"Cuando usas lenguaje natural, el campo timezone (nombre IANA) define la zona horaria en la que se confirma la programación (scheduled_for_local en la respuesta). Si no se especifica, se usa la zona horaria por defecto del proyecto (default_timezone); si el proyecto no tiene una configurada, se asume UTC.
Verifica siempre el campo scheduled_for (UTC) de la respuesta para confirmar el instante exacto de envío. Si necesitas precisión absoluta, usa un timestamp ISO 8601 con offset.
Formato de timezone
El campo timezone acepta nombres de zona horaria IANA:
| Formato | Ejemplo |
|---|---|
| Nombre IANA | "America/Santiago", "Asia/Tokyo", "Europe/Madrid" |
| UTC | "UTC" |
Para programar con un offset UTC fijo (por ejemplo -03:00), inclúyelo directamente en el timestamp ISO 8601 de scheduled_at en lugar de usar el campo timezone.
Si no se incluye timezone en la solicitud, la API usa el valor de default_timezone configurado en el proyecto, o UTC si no hay uno configurado.
Validacion
La fecha programada debe ser en el futuro. Si scheduled_at resuelve a una fecha en el pasado, la API retorna 400 Bad Request con el mensaje scheduled_at must be in the future.
Procesamiento
Los correos programados se procesan en segundo plano cada 30 segundos. Esto significa que un correo programado puede enviarse hasta 30 segundos después de la hora programada.
Limitaciones
- Un destinatario por envío programado. Si
recipientes un array, solo se programa el envío al primer destinatario. cc,bcc,attachmentsysenderNameno se conservan en envíos programados — solo aplican a envíos inmediatos.- El contenido se define con
html+subject, o contemplateId(UUID de una plantilla). El objetodatacon variables sí se conserva y se aplica al momento del envío.
Respuesta
Cuando se programa un correo exitosamente, la respuesta incluye los siguientes campos:
| Campo | Descripción |
|---|---|
success | true si la solicitud fue aceptada. |
scheduled | true cuando el correo quedó programado (en lugar de encolado para envío inmediato). |
scheduled_send_id | UUID del correo programado. |
scheduled_for | Fecha y hora de envío en UTC (ISO 8601). |
scheduled_for_local | Fecha y hora de envío en ISO 8601 con el offset de la zona horaria usada. |
timezone | Zona horaria utilizada: nombre IANA, o etiqueta de offset (ej. "UTC+9") cuando viene del timestamp ISO. |
message | Mensaje de confirmación (en inglés). |
Ejemplos
Programar con timestamp ISO 8601
curl -X POST https://api.reallyquickemails.com/send-email \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk_proj_xxxxxxxxxxxx" \
-d '{
"recipient": "cliente@ejemplo.com",
"sender": "ventas@mitienda.com",
"subject": "Recordatorio de cita",
"html": "<p>Te recordamos tu cita de manana a las 15:00.</p>",
"scheduled_at": "2026-10-16T15:00:00+09:00"
}'Respuesta:
{
"success": true,
"scheduled": true,
"scheduled_send_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"scheduled_for": "2026-10-16T06:00:00.000Z",
"scheduled_for_local": "2026-10-16T15:00:00.000+09:00",
"timezone": "UTC+9",
"message": "Email scheduled for October 16, 2026 at 3:00 PM GMT+9"
}Programar con lenguaje natural y zona horaria
curl -X POST https://api.reallyquickemails.com/send-email \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk_proj_xxxxxxxxxxxx" \
-d '{
"recipient": "cliente@ejemplo.com",
"sender": "ventas@mitienda.com",
"subject": "Oferta especial",
"html": "<p>Aprovecha nuestra oferta especial de esta semana.</p>",
"scheduled_at": "tomorrow at 3pm",
"timezone": "America/Santiago"
}'Respuesta (valores ilustrativos — dependen del momento de la solicitud):
{
"success": true,
"scheduled": true,
"scheduled_send_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"scheduled_for": "2026-06-06T19:00:00.000Z",
"scheduled_for_local": "2026-06-06T15:00:00.000-04:00",
"timezone": "America/Santiago",
"message": "Email scheduled for June 6, 2026 at 3:00 PM GMT-4"
}Programar con offset numerico
El campo timezone solo acepta nombres IANA. Para programar con un offset UTC fijo, especifica el offset directamente en el timestamp ISO 8601:
curl -X POST https://api.reallyquickemails.com/send-email \
-H "Content-Type: application/json" \
-H "Authorization: Bearer sk_proj_xxxxxxxxxxxx" \
-d '{
"recipient": "cliente@ejemplo.com",
"sender": "ventas@mitienda.com",
"subject": "Seguimiento",
"html": "<p>Hacemos seguimiento de tu solicitud.</p>",
"scheduled_at": "2026-10-20T09:00:00-03:00"
}'Respuesta:
{
"success": true,
"scheduled": true,
"scheduled_send_id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
"scheduled_for": "2026-10-20T12:00:00.000Z",
"scheduled_for_local": "2026-10-20T09:00:00.000-03:00",
"timezone": "UTC-3",
"message": "Email scheduled for October 20, 2026 at 9:00 AM GMT-3"
}