Pular para o conteúdo

Exportação assíncrona de estatísticas de mensagens

exportMessagesStatistics exporta o histórico de mensagens e estatísticas para um arquivo CSV no servidor. Use-o para extrações grandes ou de contas completas que o messages:list não consegue lidar.

Quando usar a exportação em vez de messages:list

Anchor link to

Use messages:list para pesquisas ao vivo e paginadas de um período delimitado. Use exportMessagesStatistics quando o resultado excederia o limite de paginação profunda de messages:list (page × per_page > 100000), ou quando o objetivo é um único arquivo para download em vez de JSON paginado. A exportação não tem limite de date_range ou contagem de linhas, porque transmite o resultado para um arquivo em disco em vez de mantê-lo em uma única resposta.

Como funciona o fluxo de exportação

Anchor link to
  1. Chame export com os mesmos filtros de messages:list. A resposta retorna um identificador de tarefa uid imediatamente, antes que o arquivo seja gerado.
  2. Consulte status com esse uid até que ele relate STATUS_SUCCESS (ou STATUS_FAILED).
  3. Chame result com o mesmo uid para obter o file gerado e uma file_url pronta para uso.
  4. Faça o download do arquivo. Use a file_url como está, ou consulte result para construir a URL a partir de file se ela vier vazia.

Use lastTasks para procurar tarefas de exportação recentes para uma aplicação e delete para cancelar uma tarefa ou remover seu arquivo antecipadamente.

O ciclo de vida da exportação tem cinco métodos, mais um endpoint de download simples:

MétodoDescrição
exportMessagesStatistics/exportEnfileira uma exportação e retorna um uid de tarefa.
exportMessagesStatistics/statusVerifica o progresso da tarefa.
exportMessagesStatistics/resultRetorna o nome do arquivo gerado assim que a tarefa é concluída.
exportMessagesStatistics/lastTasksLista as tarefas de exportação recentes para uma aplicação.
exportMessagesStatistics/deleteCancela uma tarefa ou remove seu arquivo antes que o período de retenção expire.
DownloadBaixa o arquivo CSV gerado pelo nome.

Enfileira uma exportação do histórico de mensagens e retorna um identificador de tarefa imediatamente.

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

Cabeçalhos
Anchor link to

A solicitação precisa de um token da API do Servidor:

NomeObrigatórioDescrição
AuthorizationSimToken da API do Servidor. Deve ser fornecido no seguinte formato: Authorization: Api <Server Key>.
Parâmetros do corpo da solicitação
Anchor link to

O corpo da solicitação aceita os seguintes campos:

NomeObrigatórioTipoDescrição
typeSimStringDeve ser “TASK_TYPE_EXPORT_MESSAGES_V2”.
export_messages_v2SimObjectParâmetros de exportação, descritos abaixo.
export_messages_v2.application_codeVer notaStringCódigo da aplicação Pushwoosh. Obrigatório se app_group_code não estiver definido.
export_messages_v2.app_group_codeVer notaStringCódigo do grupo de aplicações, exporta para todas as aplicações do grupo. Obrigatório se application_code não estiver definido.
export_messages_v2.searchNãoStringPesquisa de texto livre no título e conteúdo da mensagem.
export_messages_v2.filtersNãoObjectFiltros de mensagem, descritos abaixo. Omita para exportar todo o histórico da conta.
export_messages_v2.propertiesNãoArrayColunas a serem incluídas no CSV, descritas abaixo.

export_messages_v2.filters aceita:

Nome
TipoDescrição
statusesArrayStatus das mensagens a serem incluídas.
Valores possíveis
  • ”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, ex: 1 para iOS), não as strings de nome de plataforma usadas por messages:list.
sent_dateObjectPeríodo de relatório filtrado pela data de envio: {"date_from": "YYYY-MM-DD", "date_to": "YYYY-MM-DD"}.
created_dateObjectPeríodo de relatório filtrado pela data de criação da mensagem, mesmo formato de sent_date.
created_viaArrayOrigem da mensagem.
Valores possíveis
  • ”AB_TEST"
  • "API"
  • "AUTO_PUSH"
  • "CP"
  • "CSV"
  • "CUSTOMER_JOURNEY"
  • "EMAIL_API"
  • "EMAIL_CP"
  • "GEO_ZONE"
  • "PUSH_ON_EVENT"
  • "RSS"
  • "SYSTEM”
segmentsArrayCódigos de filtro para os quais a mensagem foi enviada.
campaignsArrayCódigos de campanha. Diferente de messages:list, este aceita uma lista, não um único código.
message_idString (uint64)Um único ID de mensagem numérico, entre aspas. Diferente de messages:list, a exportação aceita um ID, não um array.
message_codeStringUm único código de mensagem.

export_messages_v2.properties seleciona quais colunas o CSV contém.

Valores possíveis
  • "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"
Exemplo de solicitação
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"
}

Retorna o progresso de uma tarefa de exportação.

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

Parâmetros do corpo da solicitação
Anchor link to

Passe o identificador de tarefa retornado por export:

NomeObrigatórioTipoDescrição
uidSimString (int64)Identificador de tarefa da resposta de export, ex: "177458".
Exemplo de solicitação
Anchor link to
{
"uid": "177458"
}
{
"status": "STATUS_SUCCESS",
"progress": 1
}

status é um de "STATUS_PENDING", "STATUS_SUCCESS" ou "STATUS_FAILED". progress é uma fração entre 0 e 1; consulte status até que atinja "STATUS_SUCCESS" antes de chamar result.

Retorna o nome do arquivo gerado assim que a tarefa for concluída.

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

Parâmetros do corpo da solicitação
Anchor link to

