CRM Oficina Martech
ReferênciaConversas

Listar conversas

GET /conversations — lista as conversas da organização com contato, canal, situação, responsável e instantes da última atividade.

GET/conversationsBeta

Escopo necessário: conversations:read

Lista as conversas da organização (resolvida pela API key), da atividade mais recente para a mais antiga (last_message_at decrescente). Cada linha traz o contato, o canal, a situação, o responsável e a prévia da última mensagem. Para o conteúdo completo, use GET /conversations/{id}/messages.

Endpoint

GET https://crm.oficinamartech.com/api/v1/conversations

Parâmetros de query

ParâmetroTipoDescrição
statusopen | pending | impedido | resolved | lost | archivedFiltra por situação.
channelwhatsapp | whatsapp_cloud_api | instagram | telegram | emailFiltra por canal.
assigned_toUUID | noneFiltra pelo responsável (user_id de GET /members); none devolve as conversas sem responsável.
contact_idUUIDFiltra por contato.
is_grouptrue | falsefalse exclui grupos; true devolve só grupos.
active_sincedateSomente conversas com última mensagem a partir desta data (inclusive). ISO 8601 ou YYYY-MM-DD.
active_untildateSomente conversas com última mensagem antes desta data (exclusive). ISO 8601 ou YYYY-MM-DD.
limitint (1-100)Tamanho da página. Default: 50.
offsetint (0-10000)Deslocamento da página. Default: 0.

Um parâmetro fora desta lista é recusado com 400.

A paginação informa has_more e next_offset, sem total: contar todas as conversas de um filtro custaria mais que a própria página. offset vai até 10.000; além disso next_offset vem null mesmo com has_more true. Para percorrer um histórico longo, avance por janelas de active_since/active_until. Datas sem horário (YYYY-MM-DD) são lidas como meia-noite UTC.

Exemplo

curl -s "https://crm.oficinamartech.com/api/v1/conversations?status=open&assigned_to=none&limit=1" \
  -H "Authorization: Bearer crm_live_SEU_PREFIXO_SEU_SEGREDO"

Resposta 200

{
  "data": [
    {
      "id": "c0ffee00-58cc-4372-a567-0e02b2c3d479",
      "contact_id": "f47ac10b-58cc-4372-a567-0e02b2c3d479",
      "contact": {
        "name": "Maria Souza",
        "phone": "+5511999990000",
        "email": "maria@example.com"
      },
      "channel": "whatsapp",
      "status": "open",
      "status_reason": null,
      "is_group": false,
      "chat_name": null,
      "assigned_to": null,
      "assigned_at": null,
      "unread_count": 2,
      "needs_human_agent": false,
      "last_message_at": "2026-11-12T18:20:11.000Z",
      "last_customer_message_at": "2026-11-12T18:20:11.000Z",
      "last_operator_message_at": "2026-11-12T17:02:40.000Z",
      "last_message_preview": "Consegue me enviar a proposta?",
      "outcome_type": null,
      "outcome_label": null,
      "outcome_set_at": null,
      "created_at": "2026-11-10T13:00:00.000Z",
      "updated_at": "2026-11-12T18:20:11.000Z"
    }
  ],
  "pagination": {
    "limit": 1,
    "offset": 0,
    "has_more": true,
    "next_offset": 1
  }
}

contact é null quando a conversa não tem contato vinculado. last_customer_message_at posterior a last_operator_message_at indica conversa aguardando resposta da equipe.

Erros

StatusCódigoQuando
400invalid_queryQuery inválida (parâmetro desconhecido, UUID malformado, situação ou canal desconhecido, data inválida).
401missing_api_key / invalid_api_keyAPI key ausente, inválida, expirada ou revogada.
403missing_scopeA chave não tem o escopo conversations:read.
429rate_limitedAcima de 120 req/min por chave ou por organização.
500—Erro interno.

On this page