Atualizar contato

PATCH/api/v1/contacts/:id

Atualiza campos do contato. Todos opcionais · só os que vierem mudam. Mudar o email pra um já usado por outro contato ativo retorna 409 CONFLICT.

Parâmetros de path

idobrigatório
string
ID do contato.

Body (JSON)

name
string
Nome (1-120 caracteres).
email
string | null
Email válido · única entre contatos ativos (senão 409).
phone
string | null
Telefone (max 30 caracteres).
title
string | null
Cargo (max 120 caracteres).
accountId
string | null
Empresa existente (senão 404).
customFields
object
Objeto { chave: valor } · faz upsert dos valores informados.

Headers

Idempotency-Key
string
Opcional, recomendado (8-200 caracteres, ex.: um UUID). A primeira request é processada normalmente; requests com a mesma key e mesmo body em até 24h retornam a resposta cacheada (header Idempotency-Replay: true), sem criar duplicata. Mesma key com body diferente retorna 422 IDEMPOTENCY_CONFLICT. Só respostas 2xx são cacheadas.
Suporta Idempotency-Key · replays com mesmo body em até 24h retornam a resposta cacheada sem duplicar (útil pra retries de n8n/Zapier).
Dispara webhook contact.updated.

Autenticação: header Authorization: Bearer rmk_... · veja Introdução e autenticação.

curl -X PATCH "https://crmdojordao.com.br/api/v1/contacts/:id" \
  -H "Authorization: Bearer rmk_SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{ "title": "Diretor de Compras", "customFields": { "fonte_lead": "Indicação" } }'
Request body
{
  "title": "Diretor de Compras",
  "customFields": {
    "fonte_lead": "Indicação"
  }
}
Resposta · PATCH /api/v1/contacts/:id
{
  "id": "ct_joao",
  "name": "João Silva",
  "email": "joao@empresaexemplo.com.br",
  "phone": "+5511999999999",
  "title": "Diretor Comercial",
  "accountId": "acc_empresa_exemplo",
  "customFields": {
    "fonte_lead": "Site"
  },
  "createdAt": "2026-07-01T13:30:00.000Z",
  "updatedAt": "2026-07-01T13:30:00.000Z"
}