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. Úsalo para extracciones grandes o de cuentas completas que messages:list no puede manejar.

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

Anchor link to

Usa messages:list para búsquedas en vivo y paginadas de un período delimitado. Usa 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. Llama 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. Sondea status con ese uid hasta que informe STATUS_SUCCESS (o STATUS_FAILED).
  3. Llama a result con el mismo uid para obtener el nombre del archivo generado.
  4. Descarga el archivo por su nombre.

Usa 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 final 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.
DescargaDescarga 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
AuthorizationToken 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
typeStringDebe ser “TASK_TYPE_EXPORT_MESSAGES_V2”.
export_messages_v2ObjectParámetros de exportación, descritos a continuación.
export_messages_v2.application_codeVer notaStringCódigo de aplicación de Pushwoosh. Requerido si app_group_code no está establecido.
export_messages_v2.app_group_codeVer notaStringCódigo de grupo de aplicaciones, exporta a través de cada aplicación en el grupo. Requerido si application_code no está establecido.
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. Omita 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, esto toma una lista, no un solo 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_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
uidString (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
uidString (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"
}
}

Llamar a result antes de que status informe "STATUS_SUCCESS" devuelve un resultado vacío. Pase el valor de file tal cual al punto final de descarga.

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 listar cada tarea a la que el token tiene acceso:

NombreRequeridoTipoDescripción
applicationNoStringCódigo de aplicación de Pushwoosh. Omita para listar tareas en todas las aplicaciones a las que el token tiene acceso.
typesNoArrayRestringir a tipos de tarea 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"
}
}
]
}

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
uidString (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://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/<file>

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

NombreRequeridoDescripción
AuthorizationToken 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 401 Unauthorized.

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

https://api.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 finaliza la exportación, luego el trabajo de limpieza lo elimina y la URL deja de resolverse.