Saltar al contenido

Exportación asíncrona de estadísticas de mensajes

exportMessagesStatistics exporta el historial de mensajes y las estadísticas a un archivo CSV en el servidor. Utilícelo para extracciones grandes o de toda la cuenta que messages:list no puede manejar.

Cuándo usar la exportación en lugar de messages:list

Anchor link to

Utilice messages:list para búsquedas en vivo y paginadas de un período delimitado. Utilice exportMessagesStatistics cuando el resultado excedería el límite de paginación profunda de messages:list (page × per_page > 100000), o cuando el objetivo es un único archivo descargable en lugar de un JSON paginado. La exportación no tiene límite en date_range o en el número de filas, porque transmite el resultado a un archivo en el disco en lugar de mantenerlo en una sola respuesta.

Cómo funciona el flujo de exportación

Anchor link to
  1. Llame a export con los mismos filtros que messages:list. La respuesta devuelve un identificador de tarea uid inmediatamente, antes de que se genere el archivo.
  2. Sondee status con ese uid hasta que informe STATUS_SUCCESS (o STATUS_FAILED).
  3. Llame a result con el mismo uid para obtener el file generado y una file_url lista para usar.
  4. Descargue el archivo. Utilice file_url tal cual, o consulte result para construir la URL a partir de file si esta llegó vacía.

Utilice lastTasks para buscar tareas de exportación recientes para una aplicación, y delete para cancelar una tarea o eliminar su archivo antes de tiempo.

El ciclo de vida de la exportación tiene cinco métodos, más un punto de conexión de descarga simple:

MétodoDescripción
exportMessagesStatistics/exportPone en cola una exportación y devuelve un uid de tarea.
exportMessagesStatistics/statusComprueba el progreso de la tarea.
exportMessagesStatistics/resultDevuelve el nombre del archivo generado una vez que la tarea ha finalizado.
exportMessagesStatistics/lastTasksEnumera las tareas de exportación recientes para una aplicación.
exportMessagesStatistics/deleteCancela una tarea o elimina su archivo antes de que expire el período de retención.
DescargarDescarga el archivo CSV generado por su nombre.

Pone en cola una exportación del historial de mensajes y devuelve un identificador de tarea de inmediato.

POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/export

La solicitud necesita un token de la API del servidor:

NombreRequeridoDescripción
AuthorizationSíToken de la API del servidor. Debe proporcionarse en el siguiente formato: Authorization: Api <Server Key>.
Parámetros del cuerpo de la solicitud
Anchor link to

El cuerpo de la solicitud acepta los siguientes campos:

NombreRequeridoTipoDescripción
typeSíStringDebe ser “TASK_TYPE_EXPORT_MESSAGES_V2”.
export_messages_v2SíObjectParámetros de exportación, descritos a continuación.
export_messages_v2.application_codeVer notaStringCódigo de aplicación de Pushwoosh. Requerido si no se establece app_group_code.
export_messages_v2.app_group_codeVer notaStringCódigo de grupo de aplicaciones, exporta a través de cada aplicación del grupo. Requerido si no se establece application_code.
export_messages_v2.searchNoStringBúsqueda de texto libre en el título y contenido del mensaje.
export_messages_v2.filtersNoObjectFiltros de mensajes, descritos a continuación. Omitir para exportar todo el historial de la cuenta.
export_messages_v2.propertiesNoArrayColumnas a incluir en el CSV, descritas a continuación.

export_messages_v2.filters acepta:

Nombre
TipoDescripción
statusesArrayEstados de los mensajes a incluir.
Valores posibles
  • ”MESSAGE_STATUS_CANCELED"
  • "MESSAGE_STATUS_CREATING"
  • "MESSAGE_STATUS_DONE"
  • "MESSAGE_STATUS_FAIL"
  • "MESSAGE_STATUS_PENDING"
  • "MESSAGE_STATUS_PROCESSING"
  • "MESSAGE_STATUS_WAITING”
