Changelog
Mudanças na API pública do WavUps CRM que podem afetar a sua integração.
leadTemperature(outemperature) precisa ser um número inteiro noPOSTe noPUTde leads e no filtro doGET /lead. Um texto como"quente"ou um decimal como2.5agora responde400comleadTemperature must be an integer(antes, o valor quebrava a gravação com500).- Número em texto continua aceito:
"3"é gravado como3.nulllimpa a temperatura.
- O
PUT /lead/{id}agora grava apenas os campos documentados em Atualizar Lead. Outros campos do corpo são ignorados, sem erro.
Antes desta versão, campos fora da documentação enviados no PUT podiam ser gravados no lead. Se a sua integração dependia disso, envie só os campos da referência.
currencyagora aceita qualquer moeda corrente da ISO 4217 (antes, sóBRL,USDeEUR), comoGBP,JPY,ARSouCLP, noPOSTe noPUTde negócios.- O código é aceito em minúsculas e com espaços nas pontas:
"usd"é gravado comoUSD. - Código desconhecido continua respondendo
400, agora com a mensagemInvalid currency. Use an ISO 4217 code, such as BRL, USD or EUR. - As respostas trazem sempre o código da moeda (negócio sem moeda gravada vem como
BRL), e ovalueestá sempre nessa moeda: mudar acurrencynão converte o valor.
{ "title": "Contrato anual", "stageId": "ID_DA_ETAPA", "value": 1500, "currency": "usd" }GET /leadeGET /lead/{id}passam a trazercountry,state,city,neighborhood,streetAddress,number,complement,zipCodeedescription(antes, só a resposta doPOSTtrazia esses campos). São campos novos: nada mudou nos que já existiam.POST /leadePUT /lead/{id}aceitamcountrycom o nome do país em português. Um nome da lista de países da plataforma é gravado com a grafia dela, sem diferenciar maiúsculas e acentos ("brasil"viraBrasil,"estados unidos"viraEstados Unidos); outro texto é gravado como veio.
{ "name": "Maria Souza", "city": "Lisboa", "country": "portugal" }Veja Criar Lead, Atualizar Lead, Obter Lead e Atualizar Negócio.
- Os administradores agora escolhem a ordem dos setores em Mensagens > Ordenar setores, e o
GET /chat-sectorsegue essa ordem (antes, do mais recente para o mais antigo). Setores que nunca foram reordenados ficam na ordem de criação, do mais antigo para o mais recente. - Cada setor traz o campo novo
position(número inteiro, menor primeiro).
Veja Listar Setores do Chat.
A API e os webhooks agora estão disponíveis a partir do plano Equipe (antes, só nos planos Pro e Escala). Nada muda para quem já usa.
Cada pipeline agora tem uma etapa de ganho e, se quiser, uma etapa de perdido (em Pipelines > Etapas de ganho e perdido, na plataforma). O status do negócio acompanha a etapa, e a API segue a mesma regra:
- Negócio criado numa etapa de ganho (
POST) já nascewon, e numa etapa de perdido já nascelost, mesmo que o corpo traga outrostatus. statuswonoulostcom uma etapa em andamento leva o negócio para a primeira etapa de ganho ou de perdido do pipeline. NoPUT, mover para uma etapa de ganho ou de perdido muda o status, e reabrir (open) leva de volta para a última etapa em andamento.- Todo negócio ganho tem a data do ganho (
wonAt) e todo perdido a data da perda (lostAt). Se você não informar, vale o momento da criação ou da alteração. Para registrar uma venda que já aconteceu, envie a data real:"wonAt": "2026-07-15". Datas no futuro respondem400. - Enviar o mesmo status de novo não muda a data. No
PUT,wonAt/lostAttambém corrigem a data de um negócio já ganho ou perdido.
Antes desta versão, o negócio criado ou marcado como ganho pela API ficava sem wonAt, e um status fora de open, won e lost era gravado como veio. Agora o wonAt/lostAt sempre é preenchido e um status inválido responde 400.
currency(BRL,USDouEUR; padrãoBRL) noPOST, noPUTe nas respostas. Outro valor responde400.- As respostas trazem
lossReasonId(o motivo da perda escolhido na plataforma) elossNote(a observação da perda). Os dois podem ser enviados ao marcar o negócio como perdido; umlossReasonIdque não é da conta responde404. GET,GET /{id}e a resposta doPOSTpassam a trazerwonAtelostAtde verdade (antes vinham ausentes).
Veja Criar Negócio e Atualizar Negócio.
Os campos personalizados que sua conta cria em Leads > Campos agora aparecem e podem ser gravados pela API, pela chave do campo (e não pelo id interno).
GET /leadeGET /lead/{id}, e a resposta doPOST /lead, trazemcustomFields: um objeto{ "<chave>": valor }só com os campos ativos e preenchidos. Campos de seleção trazem o nome da opção e os de seleção múltipla uma lista de nomes. Sem nenhum valor, vem{}.POST /leadePUT /lead/{id}aceitamcustomFieldsno corpo. Seleção aceita o nome ou o id da opção; números,1500ou1.500,50; datas,2026-03-15ou15/03/2026; Sim/Não,true/falseousim/não.- No
PUT,nullou texto vazio limpa o campo, e os campos que você não enviar ficam como estão. Campos obrigatórios da conta não são exigidos pela API.
Nos negócios (/account-crm-pipeline-deal) vale o mesmo, com uma diferença: os campos de negócio são por pipeline.
GET,GET /{id}e a resposta doPOSTtrazemcustomFieldssó com os campos do pipeline do negócio.POSTePUT /{id}aceitamcustomFieldspela chave. Só valem os campos do pipeline da etapa em que o negócio fica (noPUT, a etapa de destino quando o negócio muda de etapa).
Chave de campo desconhecida (ou de outro pipeline, nos negócios) e valor que não combina com o tipo do campo respondem 400 e nada é gravado. Antes desta versão, um customFields enviado no corpo era gravado como veio, sem validação; agora ele só vale no formato acima.
Veja Criar Lead, Atualizar Lead, Listar Leads, Obter Lead e Criar Negócio.
Um lead pode ser a empresa de um grupo ou uma das pessoas dele, cada uma com o seu cargo. GET /lead e GET /lead/{id} passam a aceitar ?include=groups, que acrescenta dois campos a cada lead:
groups: os grupos de que o lead é uma das pessoas, comid,namee orole(cargo) dele em cada um;company: o grupo de que o lead é a empresa, comid,nameepeopleCount, ounull.
Sem o parâmetro, a resposta continua igual à de antes: a sua integração atual não muda.
Veja Listar Leads e Obter Lead.
Em POST /lead e PUT /lead/{id}, o createdByAccountUserId informado também precisa ser o id do vínculo de um membro da sua conta (use Listar Membros da Conta). Se não for, a API responde 404 e não grava nada, como já acontece com leadOwner.
Excluir um lead apaga também a foto dele, e excluir um negócio, uma etapa ou um pipeline apaga os arquivos anexados aos negócios afetados. O formato das respostas não muda.
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.
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.
Veja Criar Lead.
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, 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,PUTeDELETE /account-crm-pipeline-stage/{id};PUT /account-external-conversation/{id}/update-status.
E mais dois ajustes:
GET /account-crm-pipeline-stagesempipelineIddevolve só as etapas dos pipelines da sua conta.- Em
PUT /category/{id}, os camposid,accountId,createdAteupdatedAtdo corpo são ignorados.
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).
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.
DELETE /lead/label/assignresponde404quando o lead ou a etiqueta não existem na conta. Antes, respondia200mesmo sem ter o que remover.POST /lead/labelcria sempre etiquetas de lead. UmlabelTypediferente enviado no corpo é ignorado.
Um token de API desativado recebe 401 em todas as rotas.