Pular para o conteúdo principal
GET
/
api
/
v1
/
qualitative-export
/
messages
curl -s \
  -H "X-API-Key: mindo_xxxxxxxxxxxxxxxxxxxxxxxx" \
  "https://api.mindosoftware.com/api/v1/qualitative-export/messages?company_id=42&from=2026-04-01T00:00:00Z&to=2026-04-07T00:00:00Z"
{
  "message_id": "msg_a1b2c3d4e5f6a1b2c3d4e5f6",
  "conversation_id": "conv_f6e5d4c3b2a1f6e5d4c3b2a1",
  "occurred_at": "2026-04-05T12:30:45.123456",
  "channel": "META_WHATSAPP",
  "direction": "inbound",
  "author": {
    "type": "contact",
    "id": "ctc_a1b2c3d4e5f6a1b2c3d4e5f6",
    "display_name": null
  },
  "agent": null,
  "content": {
    "type": "text",
    "text": "Olá, quero consultar o status do meu pedido",
    "media_url": null,
    "media_mime": null
  },
  "context": {
    "reply_to_message_id": null,
    "thread_position": null
  },
  "metadata": {
    "client_id": "cmp_d4c3b2a1f6e5d4c3b2a1f6e5",
    "company_id": 42,
    "exported_at": "2026-05-05T18:30:00.000000Z",
    "schema_version": "1.0"
  },
  "classifications": [
    { "label": "Intenção", "value": "consulta_pedido" }
  ]
}

Descrição

Exporta mensagens de chat como um stream NDJSON (Newline-Delimited JSON) para análise qualitativa. Todos os IDs de pessoas são anonimizados automaticamente com HMAC-SHA256.
A resposta é um stream NDJSON (application/x-ndjson), não JSON padrão. Cada linha é um objeto JSON independente.

Header de autenticação

X-API-Key
string
obrigatório
Sua API Key do Mindo. Aceita dois tipos:
  • Global (cross-company): mindo_global_<key> — acesso a todas as empresas
  • De empresa: mindo_xxxxxxxxxxxxxxxxxxxxxxxx — acesso limitado à empresa associada

Query parameters

company_id
string
obrigatório
ID da empresa. Aceita um inteiro ou lista separada por vírgulas: 42 ou 42,57.
from
string
obrigatório
Data/hora de início (ISO-8601, inclusivo). Exemplo: 2026-04-01T00:00:00Z.
to
string
obrigatório
Data/hora de fim (ISO-8601, exclusivo). Deve ser maior que from. Máximo de 31 dias de intervalo.
channel
string
padrão:"all"
Filtro de plataforma: whatsapp, instagram, messenger, all.
agent_id
string
Filtrar por agente IA. Um inteiro ou lista CSV: 5 ou 5,12.
direction
string
padrão:"all"
Direção da mensagem: incoming, outgoing, all.
include
string
padrão:"classifications"
Campos extras a incluir (CSV): classifications, extractions, tool_calls, trace_id.
cursor
string
Cursor de paginação obtido de next_cursor na resposta anterior.
limit
integer
padrão:"5000"
Quantidade máxima de linhas por chamada. Intervalo: 1–10000.

Resposta

A resposta é um stream NDJSON. Cada linha é um objeto JSON com os seguintes campos:
message_id
string
ID anonimizado da mensagem (msg_<24 hex chars>).
conversation_id
string
ID anonimizado do chat (conv_<24 hex chars>).
occurred_at
string
Timestamp ISO-8601 de quando a mensagem foi enviada.
channel
string
Plataforma: META_WHATSAPP, WHATSAPP_EVOLUTION, INSTAGRAM, MESSENGER, MANYCHAT_WHATSAPP, MANYCHAT_INSTAGRAM.
direction
string
"inbound" (do contato) ou "outbound" (do sistema/agente/operador).
author
object
Quem enviou a mensagem.
agent
object
Dados do agente IA (somente se a mensagem foi gerada por um agente).
content
object
Conteúdo da mensagem.
context
object
Contexto da conversa.
metadata
object
Dados de exportação.

Campos opcionais (parâmetro include)