platformsArrayCódigos de plataforma (numéricos, p. ej., 1 para iOS), no las cadenas de nombres de plataforma utilizadas por messages:list.
sent_dateObjectPeríodo de informe filtrado por fecha de envío: {"date_from": "YYYY-MM-DD", "date_to": "YYYY-MM-DD"}.
created_dateObjectPeríodo de informe filtrado por fecha de creación del mensaje, mismo formato que sent_date.
created_viaArrayOrigen del mensaje.
Valores posibles
  • ”AB_TEST"
  • "API"
  • "AUTO_PUSH"
  • "CP"
  • "CSV"
  • "CUSTOMER_JOURNEY"
  • "EMAIL_API"
  • "EMAIL_CP"
  • "GEO_ZONE"
  • "PUSH_ON_EVENT"
  • "RSS"
  • "SYSTEM”
segmentsArrayCódigos de filtro a los que se envió el mensaje.
campaignsArrayCódigos de campaña. A diferencia de messages:list, este toma una lista, no un único código.
message_idString (uint64)Un único ID de mensaje numérico, entre comillas. A diferencia de messages:list, la exportación toma un ID, no un array.
message_codeStringUn único código de mensaje.

export_messages_v2.properties selecciona qué columnas contiene el CSV.

Valores posibles
  • "EXPORT_MESSAGE_PROPERTY_ID"
  • "EXPORT_MESSAGE_PROPERTY_TIMESTAMP"
  • "EXPORT_MESSAGE_PROPERTY_CONTENT"
  • "EXPORT_MESSAGE_PROPERTY_TITLE"
  • "EXPORT_MESSAGE_PROPERTY_CAMPAIGN_NAME"
  • "EXPORT_MESSAGE_PROPERTY_APPLICATIONS"
  • "EXPORT_MESSAGE_PROPERTY_STATUS"
  • "EXPORT_MESSAGE_PROPERTY_PLATFORMS"
  • "EXPORT_MESSAGE_PROPERTY_SOURCE"
  • "EXPORT_MESSAGE_PROPERTY_FILTER"
  • "EXPORT_MESSAGE_PROPERTY_SUBSCRIPTION_SEGMENTS"
  • "EXPORT_MESSAGE_PROPERTY_SENT"
  • "EXPORT_MESSAGE_PROPERTY_OPENED"
  • "EXPORT_MESSAGE_PROPERTY_ERRORS"
  • "EXPORT_MESSAGE_PROPERTY_RECIPIENTS"
  • "EXPORT_MESSAGE_PROPERTY_DELIVERED"
  • "EXPORT_MESSAGE_PROPERTY_TOTAL_DELIVERED"
  • "EXPORT_MESSAGE_PROPERTY_TOTAL_OPENED"
  • "EXPORT_MESSAGE_PROPERTY_TOTAL_CLICKS"
  • "EXPORT_MESSAGE_PROPERTY_CLICKS"
  • "EXPORT_MESSAGE_PROPERTY_UNSUBSCRIBED"
Solicitud de ejemplo
Anchor link to
{
"type": "TASK_TYPE_EXPORT_MESSAGES_V2",
"export_messages_v2": {
"application_code": "XXXXX-XXXXX",
"filters": {
"created_date": {
"date_from": "2026-01-01",
"date_to": "2026-06-30"
},
"statuses": ["MESSAGE_STATUS_DONE"],
"platforms": [1, 3]
},
"properties": [
"EXPORT_MESSAGE_PROPERTY_ID",
"EXPORT_MESSAGE_PROPERTY_TIMESTAMP",
"EXPORT_MESSAGE_PROPERTY_STATUS",
"EXPORT_MESSAGE_PROPERTY_PLATFORMS",
"EXPORT_MESSAGE_PROPERTY_SENT",
"EXPORT_MESSAGE_PROPERTY_OPENED"
]
}
}
{
"uid": "177458"
}

Devuelve el progreso de una tarea de exportación.

POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/status

