Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.lfautomatiza.com/llms.txt

Use this file to discover all available pages before exploring further.

Conversas (também chamadas de tickets) são o núcleo da API do LF Connect. Cada conversa pertence a uma inbox (canal) e é vinculada a um contato.

Listar conversas

GET /api/v1/accounts/{account_id}/conversations
ParâmetroTipoDescrição
statusenumopen, resolved, pending, snoozed, all
assignee_typeenumme, unassigned, assigned, unassigned_or_me
inbox_idintegerFiltra por inbox
team_idintegerFiltra por equipe
labels[]arrayUma ou mais labels (combinação AND)
qstringBusca textual
pageintegerPaginação (25 itens por página)
curl "https://chat.lfautomatiza.com/api/v1/accounts/1/conversations?status=open&assignee_type=me" \
  -H "api_access_token: $TOKEN"

Resposta

{
  "data": {
    "meta": {
      "mine_count": 12,
      "assigned_count": 47,
      "unassigned_count": 5,
      "all_count": 64
    },
    "payload": [
      {
        "id": 1287,
        "messages": [],
        "account_id": 1,
        "inbox_id": 1,
        "status": "open",
        "assignee_id": 7,
        "team_id": null,
        "display_id": 123,
        "agent_last_seen_at": 1715972400,
        "contact_last_seen_at": 1715972350,
        "timestamp": 1715972350,
        "created_at": 1715900000,
        "updated_at": 1715972400,
        "labels": ["financeiro"],
        "meta": {
          "sender": {
            "id": 542,
            "name": "Carlos Antônio",
            "phone_number": "+5521999544338"
          },
          "assignee": {
            "id": 7,
            "name": "Sabrina",
            "available_name": "Sabrina"
          }
        },
        "messages_count": 8
      }
    ]
  }
}

Detalhe da conversa

GET /api/v1/accounts/{account_id}/conversations/{id}
curl "https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/1287" \
  -H "api_access_token: $TOKEN"

Criar conversa

POST /api/v1/accounts/{account_id}/conversations
CampoTipoObrigatórioDescrição
source_idstringIdentificador externo (ex: número WhatsApp)
inbox_idintegerInbox onde a conversa nasce
contact_idintegerContato vinculado
additional_attributesobjectMetadata extra
custom_attributesobjectAtributos personalizados
statusenumopen (padrão) ou pending
assignee_idintegerAgente responsável inicial
team_idintegerEquipe responsável
messageobjectPrimeira mensagem (opcional)
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations \
  -H "api_access_token: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "source_id": "5511999999999",
    "inbox_id": 1,
    "contact_id": 542,
    "status": "open",
    "assignee_id": 7,
    "message": {
      "content": "Olá! Em que posso ajudar?",
      "message_type": "outgoing"
    }
  }'

Atribuir agente / equipe

POST /api/v1/accounts/{account_id}/conversations/{id}/assignments
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/1287/assignments \
  -H "api_access_token: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "assignee_id": 7, "team_id": 3 }'
Passe "assignee_id": null pra remover o agente. Mesma lógica para team_id.

Mudar status

POST /api/v1/accounts/{account_id}/conversations/{id}/toggle_status
Alterna entre os status disponíveis (open ↔ resolved). Para definir um status específico:
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/1287/toggle_status \
  -H "api_access_token: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "status": "resolved" }'
Valores aceitos: open, resolved, pending, snoozed. Pra fazer snooze com data específica:
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/1287/toggle_status \
  -H "api_access_token: $TOKEN" \
  -d '{ "status": "snoozed", "snoozed_until": "2026-05-25T14:00:00Z" }'

Mudar prioridade

TOGGLE /api/v1/accounts/{account_id}/conversations/{id}/toggle_priority
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/1287/toggle_priority \
  -H "api_access_token: $TOKEN" \
  -d '{ "priority": "urgent" }'
Valores: low, medium, high, urgent, null (sem prioridade).

Adicionar / remover labels

POST /api/v1/accounts/{account_id}/conversations/{id}/labels
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/1287/labels \
  -H "api_access_token: $TOKEN" \
  -d '{ "labels": ["financeiro", "urgente"] }'
O array enviado substitui todas as labels atuais. Pra remover, mande array sem ela.

Silenciar conversa

AçãoEndpoint
SilenciarPOST /conversations/{id}/mute
ReativarPOST /conversations/{id}/unmute
Conversa silenciada não dispara notificações para os agentes mas continua aparecendo na lista.

Enviar transcrição por e-mail

POST /api/v1/accounts/{account_id}/conversations/{id}/transcript
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/1287/transcript \
  -H "api_access_token: $TOKEN" \
  -d '{ "email": "supervisor@empresa.com" }'

Filtro avançado

Quando os query params do GET não chegam, use o endpoint de filtro com payload estruturado:
POST /api/v1/accounts/{account_id}/conversations/filter
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/filter \
  -H "api_access_token: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": [
      {
        "attribute_key": "status",
        "filter_operator": "equal_to",
        "values": ["open"],
        "query_operator": "and"
      },
      {
        "attribute_key": "labels",
        "filter_operator": "contains",
        "values": ["vip"],
        "query_operator": "and"
      },
      {
        "attribute_key": "created_at",
        "filter_operator": "greater_than",
        "values": ["2026-05-01"]
      }
    ]
  }'

Operadores suportados

OperadorAplica-se a
equal_to, not_equal_toTudo
contains, does_not_containStrings, arrays
greater_than, less_thanNúmeros, datas
is_present, is_not_presentTudo (verifica null)
is_greater_than, is_less_thanDatas

Atributos consultáveis

status, assignee_id, team_id, inbox_id, labels, priority, created_at, last_activity_at, browser_language, country_code, referer, campaign_id, qualquer custom_attributes.{chave}.

Métricas agregadas

GET /api/v1/accounts/{account_id}/conversations/meta
Retorna contagens (mine_count, unassigned_count, etc.) sem precisar baixar a lista inteira.
curl "https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/meta?status=open" \
  -H "api_access_token: $TOKEN"

Marcar visualização

POST /api/v1/accounts/{account_id}/conversations/{id}/update_last_seen
Atualiza o agent_last_seen_at da conversa — útil pra contadores de não-lidas em integrações que mostram a UI fora da plataforma.

Status de digitação

POST /api/v1/accounts/{account_id}/conversations/{id}/toggle_typing_status
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/1287/toggle_typing_status \
  -H "api_access_token: $TOKEN" \
  -d '{ "typing_status": "on" }'
Valores: on, off. Útil quando um bot demora pra responder e você quer mostrar o indicador “digitando…” pro cliente.

Custom attributes da conversa

Atualize atributos personalizados sem mexer em outros campos:
POST /api/v1/accounts/{account_id}/conversations/{id}/custom_attributes
curl -X POST https://chat.lfautomatiza.com/api/v1/accounts/1/conversations/1287/custom_attributes \
  -H "api_access_token: $TOKEN" \
  -d '{
    "custom_attributes": {
      "valor_oportunidade": 1500,
      "fonte": "google-ads"
    }
  }'

Códigos de resposta

CódigoQuando acontece
200 OKListagem, leitura, atualização
201 CreatedConversa criada
204 No ContentAtribuição/labels atualizadas com sucesso
400 Bad RequestPayload inválido
401 UnauthorizedToken ausente/inválido
403 ForbiddenUsuário não tem acesso à conversa
404 Not FoundConversa não existe
422 Unprocessable EntityInbox/contato inválido na criação