Principal APIs Como extrair dados em lote via API (Data Extract API)

Como extrair dados em lote via API (Data Extract API)

Última atualização em Jun 25, 2026

Quando usar

  • Você precisa exportar dados históricos de tickets para BI, auditoria ou dashboard externo
  • Você quer alimentar relatórios customizados com dados completos do Cloud Chat
  • Você precisa rastrear eventos de entrega de campanhas e disparos proativos

Pré-requisitos

  • API Key gerada por usuário administrador ou supervisor — ver Como encontrar sua API Key no Cloud Chat

  • CLOUDCHAT_DOMAIN e ACCOUNT_ID

  • Período de extração de no máximo 5 dias (120 horas) por requisição

Esta API é destinada exclusivamente para extração histórica em lote. Para consultas em tempo real ou ações em tickets, use as outras APIs do Guia Mestre.


Sobre este artigo

A Data Extract API permite exportar dados completos dos seus tickets diretamente da sua conta no Cloud Chat — 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}'

Onde encontrar os parâmetros

  • CLOUDCHAT_DOMAIN — parte da URL ao fazer login na sua conta

  • ACCOUNT_ID — após o login, o ID aparece na URL como app/accounts/{id}/dashboard. Ex: em cloudhumans.com/app/accounts/1/conversations/6341 o account_id é 1

  • API_TOKEN — gere a partir de um perfil administrador ou supervisor (na configuração do perfil)


Parâmetros obrigatórios

  • startDate — Data e hora de início (UTC) no formato yyyy-MM-ddTHH:mm:ss. Ex: 2025-03-27T01:58:59

  • endDate — Data e hora de término (UTC). Deve ser posterior a startDate e o intervalo não pode ultrapassar 5 dias (120 horas). Ex: 2025-03-28T01:59:00

  • type — Tipo de dados a exportar (ver lista abaixo)

  • account_id — ID da conta, informado no caminho da URL

Tipos disponíveis

  • BASE_TICKET_METRICS

  • TICKET_METRICS_WITH_AGENT_INFORMATION

  • TICKET_SUMMARY

  • CAMPAIGN_DELIVERY_EVENTS

  • SINGLE_CONTACT_DELIVERY_EVENTS


Parâmetro opcional: rangeFilterProperty

Define qual campo de data é usado para aplicar os filtros de período.

Valor Comportamento
CREATED_AT (padrão) Filtra pela data de criação
UPDATED_AT Filtra pela data da última atualização

Intervalo de datas

Para garantir estabilidade e performance, o intervalo máximo permitido por requisição é de 5 dias.

Para exportar períodos maiores (ex: 30 dias), divida em múltiplas requisições — 6 chamadas consecutivas com janelas de 5 dias cobrem um mês inteiro.


Limite de requisições (rate limit)

A Data Extract API aplica um limite de 20 requisições por minuto por token. Tokens distintos da mesma conta têm orçamentos independentes.

O que acontece ao ultrapassar o limite

Requisições além do limite recebem HTTP 429 Too Many Requests:

{
  "error": "Rate limit exceeded. Retry later.",
  "retry_after": 42
}

Recomendações

  • Respeite o cabeçalho Retry-After antes de tentar novamente. Loops de retry sem backoff amplificam o bloqueio

  • Para extrações grandes (ex: 30 dias), combine janelas de 5 dias com espaçamento entre requisições — 20/min é folgado para o volume típico

  • Se sua integração precisa de throughput maior de forma sustentada, acione o suporte


1. BASE_TICKET_METRICS

Retorna dados básicos dos tickets. Campos retornados:

Campo Tipo Descrição Dado Possivelmente Sensível
ticketId Inteiro ID interno do ticket Não
displayTicketId Inteiro ID exibido ao usuário no Cloud Chat — visível na URL e na busca por filtros Não
inboxId Inteiro ID da caixa de entrada Não
accountId Inteiro ID da conta Não
accountName Texto Nome da conta Não
ticketStatus Texto Status do ticket: open (Aberto), resolved (Resolvido), pending (Pendente), snoozed (Adiado) Não
teamName Texto Nome do time responsável Não
ticketPriorityName Texto Prioridade: low, medium, high, urgent Não
ticketType Texto Tipo do ticket (primeira tag associada) Não
inboxName Texto Nome da caixa de entrada Não
ticketTitle Texto Título do ticket — pode conter nome ou telefone do contato Sim
channel Texto Canal de comunicação (ex: Whatsapp) Não
tags Texto Tags do ticket separadas por vírgula Não
createdAt Timestamp Data e hora de criação do ticket Não
firstReplyAt Timestamp Data e hora da primeira resposta Não
firstReplyTime Decimal Tempo até a primeira resposta (em minutos) Não
resolvedAt Timestamp Data e hora de resolução Não
totalResolutionTimeMin Decimal Tempo total de resolução (em minutos) Não
agentId Inteiro ID do agente responsável Não
ticketOwner Texto Nome do agente responsável Sim
ticketOwnerEmail Texto E-mail do agente responsável Sim
contactId Inteiro ID do contato Não
contactName Texto Nome do contato Sim
contactEmail Texto E-mail do contato Sim
contactPhone Texto Telefone do contato Sim
campaignId Inteiro ID da campanha que originou o ticket, se aplicável Não
proactivelyInitiated Booleano Indica se o ticket foi iniciado proativamente Não

Ao configurar fuso horário da conta (ex: GMT-3), os campos timestamp (createdAt, firstAgentAssignmentTime, firstReplyAt, firstAgentFirstReplyTime, resolvedAt, firstReplyTime, firstReplierAgentAssignmentTime, firstReplierAgentFirstReplyTime, repliedAt, readAt, receivedAt, sentAt) são retornados no fuso configurado. Sem fuso configurado, os horários vêm em UTC.

