Actividad de aperturas
GET
/v1/activities/opensPara desarrolladores
Descripción
Lista las aperturas de sus correos, por evento, por destinatario o por mensaje según group_by:
none(default): una fila por cada apertura.mail_id: una fila por destinatario.msg_id: una fila por mensaje, que suma todos sus destinatarios.
Los filtros se aplican antes de agrupar. El conteo de cada fila sale de las aperturas dentro del rango, así que coincide con la suma del detalle.
Guía relacionada
- Actividad de envíos — Revise aperturas, clics y rebotes de cada envío desde el panel.
Autenticación
Authorizationbearer tokenheaderobligatorio- API key con scope
mail:read. Formato:Bearer <API_KEY>. X-Instance-Slugstringheaderobligatorio- Identificador de su instancia. Ver Autenticación.
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.
pageinteger- Número de página; la primera es la 1. Default: 1.
page_sizeinteger- Tamaño de página, 1–100. Default: 20.
group_bystring, enum: `none | mail_id | msg_id`- Nivel de agrupación. Default:
none. msg_idstring | null- Filtra por identificador de mensaje.
mail_idstring | null- Filtra por identificador de correo.
sender_idinteger | null- Filtra por
iddel remitente. recipientstring | null- Filtra por email del destinatario, con coincidencia exacta por default. Con
recipient_operator=starts_with, la coincidencia pasa a ser por 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, con coincidencia parcial e insensible a mayúsculas (ver Filtros de texto).
Response
200 OKResponde con
{data, pagination}. La forma de cada elemento de data depende de group_by.- none
- mail_id
- msg_id
Por defecto, una fila por apertura
mail_idstringsiempre presente- Identificador del correo.
msg_idstring | null- Identificador del mensaje.
tostringsiempre presente- Email del destinatario.
senderstringsiempre presente- Email del remitente.
opened_atstring (date-time)siempre presente- Fecha y hora de la apertura.
sent_atstring (date-time) | null- Fecha y hora de entrega.
custom_msg_idstring | null- Identificador personalizado del mensaje.
custom_group_codestring | null- Código de grupo personalizado.
Una fila por destinatario
mail_idstringsiempre presente- Identificador del correo.
msg_idstring | null- Identificador del mensaje.
tostringsiempre presente- Email del destinatario.
senderstringsiempre presente- Email del remitente.
open_countintegersiempre presente- Cantidad de aperturas de este destinatario en el rango.
first_opened_atstring (date-time)siempre presente- Fecha y hora de la primera apertura.
last_opened_atstring (date-time)siempre presente- Fecha y hora de la última apertura.
sent_atstring (date-time) | null- Fecha y hora de entrega.
custom_msg_idstring | null- Identificador personalizado del mensaje.
custom_group_codestring | null- Código de grupo personalizado.
Una fila por mensaje, que suma todos sus destinatarios
msg_idstringsiempre presente- Identificador del mensaje.
senderstringsiempre presente- Email del remitente.
subjectstring | null- Asunto.
open_countintegersiempre presente- Cantidad total de aperturas del mensaje.
recipients_openedintegersiempre presente- Cantidad de destinatarios distintos que abrieron al menos una vez.
rcpt_countintegersiempre presente- Cantidad total de destinatarios del mensaje.
first_opened_atstring (date-time)siempre presente- Fecha y hora de la primera apertura entre todos los destinatarios.
last_opened_atstring (date-time)siempre presente- Fecha y hora de la última apertura entre todos los destinatarios.
custom_msg_idstring | null- Identificador personalizado del mensaje.
custom_group_codestring | null- Código de grupo personalizado.
Notas
pagination.total_itemspuede venirnull. Congroup_by=mail_idogroup_by=msg_idviene siemprenull, porque cada fila es un destinatario o un mensaje y no un evento; congroup_by=none, según los filtros. Para paginar, usepagination.has_more, que siempre está presente.- Para exportar el mismo listado completo en CSV o JSON, use
GET /v1/activities/opens/export.
Request
curl -X GET "https://$API_HOST/v1/activities/opens?group_by=msg_id&start_date=2026-07-01&end_date=2026-07-31" \
-H "Authorization: Bearer $API_KEY" \
-H "X-Instance-Slug: $SLUG"
Response
{
"data": [
{
"msg_id": "0190...",
"subject": "Hello",
"open_count": 18,
"recipients_opened": 11,
"rcpt_count": 25,
"first_opened_at": "2026-05-08T14:25:47Z",
"last_opened_at": "2026-05-08T17:02:58Z",
"custom_msg_id": null,
"custom_group_code": null
}
],
"pagination": {
"page": 1,
"page_size": 20,
"has_more": false,
"total_items": null,
"total_pages": null
}
}