Vincular contato a um deal

POST/api/v1/deals/:id/contacts

Associa um contato existente a um deal existente · complementa o vínculo feito na criação (contactIds / contact inline) pro caso em que a pessoa aparece depois (ex.: entrou um decisor novo na conversa). A resposta já vem com o deal atualizado (contactIds incluindo o novo) · não precisa de GET extra.

Parâmetros de path

idobrigatório
string
ID do deal.

Body (JSON)

contactIdobrigatório
string
ID do contato existente a vincular (senão 404).

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.
Idempotente por natureza: vincular um contato que já está no deal retorna 200 com o estado atual, sem erro · o header X-Already-Linked: true sinaliza o caso.
Dispara webhook deal.updated. As conversas de WhatsApp do contato passam a apontar pro deal, e a IA vê o vínculo na timeline.

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

curl -X POST "https://crmdojordao.com.br/api/v1/deals/:id/contacts" \
  -H "Authorization: Bearer rmk_SUA_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{ "contactId": "ct_joao" }'
Request body
{
  "contactId": "ct_joao"
}
Resposta · POST /api/v1/deals/:id/contacts
{
  "id": "deal_abc123",
  "title": "Lead João - Proposta Premium",
  "valueCents": 250000,
  "currency": "BRL",
  "status": "OPEN",
  "pipelineId": "pip_vendas",
  "stageId": "stg_novo_lead",
  "ownerId": "usr_maria",
  "accountId": "acc_empresa_exemplo",
  "contactIds": ["ct_joao"],
  "expectedCloseAt": "2026-08-15T00:00:00.000Z",
  "closedAt": null,
  "lostReasonId": null,
  "lostReason": null,
  "customFields": {
    "fonte_lead": "Site"
  },
  "createdAt": "2026-07-01T13:30:00.000Z",
  "updatedAt": "2026-07-01T13:30:00.000Z"
}