Configuração: Configuração de fuso horário.

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",
    "campaignId": 123,
    "proactivelyInitiated": true
  }
]

2. TICKET_METRICS_WITH_AGENT_INFORMATION

Inclui detalhes sobre o agente que respondeu e resolveu. Campos adicionais:

Campo Tipo Descrição Dado Possivelmente Sensível
ticketLink Texto URL direta para o ticket no Cloud Chat Não
agentOnResolutionId Inteiro ID do agente humano que resolveu o ticket Não
agentOnResolutionName Texto Nome do agente humano que resolveu Sim
agentOnResolutionEmail Texto E-mail do agente humano que resolveu Sim
firstAgentReplyId Inteiro ID do primeiro agente humano que respondeu Não
firstAgentReplyName Texto Nome do primeiro agente humano que respondeu Sim
firstAgentReplyEmail Texto E-mail do primeiro agente humano que respondeu Sim
firstAgentAssignmentTime Timestamp Data e hora em que o ticket foi atribuído ao primeiro agente Não
firstAgentFirstReplyTime Timestamp Data e hora da primeira resposta do agente Não
firstReplierAgentAssignmentTime Timestamp Data e hora de atribuição do agente que respondeu primeiro Não
firstReplierAgentFirstReplyTime Timestamp Timestamp da primeira resposta do agente que respondeu primeiro Não
firstAgentReplyTimeMin Decimal Tempo entre atribuição e primeira resposta do agente (min) Não
firstAgentResolutionTimeMin Decimal Tempo entre atribuição e resolução do ticket (min) Não
csatScore Numérico Nota de satisfação (CSAT) atribuída pelo cliente Não
csatFeedback Texto Comentário textual deixado pelo cliente na pesquisa CSAT Sim
contactCustomFields JSON Campos customizados do contato — podem conter dados pessoais Sim
conversationCustomFields JSON Campos customizados da conversa — podem conter dados pessoais Sim
conversationAdditionalFields JSON Metadados adicionais da conversa — podem conter dados pessoais Sim

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": "{}"
  }
]
  • firstAgentReplyTimeMin — tempo entre firstAgentAssignmentTime e firstAgentFirstReplyTime

  • firstAgentResolutionTimeMin — tempo entre firstAgentAssignmentTime e resolvedAt


3. TICKET_SUMMARY

Retorna a transcrição completa da conversa do ticket. Campos retornados:

Campo Tipo Descrição Dado Possivelmente Sensível
ticketId Inteiro ID interno do ticket Não
displayTicketId Inteiro ID exibido ao usuário no Cloud Chat — visível na URL e na busca por filtros Não
ticketLink Texto URL direta para o ticket no Cloud Chat Não
summary Texto Transcrição completa da conversa entre cliente e atendente Sim
[
  {
    "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, rastreando por contato e campanha o status das mensagens.

Campos retornados:

Campo Tipo Descrição Dado Possivelmente Sensível
id Inteiro ID único do evento de entrega Não
campaignId Inteiro ID da campanha Não
campaignTitle Texto Título da campanha Não
audience Texto Audiência/lista utilizada na campanha Não
contactId Inteiro ID do contato destinatário Não
contactName Texto Nome do contato destinatário Sim
contactEmail Texto E-mail do contato destinatário Sim
contactPhoneNumber Texto Telefone do contato destinatário Sim
ticketId Inteiro ID do ticket gerado pelo disparo, se houver Não
displayTicketId Texto ID exibido ao usuário no Cloud Chat — visível na URL e na busca por filtros Não
messageSent Booleano Flag que indica se a mensagem foi enviada à API do WhatsApp (Meta) Não
sentAt Timestamp Data e hora do envio Não
messageReceived Booleano Flag que indica se a mensagem foi entregue ao dispositivo do contato Não
receivedAt Timestamp Data e hora da entrega Não
messageRead Booleano Flag que indica se a mensagem foi lida (depende das configurações de privacidade do contato) Não
readAt Timestamp Data e hora da leitura Não
messageReplied Booleano Flag que indica se a mensagem foi respondida Não
repliedAt Timestamp Data e hora da primeira resposta Não
error Texto Erro de entrega: número inválido, sem WhatsApp, bloqueio, etc. Não
createdAt Timestamp Data e hora de criação do registro Não
updatedAt Timestamp Data e hora da última atualização Não

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 proativas de disparo único (não campanhas). Campos retornados:

Campo Tipo Descrição Dado Possivelmente Sensível
id Inteiro ID único do evento de entrega Não
contactId Inteiro ID do contato destinatário Não
contactName Texto Nome do contato destinatário Sim
contactEmail Texto E-mail do contato destinatário Sim
contactPhoneNumber Texto Telefone do contato destinatário Sim
ticketId Inteiro ID do ticket gerado pelo disparo, se houver Não
displayTicketId Texto ID exibido ao usuário no Cloud Chat — visível na URL e na busca por filtros Não
messageSent Booleano Flag que indica se a mensagem foi enviada à API do WhatsApp (Meta) Não
sentAt Timestamp Data e hora do envio Não
messageReceived Booleano Flag que indica se a mensagem foi entregue ao dispositivo do contato Não
receivedAt Timestamp Data e hora da entrega Não
messageRead Booleano Flag que indica se a mensagem foi lida (depende das configurações de privacidade do contato) Não
readAt Timestamp Data e hora da leitura Não
messageReplied Booleano Flag que indica se a mensagem foi respondida Não
repliedAt Timestamp Data e hora da primeira resposta Não
error Texto Erro de entrega: número inválido, sem WhatsApp, bloqueio, etc. Não
createdAt Timestamp Data e hora de criação do registro Não
updatedAt Timestamp Data e hora da última atualização Não

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"
  }
]

Observações