Estes campos só aparecem se solicitados no parâmetro include.
classifications
array
Classificações aplicadas à mensagem (incluído por padrão).
extractions
array
Dados extraídos da mensagem por extratores de campos personalizados.
tool_calls
array
Ferramentas executadas pelo agente IA durante a geração da mensagem.
trace_id
string
ID de rastreamento no Langfuse para debugging. Só tem valor em mensagens outgoing geradas por um agente IA.

Paginação

A paginação é baseada em cursor. Se houver mais resultados, a última linha do stream é um sentinel:
{"_truncated": true, "next_cursor": "<cursor_string>"}
Envie a próxima requisição com cursor=<next_cursor> para obter a página seguinte. Quando não há sentinel, todos os dados foram retornados.

Anonimização de IDs

PrefixoRepresenta
msg_ID da mensagem
conv_ID da conversa
ctc_ID do contato
agt_ID do agente (em author)
op_ID do operador humano
cmp_ID da empresa (em metadata)
A anonimização é determinística por empresa, irreversível e consistente entre exportações.
curl -s \
  -H "X-API-Key: mindo_xxxxxxxxxxxxxxxxxxxxxxxx" \
  "https://api.mindosoftware.com/api/v1/qualitative-export/messages?company_id=42&from=2026-04-01T00:00:00Z&to=2026-04-07T00:00:00Z"
{
  "message_id": "msg_a1b2c3d4e5f6a1b2c3d4e5f6",
  "conversation_id": "conv_f6e5d4c3b2a1f6e5d4c3b2a1",
  "occurred_at": "2026-04-05T12:30:45.123456",
  "channel": "META_WHATSAPP",
  "direction": "inbound",
  "author": {
    "type": "contact",
    "id": "ctc_a1b2c3d4e5f6a1b2c3d4e5f6",
    "display_name": null
  },
  "agent": null,
  "content": {
    "type": "text",
    "text": "Olá, quero consultar o status do meu pedido",
    "media_url": null,
    "media_mime": null
  },
  "context": {
    "reply_to_message_id": null,
    "thread_position": null
  },
  "metadata": {
    "client_id": "cmp_d4c3b2a1f6e5d4c3b2a1f6e5",
    "company_id": 42,
    "exported_at": "2026-05-05T18:30:00.000000Z",
    "schema_version": "1.0"
  },
  "classifications": [
    { "label": "Intenção", "value": "consulta_pedido" }
  ]
}

Mapeamento de canais

Valor do parâmetro channelPlataformas incluídas
whatsappMETA_WHATSAPP, WHATSAPP_EVOLUTION, MANYCHAT_WHATSAPP
instagramINSTAGRAM, MANYCHAT_INSTAGRAM
messengerMESSENGER
allTodas as plataformas

Erros mid-stream

Se ocorrer um erro após o stream já ter iniciado, ele é emitido como uma linha NDJSON adicional:
{"_error": {"code": "ERROR_CODE", "message": "descrição do erro"}}

Limites

RestriçãoValor
Intervalo máximo de datas31 dias
Máximo de linhas por requisição10.000
Padrão de linhas por requisição5.000
Mensagens excluídasExcluídas automaticamente

Casos de uso

Exportar apenas mensagens outgoing de um agente específico com tool_calls para avaliar quais ferramentas foram usadas e com qual sucesso:
GET /api/v1/qualitative-export/messages?company_id=42&from=2026-04-01T00:00:00Z&to=2026-04-07T00:00:00Z&agent_id=5&direction=outgoing&include=classifications,tool_calls,trace_id
Exportar mensagens incoming com suas classificações para avaliar ou retreinar modelos:
GET /api/v1/qualitative-export/messages?company_id=42&from=2026-04-01T00:00:00Z&to=2026-04-30T00:00:00Z&direction=incoming&include=classifications,extractions
Exportar todas as mensagens de múltiplas empresas para auditoria comparativa:
GET /api/v1/qualitative-export/messages?company_id=42,57&from=2026-04-01T00:00:00Z&to=2026-04-07T00:00:00Z&include=classifications
Exportar mensagens com trace_id para correlacionar com rastreamentos no Langfuse:
GET /api/v1/qualitative-export/messages?company_id=42&from=2026-04-05T10:00:00Z&to=2026-04-05T12:00:00Z&include=tool_calls,trace_id