Passe o mesmo identificador de tarefa retornado por export:

NomeObrigatórioTipoDescrição
uidSimString (int64)Identificador de tarefa da resposta de export, ex: "177458".
Exemplo de solicitação
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"
}
}

Chamar result antes que status relate "STATUS_SUCCESS" retorna um resultado vazio. file_url é um link pronto para uso para o endpoint de download no data center correto da conta — use-o como está em vez de construir a URL a partir de file por conta própria. file_url fica vazio se o data center da conta não tiver uma URL base configurada. Nesse caso, você só pode recorrer à construção da URL a partir de file se a conta estiver no data center padrão app.pushwoosh.com — uma conta em outro data center ou um domínio whitelabel não tem como derivar o host correto apenas de file.

Lista as tarefas de exportação recentes para uma aplicação, da mais recente para a mais antiga.

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

Parâmetros do corpo da solicitação
Anchor link to

Cada parâmetro é um filtro opcional; omita todos para listar todas as tarefas às quais o token tem acesso:

NomeObrigatórioTipoDescrição
applicationNãoStringCódigo da aplicação Pushwoosh. Omita para listar tarefas de todas as aplicações às quais o token tem acesso.
typesNãoArrayRestringir a tipos de tarefa específicos. Use [“TASK_TYPE_EXPORT_MESSAGES_V2”] para ver apenas as exportações de mensagens.
campaignNãoStringFiltrar por código de campanha.
message_idNãoString (uint64)Filtrar por um único ID de mensagem numérico, entre aspas.
message_codeNãoStringFiltrar por um único código de mensagem.
limitNãoIntegerNúmero máximo de tarefas a serem retornadas.
timestamp_fromNãoStringRetornar apenas tarefas criadas após este timestamp (RFC 3339).
Exemplo de solicitação
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"
}
}
]
}

Exclui uma tarefa e seu arquivo antes que o período de retenção de 7 dias expire.

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

Parâmetros do corpo da solicitação
Anchor link to

Passe o identificador de tarefa retornado por export:

NomeObrigatórioTipoDescrição
uidSimString (int64)Identificador de tarefa da resposta de export, ex: "177458".
Exemplo de solicitação
Anchor link to
{
"uid": "177458"
}
{}

Baixa o arquivo CSV gerado por result, pelo nome.

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

Cabeçalhos
Anchor link to

Autentique da mesma forma que os outros métodos, ou confie em uma sessão ativa do Painel de Controle:

NomeObrigatórioDescrição
AuthorizationSimToken da API do Servidor, no mesmo formato dos outros métodos exportMessagesStatistics: Authorization: Api <Server Key> (o esquema Api não diferencia maiúsculas de minúsculas). Uma solicitação sem o cabeçalho Authorization e sem uma sessão logada no Painel de Controle recebe 401 Unauthorized.

Substitua <file> pelo valor exato de file da resposta de result, por exemplo:

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

O arquivo é um CSV contendo as colunas selecionadas em properties. Ele permanece disponível por 7 dias após o término da exportação, então o trabalho de limpeza o remove e a URL para de resolver.

Exportação de destinatários da mensagem

Anchor link to

Os mesmos métodos export, status, result, lastTasks, delete e download também exportam os destinatários individuais de uma mensagem. Use "type": "TASK_TYPE_EXPORT_MESSAGE_RECIPIENTS" e um objeto export_message_recipients em vez de export_messages_v2.

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

Campos de solicitação de export_message_recipients
Anchor link to
Nome
ObrigatórioTipoDescrição
message_idVer notaString (uint64)Um único ID numérico de mensagem. Obrigatório se campaign não estiver definido.
campaignVer notaStringUm único código da campanha. Obrigatório se message_id não estiver definido. Definir ambos restringe às linhas da mensagem dentro dessa campanha.
applicationSimStringCódigo da aplicação à qual a mensagem pertence.
typeSimStringQuais destinatários exportar. Um de "sends", "deliveries", "opens", "holdout" (veja abaixo).
date_from / date_toNãoString (date-time)Restringe as linhas a esta janela. Omita ambos para obter todo o histórico da mensagem.

Omitir message_id e campaign ao mesmo tempo, ou omitir application, resulta em um erro que nomeia o campo ausente. Um message_id de outra conta resulta em NotFound: message not found, verificado antes da execução da exportação. Um message_id ou campaign que pertence a outra aplicação da mesma conta não é rejeitado. Ele não corresponde a nenhuma linha, e o CSV é baixado apenas com o cabeçalho.

type seleciona o conjunto de destinatários:

ValorLinhas retornadas
"sends"Todos os destinatários para os quais a mensagem foi aceita.
"deliveries"Destinatários de sends cuja entrega o provedor confirmou.
"opens"Destinatários de sends que abriram a mensagem.
"holdout"Destinatários que esta mensagem excluiu, não qualquer outra mensagem. Nada foi enviado a eles. Tanto um grupo de controle em nível de conta quanto o holdout_percentage da própria mensagem (veja Messaging API v2) podem gerar esta linha.
Exemplo de solicitação
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 e chame result da mesma forma que em uma exportação do histórico de mensagens. result retorna export_message_recipients_result em vez 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 e opens compartilham um único conjunto de colunas: hwid, user_id, platform, send_timestamp, delivery_timestamp, open_timestamp, send_error, pae, send_status. pae é false quando a plataforma aceitou o envio, mas não exibiu nenhum alerta visível para ele, o mesmo caso que unshowable_sends contabiliza nas estatísticas agregadas. holdout tem seu próprio conjunto, mais curto: hwid, user_id, platform, holdout_timestamp.