API de Extração de Dados (Data Extract API)
A Data Extract API permite exportar dados completos dos seus tickets direto da sua conta no CloudChat, com datas,
status, responsáveis, tempos de resposta e muito mais. Ideal para relatórios personalizados e integrações externas.
Requisição base:
curl --location 'https://{CLOUDCHAT_DOMAIN}/api/v2/accounts/{ACCOUNT_ID}/data_extracts?startDate=2025-03-27T01:58:59&endDate=2025-03-28T01:59:00&type=BASE_TICKET_METRICS' \
--header 'Accept: application/json' \
--header 'api_access_token: {API_TOKEN}'
O que você precisa substituir:
1. {CLOUDCHAT_DOMAIN}: seu domínio CloudChat (ex: app.cloudchat.cloudhumans.com)
2. {ACCOUNT_ID}: ID da conta
3. {API_TOKEN}: token de acesso gerado no perfil de um administrador ou supervisor
Como obter essas informações?
{CLOUDCHAT_DOMAIN} - Você pode obter seu domínio ao fazer login na sua conta no CloudChat. É a parte que aparece na URL
do navegador, por exemplo:
{ACCOUNT_ID} - Após o login, verifique a URL da sua dashboard inicial. O ID da conta aparece na URL como:
app/accounts/1/dashboard. Encontrado na URL do seu Cloud Chat, após "accounts"; ex.:
https://cloudchat.cloudhumans.com/app/accounts/**1**/conversations/6341 (nesse caso, o account_id é 1)
{API_TOKEN} - O token de API deve ser gerado a partir do perfil de um usuário com permissão de administrador ou
supervisor (na configuração de perfil):
Quais parâmetros são obrigatórios?
Ao fazer a requisição para a API, você deve informar os seguintes parâmetros:
- startDate:
Data e hora de início da extração.
Formato esperado: yyyy-MM-ddTHH:mm:ss (Em UTC)
Exemplo: 2025-03-27T01:58:59
- endDate:
Data e hora de término da extração.
Deve ser posterior ao startDate e o intervalo entre as duas datas não pode ultrapassar 5 dias (120 horas).
Exemplo: 2025-03-28T01:59:00 (Em UTC)
- type:
O tipo de dados que deseja exportar.
Tipos disponíveis:
BASE_TICKET_METRICS, TICKET_METRICS_WITH_AGENT_INFORMATION, TICKET_SUMMARY, CAMPAIGN_DELIVERY_EVENTS,
SINGLE_CONTACT_DELIVERY_EVENTS
- account_id:
ID da sua conta no CloudChat.
Esse valor é informado no caminho da URL (ex: /accounts/1/data_extracts, onde o ID da conta é 1).
Observação sobre o intervalo de datas
Para garantir estabilidade e performance, o intervalo máximo permitido por requisição é de 5 dias.
Se você deseja exportar dados de um período maior (por exemplo, 30 dias), é possível dividir a consulta em múltiplas
requisições.
Exemplo: Para extrair dados de um mês completo, você pode fazer 6 requisições consecutivas com intervalos de até 5 dias
cada, variando o startDate e endDate de acordo com o período desejado.
Tipos de extração disponíveis via API
A Data Extract API agora suporta os seguintes valores para o parâmetro type:
- BASE_TICKET_METRICS
- TICKET_METRICS_WITH_AGENT_INFORMATION
- TICKET_SUMMARY
- CAMPAIGN_DELIVERY_EVENTS (novo)
- SINGLE_CONTACT_DELIVERY_EVENTS (novo)
1. BASE_TICKET_METRICS
Retorna dados básicos dos tickets, como:
- ticketId: identificador interno e único do ticket
- displayTicketId: ID visível na interface (o número do ticket que aparece na URL)
- inboxId: ID da caixa de entrada usada
- accountId e accountName: ID e nome da sua conta no Cloud Chat
- ticketStatus: status do ticket (ex: resolved, open, pendente)
- teamName: Nome do time atribuído ao ticket
- ticketPriorityName: Prioridade atribuída ao ticket (ex: low, mediu, high, urgent)
- ticketType: é a primeira tag colocada no ticket
- inboxName: nome da Inbox usada
- ticketTitle: título do ticket: uma concatenação do título do ticket (quando existir, pra email, por exemplo),
telefone do contato e nome do contato
- channel: canal usado (ex: WhatsApp, e-mail)
- createdAt: timestamp de criação do ticket
- firstReplyAt: timestamp da primeira resposta
- firstReplyTime: tempo até a primeira resposta (em minutos) desde a criação do ticket.
- resolvedAt: timestamp de resolução (se o ticket foi reaberto e, portanto, contém mais de uma resolução, é
considerado a última data de resolução)
- totalResolutionTimeMin: tempo total de resolução (em minutos)
- tags: tags associadas ao ticket
- agentId, ticketOwner e ticketOwnerEmail: ID, nome e email do agente responsável
- contactId, contactName, contactEmail, contactPhone ID, nome do contato, email do contato e telefone do contato
(cliente que abriu o ticket)
⚠️ IMPORTANTE: Ao configurar o fuso horário da conta (por exemplo, GMT-3 ou qualquer outro), os campos
timestamp(createdAt, firstAgentAssignmentTime, firstReplyAt, firstAgentFirstReplyTime, resolvedAt, firstReplyTime,
resolvedAt, firstReplierAgentAssignmentTime, firstReplierAgentFirstReplyTime, repliedAt, readAt, receivedAt, sentAt)são
retornados no fuso horário definido na conta. Caso não haja fuso horário configurado os horários serão retornados em UTC
(link da FAQ de como definir o fuso horário aqui)
Exemplo de resposta:
[
{
"ticketId": 123456,
"displayTicketId": 7890,
"inboxId": 101,
"accountId": 42,
"accountName": "Minha Empresa",
"ticketStatus": "resolved",
"teamName": "Meu Time",
"ticketPriorityName": "High",
"ticketType": "suporte",
"inboxName": "WhatsApp",
"ticketTitle": "+5511999999999",
"channel": "Whatsapp",
"createdAt": "2025-03-27T09:53:14.791Z",
"firstReplyAt": "2025-03-27T10:09:29.225Z",
"firstReplyTime": 16.24,
"resolvedAt": "2025-03-27T13:20:15.830Z",
"totalResolutionTimeMin": 207.01,
"tags": "suporte,prioridade_alta",
"agentId": 42,
"ticketOwner": "ClaudIA",
"ticketOwnerEmail": "[email protected]",
"contactId": 998877,
"contactName": "Contact Name",
"contactEmail": "[email protected]",
"contactPhone": "+5511887774411"
}
]
2. TICKET_METRICS_WITH_AGENT_INFORMATION
Inclui os dados com detalhes sobre o agente que respondeu e resolveu, como:
- ticketId: identificador interno e único do ticket
- displayTicketId: ID visível na interface (o número do ticket que aparece na URL)
- accountName: ID e nome da sua conta no Cloud Chat
- inboxName: nome da Inbox usada
- ticketLink: link do ticket para abrir diretamente ele no Cloud Chat
- agentOnResolutionId, agentOnResolutionName e agentOnResolutionEmail: ID, nome e email do agente humano que resolveu
o ticket
- firstAgentReplyId, firstAgentReplyName, firstAgentReplyEmail: ID, nome e email do agente humano que respondeu
primeiro
- firstAgentAssignmentTime: timestamp da atribuição ao primeiro agente humano a entrar no ticket
- firstAgentFirstReplyTime: timestamp da primeira resposta do primeiro agente humano a entrar no ticket
- firstReplierAgentAssignmentTime : timestamp da atribuição do agente humano que primeiro respondeu o ticket
- firstReplierAgentFirstReplyTime : tempo de primeira resposta humana ao ticket(caso o primeiro agente humano
atribuído não responda o ticket, esse dado será diferente ao firstAgentFirstReplyTime)
- firstAgentReplyTimeMin: tempo até a primeira resposta do primeiro agente humano a entrar no ticket desde sua
atribuição (minutos)
- firstAgentResolutionTimeMin: tempo entre a abertura do ticket até a última resolução do ticket (minutos)
- csatScore e csatFeedback: avaliação (nota) de satisfação do cliente (CSAT) e comentário do CSAT (se houver)
- contactCustomFields: campos personalizados do contato (JSON)
- conversationCustomFields: campos personalizados da conversa (JSON)
- conversationAdditionalFields: outros campos complementares que podem ou não vir no canal que o cliente entrou
(JSON). Esse campo vêm preenchido se:
- O canal é passível de passar essa informação
- O cliente habilitou para passar essa informação no canal
Exemplo de resposta:
[
{
"ticketId": 11111,
"displayTicketId": 11111,
"accountName": "account name",
"inboxName": "WhatsApp",
"ticketLink": "https://cloudchat.cloudhumans.com/app/accounts/99999/conversations/11111",
"ticketStatus": "resolved",
"createdAt": "2025-03-27T13:00:40.897954",
"resolvedAt": "2025-03-27T15:38:02.743726",
"agentOnResolutionId": 225,
"agentOnResolutionName": "ClaudIA",
"agentOnResolutionEmail": "[email protected]",
"firstAgentReplyId": 111,
"firstAgentReplyName": "ClaudIA",
"firstAgentReplyEmail": "[email protected]",
"firstAgentAssignmentTime": "2025-03-27T13:16:13.001269",
"firstAgentFirstReplyTime": "2025-03-27T13:17:01.344971",
"firstAgentReplyTimeMin": 0.81,
"firstAgentResolutionTimeMin": 141.83,
"csatScore": null,
"csatFeedback": "",
"contactCustomFields": "{}",
"conversationCustomFields": "{}",
"conversationAdditionalFields": "{}"
}
]
⚠️ Importante:
1. firstAgentReplyTimeMin — Calculado como o tempo entre o momento de atribuição do primeiro agente do ticket
(firstAgentAssignmentTime) até sua primeira resposta (firstAgentFirstReplyTime).
2. firstAgentResolutionTimeMin — Calculado como o tempo entre a atribuição do primeiro agente do ticket
(firstAgentAssignmentTime) até o momento em que o ticket foi resolvido (resolvedAt).
3. TICKET_SUMMARY
Retorna um resumo textual (é a conversa inteira) da conversa dentro do ticket. Inclui ticketId, displayTicketId,
ticketLink e summary.
Exemplo de resposta:
[
{
"ticketId": 1111,
"displayTicketId": 1111,
"ticketLink": "https://cloudchat.cloudhumans.com/app/accounts/99999/conversations/1111",
"summary": "CONTATO: Oi\nUSUÁRIO: Olá!"
}
]
4. CAMPAIGN_DELIVERY_EVENTS
Retorna eventos de entrega de campanhas do WhatsApp no CloudChat, centralizando e rastreando, por contato e campanha, o
status de mensagens enviadas.
O objetivo é consolidar em um único ponto dados de eventos de campanha como envio, recebimento, leitura, resposta e
erros.
Campos retornados:
- id: Identificador único do evento de entrega da campanha
- campaignId: ID da campanha
- campaignTitle: Título da campanha
- audience: Nome do público da campanha
- contactId: ID do contato
- contactName: Nome do contato
- contactEmail: E-mail do contato
- contactPhoneNumber: Número de telefone do contato
- ticketId: ID interno do ticket vinculado
- displayTicketId: ID visível do ticket (exibido na URL da conversa / ticket)
- messageSent: Indica se a mensagem foi enviada com sucesso para a API do WhatsApp (Meta)
- sentAt: timestamp em que a mensagem foi efetivamente enviada para a API do WhatsApp
- messageReceived: Indica se o WhatsApp confirmou que a mensagem foi entregue ao dispositivo do contato
- receivedAt: timestamp em que a confirmação de entrega foi recebida
- messageRead: Indica se o WhatsApp confirmou que a mensagem foi lida pelo contato.
⚠ Esse evento só será registrado se o contato tiver o status de leitura habilitado nas configurações de privacidade
do WhatsApp
- readAt: timestamp em que a confirmação de leitura foi recebida (ou null caso não tenha ocorrido)
- messageReplied: Indica se o contato enviou alguma resposta após receber a mensagem da campanha
- repliedAt: timestamp em que a primeira resposta foi registrada
- error: Mensagem de erro retornada, caso o envio não tenha sido realizado ou tenha falhado em alguma etapa (por
exemplo: número inválido, contato sem WhatsApp, bloqueio, etc.)
- createdAt: timestamp de criação do registro na base de dados do CloudChat
- updatedAt: timestamp da última atualização do registro (por exemplo, quando novos eventos de entrega ou leitura
foram recebidos)
Exemplo de resposta:
[
{
"id": 103,
"campaignId": 5502,
"campaignTitle": "Natal 2025 - Promoção Especial",
"audience": "lista_fidelidade_natal",
"contactId": 9003,
"contactName": "Carla Souza",
"contactEmail": "[email protected]",
"contactPhoneNumber": "+55 31 99999-99999",
"ticketId": 78414,
"displayTicketId": "2027",
"messageSent": false,
"sentAt": null,
"messageReceived": false,
"receivedAt": null,
"messageRead": false,
"readAt": null,
"messageReplied": false,
"repliedAt": null,
"error": "Número de telefone inválido ou não registrado no WhatsApp",
"createdAt": "2025-12-10T09:00:00.000Z",
"updatedAt": "2025-12-10T09:00:00.000Z"
}
]
5. SINGLE_CONTACT_DELIVERY_EVENTS
Retorna eventos de entrega de mensagens pró-ativas de disparo único do WhatsApp no CloudChat, centralizando e
rastreando, o status das mensagens enviadas.
O objetivo é consolidar em um único ponto dados de eventos de disparo pró-ativo como envio, recebimento, leitura,
resposta e erros.
Campos retornados:
- id: Identificador único do evento de entrega pró-ativa
- contactId: ID do contato
- contactName: Nome do contato
- contactEmail: E-mail do contato
- contactPhoneNumber: Número de telefone do contato
- ticketId: ID interno do ticket vinculado
- displayTicketId: ID visível do ticket (exibido na URL da conversa / ticket)
- messageSent: Indica se a mensagem foi enviada com sucesso para a API do WhatsApp (Meta)
- sentAt: timestamp em que a mensagem foi efetivamente enviada para a API do WhatsApp
- messageReceived: Indica se o WhatsApp confirmou que a mensagem foi entregue ao dispositivo do contato
- receivedAt: timestamp em que a confirmação de entrega foi recebida
- messageRead: Indica se o WhatsApp confirmou que a mensagem foi lida pelo contato.
⚠ Esse evento só será registrado se o contato tiver o status de leitura habilitado nas configurações de privacidade
do WhatsApp
- readAt: timestamp em que a confirmação de leitura foi recebida (ou null caso não tenha ocorrido)
- messageReplied: Indica se o contato enviou alguma resposta após receber a mensagem
- repliedAt: timestamp em que a primeira resposta foi registrada
- error: Mensagem de erro retornada, caso o envio não tenha sido realizado ou tenha falhado em alguma etapa (por
exemplo: número inválido, contato sem WhatsApp, bloqueio, etc.)
- createdAt: timestamp de criação do registro na base de dados do CloudChat
- updatedAt: timestamp da última atualização do registro (por exemplo, quando novos eventos de entrega ou leitura
foram recebidos)
Exemplo de resposta:
[
{
"id": 321,
"contactId": 555777,
"contactName": "Maria Silva",
"contactEmail": "[email protected]",
"contactPhoneNumber": "+55 11 98888-7777",
"ticketId": 78414,
"displayTicketId": "2027",
"messageSent": true,
"sentAt": "2025-08-01T12:00:05.000Z",
"messageReceived": true,
"receivedAt": "2025-08-01T12:00:08.000Z",
"messageRead": true,
"readAt": "2025-08-01T12:01:30.000Z",
"messageReplied": false,
"repliedAt": null,
"error": null,
"createdAt": "2025-08-01T11:59:59.000Z",
"updatedAt": "2025-08-01T12:01:30.000Z"
}
]
by CloudChat