Parámetros del cuerpo de la solicitud
Anchor link to

Pase el identificador de tarea devuelto por export:

NombreRequeridoTipoDescripción
uidSíString (int64)Identificador de tarea de la respuesta de export, p. ej., "177458".
Solicitud de ejemplo
Anchor link to
{
"uid": "177458"
}
{
"status": "STATUS_SUCCESS",
"progress": 1
}

status es uno de "STATUS_PENDING", "STATUS_SUCCESS", o "STATUS_FAILED". progress es una fracción entre 0 y 1; sondee status hasta que alcance "STATUS_SUCCESS" antes de llamar a result.

Devuelve el nombre del archivo generado una vez que la tarea ha finalizado.

POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/result

Parámetros del cuerpo de la solicitud
Anchor link to

Pase el mismo identificador de tarea devuelto por export:

NombreRequeridoTipoDescripción
uidSíString (int64)Identificador de tarea de la respuesta de export, p. ej., "177458".
Solicitud de ejemplo
Anchor link to
{
"uid": "177458"
}
{
"export_messages_v2_result": {
"file": "Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv",
"file_url": "https://app.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv"
}
}

Llamar a result antes de que status informe "STATUS_SUCCESS" devuelve un resultado vacío. file_url es un enlace listo para usar al punto de conexión de descarga en el centro de datos correcto para la cuenta; úselo tal cual en lugar de construir la URL a partir de file usted mismo. file_url está vacío si el centro de datos de la cuenta no tiene una URL base configurada. En ese caso, solo puede recurrir a construir la URL a partir de file si la cuenta está en el centro de datos predeterminado app.pushwoosh.com; una cuenta en otro centro de datos o un dominio de marca blanca no tiene forma de derivar el host correcto solo a partir de file.

Enumera las tareas de exportación recientes para una aplicación, de la más reciente a la más antigua.

POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/lastTasks

Parámetros del cuerpo de la solicitud
Anchor link to

Cada parámetro es un filtro opcional; omítalos todos para enumerar todas las tareas a las que el token tiene acceso:

NombreRequeridoTipoDescripción
applicationNoStringCódigo de aplicación de Pushwoosh. Omitir para listar tareas en todas las aplicaciones a las que el token tiene acceso.
typesNoArrayRestringir a tipos de tareas específicos. Use [“TASK_TYPE_EXPORT_MESSAGES_V2”] para ver solo las exportaciones de mensajes.
campaignNoStringFiltrar por código de campaña.
message_idNoString (uint64)Filtrar por un único ID de mensaje numérico, entre comillas.
message_codeNoStringFiltrar por un único código de mensaje.
limitNoIntegerNúmero máximo de tareas a devolver.
timestamp_fromNoStringSolo devolver tareas creadas después de esta marca de tiempo (RFC 3339).
Solicitud de ejemplo
Anchor link to
{
"application": "XXXXX-XXXXX",
"types": ["TASK_TYPE_EXPORT_MESSAGES_V2"],
"limit": 10
}
{
"tasks": [
{
"id": "177458",
"timestamp": "2026-08-13T12:00:00Z",
"status": "STATUS_SUCCESS",
"requested_by_user": "user@example.com",
"export_messages_v2": {
"application_code": "XXXXX-XXXXX"
},
"export_messages_v2_result": {
"file": "Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv",
"file_url": "https://app.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv"
}
}
]
}

Elimina una tarea y su archivo antes de que expire el período de retención de 7 días.

POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/delete

Parámetros del cuerpo de la solicitud
Anchor link to

Pase el identificador de tarea devuelto por export:

NombreRequeridoTipoDescripción
uidSíString (int64)Identificador de tarea de la respuesta de export, p. ej., "177458".
Solicitud de ejemplo
Anchor link to
{
"uid": "177458"
}
{}

Descarga el archivo CSV generado por result, por su nombre.

GET https://app.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/<file>

Autentícate de la misma manera que los otros métodos, o confía en una sesión activa del Panel de Control:

NombreRequeridoDescripción
AuthorizationSíToken de la API del servidor, en el mismo formato que los otros métodos exportMessagesStatistics: Authorization: Api <Server Key> (el esquema Api no distingue entre mayúsculas y minúsculas). Una solicitud sin cabecera Authorization y sin una sesión iniciada en el Panel de Control obtiene un 401 Unauthorized.

Reemplace <file> con el valor exacto de file de la respuesta de result, por ejemplo:

https://app.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv

El archivo es un CSV que contiene las columnas seleccionadas en properties. Permanece disponible durante 7 días después de que finalice la exportación, luego el trabajo de limpieza lo elimina y la URL deja de resolverse.

Exportación de destinatarios de un mensaje

Anchor link to

Los mismos métodos export, status, result, lastTasks, delete y download también exportan los destinatarios individuales de un mensaje. Use "type": "TASK_TYPE_EXPORT_MESSAGE_RECIPIENTS" y un objeto export_message_recipients en lugar de export_messages_v2.

POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/export

Campos de la solicitud export_message_recipients
Anchor link to
Nombre
RequeridoTipoDescripción
message_idVéase la notaString (uint64)Un único ID numérico de mensaje. Obligatorio si no se define campaign.
campaignVéase la notaStringUn único código de campaña. Obligatorio si no se define message_id. Si se definen ambos, se limita a las filas del mensaje dentro de esa campaña.
applicationSíStringCódigo de aplicación al que pertenece el mensaje.
typeSíStringQué destinatarios exportar. Uno de "sends", "deliveries", "opens", "holdout" (véase más abajo).
date_from / date_toNoString (date-time)Limita las filas a esta ventana. Omita ambos para obtener todo el historial del mensaje.

Si se omiten tanto message_id como campaign, o se omite application, la solicitud falla con un error que nombra el campo que falta. Un message_id de otra cuenta falla con NotFound: message not found, comprobado antes de ejecutar la exportación. Un message_id o campaign que pertenece a otra aplicación de la misma cuenta no se rechaza. No coincide con ninguna fila, y el CSV se descarga solo con la fila de encabezado.

type selecciona el conjunto de destinatarios:

ValorFilas devueltas
"sends"Todos los destinatarios para los que se aceptó el mensaje.
"deliveries"Destinatarios de sends cuya entrega confirmó el proveedor.
"opens"Destinatarios de sends que abrieron el mensaje.
"holdout"Destinatarios que este mensaje excluyó, no cualquier otro mensaje. No se les envió nada. Tanto un grupo de control de toda la cuenta como el holdout_percentage propio del mensaje (véase Messaging API v2) pueden producir esta fila.
Ejemplo de solicitud
Anchor link to
{
"type": "TASK_TYPE_EXPORT_MESSAGE_RECIPIENTS",
"export_message_recipients": {
"message_id": "22875465358",
"application": "6D382-5ADFE",
"type": "holdout",
"date_from": "2026-08-01T00:00:00Z",
"date_to": "2026-09-30T00:00:00Z"
}
}
{
"uid": "29820"
}

Consulte status y llame a result igual que en una exportación del historial de mensajes. result devuelve export_message_recipients_result en lugar de export_messages_v2_result:

{
"export_message_recipients_result": {
"file": "Message_22875465358_Holdout_29820-fe5d8ba468df25b7.csv",
"file_url": "https://app.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/Message_22875465358_Holdout_29820-fe5d8ba468df25b7.csv"
}
}

sends, deliveries y opens comparten un mismo conjunto de columnas: hwid, user_id, platform, send_timestamp, delivery_timestamp, open_timestamp, send_error, pae, send_status. pae es false cuando la plataforma aceptó el envío pero no mostró ninguna alerta visible para él, el mismo caso que cuenta unshowable_sends en las estadísticas agregadas. holdout tiene su propio conjunto, más corto: hwid, user_id, platform, holdout_timestamp.