Atualizar um lead
const url = 'https://dattacrm.com.br/api/v1/leads/0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"name":"example","email":"example","phone":"example","stageId":"0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f","ownerId":"0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f","value":1,"probability":1,"lossReason":"example","customFields":{"additionalProperty":"example"},"addTags":["example"],"removeTags":["example"],"addListIds":["0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f"],"removeListIds":["0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f"]}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request PATCH \ --url https://dattacrm.com.br/api/v1/leads/0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example", "email": "example", "phone": "example", "stageId": "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f", "ownerId": "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f", "value": 1, "probability": 1, "lossReason": "example", "customFields": { "additionalProperty": "example" }, "addTags": [ "example" ], "removeTags": [ "example" ], "addListIds": [ "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f" ], "removeListIds": [ "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f" ] }'Altera campos de um lead existente: nome, e-mail, telefone, responsável e campos personalizados, e acrescenta ou remove tags e listas. Só muda o que vier no corpo (exige pelo menos um campo). Mudar o responsável e mexer em tags disparam os mesmos eventos e automações da edição pela tela. Tudo é gravado junto: se algo falhar, nada é gravado. Etapa, valor e motivo da perda são do negócio (lead × lista): para eles use PATCH /leads/{id}/lists/{listId}; enviá-los aqui responde 400 field_moved. Responde 404 para lead ou responsável que não existem na conta e 409 quando o telefone ou o e-mail já é de outro lead (inclusive de um contato oculto, que conta na unicidade).
Authorizations
Seção intitulada “Authorizations ”Parameters
Seção intitulada “ Parameters ”Path Parameters
Seção intitulada “Path Parameters ”Identificador do lead.
Example
0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6fIdentificador do lead.
Request Body required
Seção intitulada “Request Body required ”Campos a alterar. O que não vem no corpo não muda; null limpa os campos que aceitam vazio. Exige pelo menos um campo.
object
Novo nome do lead (1 a 120 caracteres).
Removido: o valor é do negócio (lead × lista). Enviar este campo responde 400 field_moved; use PATCH /leads/{id}/lists/{listId} (update_lead_in_list).
Removido: não há mais probabilidade por etapa. Enviar este campo responde 400 field_moved; use PATCH /leads/{id}/lists/{listId} (update_lead_in_list).
Campos personalizados, indexados pela chave do campo (veja list_custom_fields). Mescla com os que o lead já tem: só as chaves enviadas mudam. Valor null remove a chave. O campo origem do lead, depois de definido, não é trocado.
object
Valor do campo.
Tags a acrescentar, pelo nome (até 30). Tag nova é criada no catálogo da conta. Tag automática é ignorada: o CRM a põe e tira pela regra dela.
Tags a remover do lead, pelo nome (até 30), sem diferenciar maiúsculas. Tag que o lead não tem e tag automática são ignoradas.
Listas a que acrescentar o lead (até 100). Lista de outra conta é ignorada.
Listas das quais tirar o lead (até 100). Lista em que o lead não está é ignorada.
Responses
Seção intitulada “ Responses ”Sucesso.
object
O lead depois da atualização.
object
Lead (contato/card do funil) no formato público da API.
object
Identificador do lead.
Nome do lead.
E-mail do lead, ou null quando não há.
Telefone no formato informado, ou null quando não há.
Tags do lead, pelo nome.
Listas das quais o lead faz parte. Pode ficar vazio.
Campos personalizados do lead, indexados pela chave do campo.
object
Valor do campo.
Primeira origem do lead (site, whatsapp ou instagram). Gravada na criação; nunca muda.
Rótulo da origem do lead: “Site”, “WhatsApp” ou “Instagram”.
Negócios do lead: um por lista de que ele faz parte (lead × lista), em ordem alfabética. Etapa, valor e motivo da perda são do negócio; mude com PATCH /leads/{id}/lists/{listId}.
Negócio do lead numa lista: a lista, a pasta, a etapa, o valor e o motivo da perda.
object
Identificador da lista.
Nome da lista.
Identificador da pasta da lista.
Nome da pasta da lista.
Origem da lista (site, whatsapp ou instagram).
Nome da etapa, ou null em lista de Site.
Valor do negócio nesta lista, em reais. Zero quando não definido.
Parâmetros UTM de atribuição do lead.
object
Utm_source do último toque.
Utm_medium do último toque.
Utm_campaign do último toque.
Utm_term do último toque.
Utm_content do último toque.
Contato oculto (equipe, pessoal): não aparece nas telas nem em GET /leads (só com includeHidden=true), não entra em lista nem dispara automações ou webhooks. Ocultar e mostrar só pela tela.
Quando o lead foi criado.
Quando o lead foi alterado pela última vez.
Link da ficha do lead no CRM, ou null quando o endereço não é conhecido.
Example
{ "data": { "lead": { "id": "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f", "listIds": [ "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f" ], "ownerId": "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f", "origin": "site", "lists": [ { "listId": "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f", "folderId": "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f", "origin": "site", "stageId": "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f", "stageKind": "active", "stageEnteredAt": "2026-10-19T12:00:00.000Z", "lossReasonId": "0b6f3c1e-8a4d-4f5b-9c2e-1a2b3c4d5e6f" } ], "hiddenAt": "2026-10-19T12:00:00.000Z", "createdAt": "2026-10-19T12:00:00.000Z", "updatedAt": "2026-10-19T12:00:00.000Z" } }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
Máximo de requisições por janela de 60 segundos para esta chave.
Requisições restantes na janela atual.
Fim da janela atual, em milissegundos desde a época Unix (epoch ms).
Dados inválidos (validation_error) ou stageId, value, probability ou lossReason, que agora são do negócio (field_moved: use PATCH /leads/{id}/lists/{listId}).
Formato de erro da API.
object
object
Código estável do erro, ex.: validation_error.
Mensagem legível em português.
Detalhes extras, ex.: lista de campos inválidos.
Identificador da requisição, para suporte.
Example generated
{ "error": { "code": "example", "message": "example", "details": "example", "requestId": "example" }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
Chave ausente, inválida (invalid_api_key), vencida (api_key_expired) ou revogada (api_key_revoked).
Formato de erro da API.
object
object
Código estável do erro, ex.: validation_error.
Mensagem legível em português.
Detalhes extras, ex.: lista de campos inválidos.
Identificador da requisição, para suporte.
Example generated
{ "error": { "code": "example", "message": "example", "details": "example", "requestId": "example" }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
A chave é somente leitura e a operação grava dados (insufficient_scope).
Formato de erro da API.
object
object
Código estável do erro, ex.: validation_error.
Mensagem legível em português.
Detalhes extras, ex.: lista de campos inválidos.
Identificador da requisição, para suporte.
Example generated
{ "error": { "code": "example", "message": "example", "details": "example", "requestId": "example" }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
Recurso não encontrado (not_found).
Formato de erro da API.
object
object
Código estável do erro, ex.: validation_error.
Mensagem legível em português.
Detalhes extras, ex.: lista de campos inválidos.
Identificador da requisição, para suporte.
Example generated
{ "error": { "code": "example", "message": "example", "details": "example", "requestId": "example" }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
Conflito com o estado atual (conflict), contato oculto, cujo negócio não muda (lead_hidden), ou limite do plano atingido (plan_limit).
Formato de erro da API.
object
object
Código estável do erro, ex.: validation_error.
Mensagem legível em português.
Detalhes extras, ex.: lista de campos inválidos.
Identificador da requisição, para suporte.
Example generated
{ "error": { "code": "example", "message": "example", "details": "example", "requestId": "example" }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
O corpo da requisição passa de 256 KB (payload_too_large).
Formato de erro da API.
object
object
Código estável do erro, ex.: validation_error.
Mensagem legível em português.
Detalhes extras, ex.: lista de campos inválidos.
Identificador da requisição, para suporte.
Example generated
{ "error": { "code": "example", "message": "example", "details": "example", "requestId": "example" }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
Limite de requisições atingido (rate_limited). Aguarde Retry-After segundos.
Formato de erro da API.
object
object
Código estável do erro, ex.: validation_error.
Mensagem legível em português.
Detalhes extras, ex.: lista de campos inválidos.
Identificador da requisição, para suporte.
Example generated
{ "error": { "code": "example", "message": "example", "details": "example", "requestId": "example" }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
Máximo de requisições por janela de 60 segundos para esta chave.
Requisições restantes na janela atual.
Fim da janela atual, em milissegundos desde a época Unix (epoch ms).
Segundos até poder tentar de novo.
Erro interno (internal_error). Informe o requestId ao suporte.
Formato de erro da API.
object
object
Código estável do erro, ex.: validation_error.
Mensagem legível em português.
Detalhes extras, ex.: lista de campos inválidos.
Identificador da requisição, para suporte.
Example generated
{ "error": { "code": "example", "message": "example", "details": "example", "requestId": "example" }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
O CRM está em modo somente leitura durante uma migração (maintenance). Tente de novo depois de Retry-After segundos.
Formato de erro da API.
object
object
Código estável do erro, ex.: validation_error.
Mensagem legível em português.
Detalhes extras, ex.: lista de campos inválidos.
Identificador da requisição, para suporte.
Example generated
{ "error": { "code": "example", "message": "example", "details": "example", "requestId": "example" }}Headers
Seção intitulada “Headers ”Identificador da requisição, para suporte.
Segundos até poder tentar de novo.