Actividad de envíos
GET
/v1/activities/sentDescripción
Lista de emails enviados con datos de entrega y engagement. Es la misma consulta que GET /v1/mails — mismos filtros y misma forma de respuesta — expuesta también bajo activities por compatibilidad.
Autenticación
Authorizationbearer tokenheaderobligatorio- API key con scope
mail:read. Formato:Bearer FD.<key_id>.<token>. X-Instance-Slugstringheaderobligatorio
Request
Query params:
start_datestring (date, `YYYY-MM-DD`) | null- Fecha local de inicio.
end_datestring (date, `YYYY-MM-DD`) | null- Fecha local de fin.
tzstring (zona IANA) | null- Zona para interpretar las fechas. Sin valor: zona de la instancia, o UTC.
pageinteger- Página, 1-indexed. Default: 1.
page_sizeinteger- Tamaño de página, 1–100. Default: 20.
msg_idstring | null- Filtra por message ID.
mail_idstring | null- Filtra por mail ID.
sender_idinteger | null- Filtra por
iddel remitente. recipientstring | null- Filtra por email del destinatario - coincidencia exacta por default;
recipient_operator=starts_withla cambia a prefijo. Ver Filtros de texto. recipient_operatorstring, enum: `eq | starts_with`- Operador de coincidencia para
recipient:eq(exacto, default) ostarts_with(el destinatario empieza con el valor dado). Se ignora sirecipientno está presente. custom_msg_idstring | null- Filtra por identificador de mensaje personalizado.
custom_group_codestring | null- Filtra por código de grupo personalizado.
subjectstring | null- Filtra por asunto - coincidencia parcial, insensible a mayúsculas. Ver Filtros de texto.
statusinteger | null- Filtra por estado de entrega (1–7: 1=received, 2=queued, 3=sent, 4=dropped, 5=deferred, 6=bounced, 7=onhold).
openedstring, enum: `all | opened | unopened` | nullopened: solo con aperturas.unopened: entregados sin aperturas.all/omitido: sin filtro.
Response
200 OKDevuelve una página de resultados:
data con los elementos y pagination para pedir la siguiente. Cada elemento tiene los campos que siguen.mail_idstringobligatorio- Identificador del mail.
msg_idstring | null- Identificador del mensaje lógico (compartido entre destinatarios de un mismo envío).
tostringobligatorio- Email del destinatario (uno por fila - ver Descripción).
subjectstringobligatorio- Asunto.
senderstring | null- Email del remitente.
nullcuando el mail no tiene un remitente registrado. statusinteger | null- Estado de entrega: 1=received, 2=queued, 3=sent, 4=dropped, 5=deferred, 6=bounced, 7=onhold.
opensintegerobligatorio- Cantidad de aperturas registradas.
clicksintegerobligatorio- Cantidad de clicks registrados.
received_atstring (date-time) | null- Fecha y hora de recepción.
queued_atstring (date-time) | null- Fecha y hora de encolado en el MTA.
sent_atstring (date-time) | null- Fecha y hora de entrega al MX del destinatario.
schedule_atstring (date-time) | null- Fecha y hora programada de envío, si aplica.
delaynumber | null- Demora de entrega en segundos, desde la recepción hasta
sent_at. custom_msg_idstring | null- Identificador personalizado del mensaje.
custom_group_codestring | null- Código de grupo personalizado.
Nota
Cada elemento tiene los mismos campos que GET /v1/mails.
pagination.total_items puede venir null; has_more siempre está presente.
Notas
- Para exportar el mismo listado completo en CSV/JSON en vez de paginado, ver
GET .../sent/export.
Request
curl -X GET "https://$API_HOST/v1/activities/sent?start_date=2026-07-01&end_date=2026-07-31" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG"
Response
{
"data": [
{
"mail_id": "0190...",
"msg_id": "0190...",
"to": "alice@example.com",
"subject": "Hello from Fidelizador",
"sender": "newsletter@example.com",
"status": 3,
"opens": 1,
"clicks": 0,
"received_at": "2026-05-08T14:22:31Z",
"queued_at": "2026-05-08T14:22:32Z",
"sent_at": "2026-05-08T14:22:33Z",
"schedule_at": null,
"delay": 2.4,
"custom_msg_id": null,
"custom_group_code": null
}
],
"pagination": {
"page": 1,
"page_size": 20,
"has_more": false,
"total_items": 1,
"total_pages": 1
}
}