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-batch también acepta scheduled_at en formato ISO 8601. Ver API Pública v1.

Campos relevantes

CampoTipoDescripción
scheduled_atstringFecha y hora de envío. Acepta ISO 8601 o lenguaje natural en inglés.
timezonestringNombre 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:

text
"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:

text
"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:

FormatoEjemplo
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 recipient es un array, solo se programa el envío al primer destinatario.
  • cc, bcc, attachments y senderName no se conservan en envíos programados — solo aplican a envíos inmediatos.
  • El contenido se define con html + subject, o con templateId (UUID de una plantilla). El objeto data con 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:

CampoDescripción
successtrue si la solicitud fue aceptada.
scheduledtrue cuando el correo quedó programado (en lugar de encolado para envío inmediato).
scheduled_send_idUUID del correo programado.
scheduled_forFecha y hora de envío en UTC (ISO 8601).
scheduled_for_localFecha y hora de envío en ISO 8601 con el offset de la zona horaria usada.
timezoneZona horaria utilizada: nombre IANA, o etiqueta de offset (ej. "UTC+9") cuando viene del timestamp ISO.
messageMensaje de confirmación (en inglés).

Ejemplos

Programar con timestamp ISO 8601

bash
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:

json
{
  "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

bash
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):

json
{
  "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:

bash
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:

json
{
  "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"
}