> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sell.ia.proativia.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Mudanças na API pública do WavUps CRM que podem afetar a sua integração.

<Update label="29 de setembro de 2026" description="Versão 2.4.0">
  ## Leads duplicados são mesclados

  O `POST /lead` não cria mais um lead novo quando a conta já tem um lead com o mesmo **CPF/CNPJ**, **telefone** ou **e-mail**. Nesse caso, a API:

  * devolve o lead **existente**, com o mesmo formato de resposta e o mesmo status `201`;
  * preenche nele só os campos que estavam **vazios**, sem sobrescrever o que já estava preenchido.

  A busca verifica primeiro o CPF/CNPJ, depois o telefone e por fim o e-mail. O telefone é comparado sem DDI e sem formatação, então `5547999999999`, `+55 (47) 99999-9999` e `47999999999` são o mesmo número. No e-mail, maiúsculas e minúsculas não fazem diferença.

  <Warning>
    Se a sua integração cria um lead e depois o exclui (por exemplo, em testes), confira o `id` devolvido antes de excluir: ele pode ser de um lead que já existia na conta.
  </Warning>

  Veja [Criar Lead](/api-reference/leads/criar).

  ## Todas as referências precisam ser da sua conta

  A conta vem sempre do seu token. Um `accountId` enviado no corpo é ignorado. Qualquer id que você informar precisa pertencer à conta do token; se não pertencer, a API responde `404` e não grava nada:

  | Campo | Rotas |
  | - | - |
  | `leadOwner` | `POST /lead`, `PUT /lead/{id}` |
  | `dealOwner` | `POST` e `PUT` de negócios |
  | `conversationOwnerId` | criar conversa (`POST /lead/{id}/conversation`, `POST /account-external-conversation`) |
  | setor e responsável | `PUT /account-external-conversation/{id}` |
  | `accountIntegration` | `POST` e `PUT` de setores |
  | categoria | `POST` e `PUT` de produtos |
  | conversa | `POST` e `PUT` de atendimentos |
  | lead, produto e conversa | `POST` e `PUT` de agendamentos |
  | lead e etiqueta | `POST` e `DELETE /lead/label/assign` |

  Nos campos `leadOwner`, `dealOwner` e `conversationOwnerId`, use o **`id` do vínculo** devolvido por [Listar Membros da Conta](/api-reference/membros/listar), e não o `User.id`. Antes desta versão, um id inválido nesses campos devolvia `500`; agora devolve `404`.

  Também passam a responder `404` quando o registro é de outra conta:

  * `GET`, `PUT` e `DELETE /account-crm-pipeline-stage/{id}`;
  * `PUT /account-external-conversation/{id}/update-status`.

  E mais dois ajustes:

  * `GET /account-crm-pipeline-stage` sem `pipelineId` devolve só as etapas dos pipelines da sua conta.
  * Em `PUT /category/{id}`, os campos `id`, `accountId`, `createdAt` e `updatedAt` do corpo são ignorados.

  ## Remetente das mensagens (`senderId`)

  Em `POST /whatsapp/send-message` e `POST /instagram/send-message`, o `senderId` precisa ser de um membro da conta. Você pode enviar o `User.id` ou o `id` do vínculo (os dois vêm em [Listar Membros da Conta](/api-reference/membros/listar)).

  Um `senderId` que não é de um membro da conta responde `404` e **a mensagem não é enviada**. Omita o campo para registrar a mensagem como enviada por IA/automação.

  ## Etiquetas

  * `DELETE /lead/label/assign` responde `404` quando o lead ou a etiqueta não existem na conta. Antes, respondia `200` mesmo sem ter o que remover.
  * `POST /lead/label` cria sempre etiquetas de lead. Um `labelType` diferente enviado no corpo é ignorado.

  ## Tokens desativados

  Um token de API desativado recebe `401` em todas as rotas.
</Update>
