VendeeDocs
Referência

Entrada de lead

Porta de entrada de lead vindo de formulário, landing page ou anúncio. Cria contato, empresa e negócio numa tacada.

POST   {BASE_URL}/api-v1-leads  # cria

Use os endereços acima — são os que respondem hoje. A API está migrando para um endereço único ({BASE_URL}/api-v1/leads), que ainda não foi publicado: enquanto isso, qualquer chamada para ele devolve 404 not_found. Quando entrar no ar, esta página muda junto, e os endereços acima continuam valendo.

Escopo: leads:write.

Só POST — não existe listar nem detalhe. Contato, empresa e negócio são criados de uma vez: ou entra tudo, ou não entra nada. Permissão única: leads:write.

Campos

CampoTipoEscritaNotas
external_idstringcriar: opcionalDe 1 a 255 caracteres.
first_namestringcriar: obrigatórioCampo montado pela API (não é coluna direta). de 1 a 120 caracteres.
last_namestringcriar: opcionalCampo montado pela API (não é coluna direta). máximo 120 caracteres; omitido → "".
emailstringcriar: opcionalCampo montado pela API (não é coluna direta). formato email; máximo 255 caracteres; normalizado para minúsculas.
phonestringcriar: opcionalCampo montado pela API (não é coluna direta). máximo 40 caracteres.
company_namestringcriar: opcionalCampo montado pela API (não é coluna direta). de 1 a 255 caracteres.
valuenumbercriar: opcionalMínimo 0.
recurring_valuenumbercriar: opcionalMínimo 0.
pipeline_iduuidcriar: opcionalFormato uuid; deve existir na ficha pipelines.
stage_iduuidcriar: opcionalFormato uuid.
owner_iduuidcriar: opcionalFormato uuid; deve existir na ficha owners.
sourcestringcriar: opcionalMáximo 120 caracteres.
utmobjetocriar: opcionalObjeto {source, medium, campaign, term, content}. Campos chapados utm_source/utm_medium/... também são aceitos. Campo montado pela API (não é coluna direta).
custom_fieldsobjetocriar: opcional, editar: simObjeto chave→valor. As chaves são as definidas na ficha custom-fields. até 50 chaves; até 10 KB; omitido → {}.

Criar

POST {BASE_URL}/api-v1-leads — escopo leads:write.

CampoTipoObrigatórioNotas
external_idstringNãoDe 1 a 255 caracteres.
first_namestringSimCampo montado pela API (não é coluna direta). de 1 a 120 caracteres.
last_namestringNãoCampo montado pela API (não é coluna direta). máximo 120 caracteres; omitido → "".
emailstringNãoCampo montado pela API (não é coluna direta). formato email; máximo 255 caracteres; normalizado para minúsculas.
phonestringNãoCampo montado pela API (não é coluna direta). máximo 40 caracteres.
company_namestringNãoCampo montado pela API (não é coluna direta). de 1 a 255 caracteres.
valuenumberNãoMínimo 0.
recurring_valuenumberNãoMínimo 0.
pipeline_iduuidNãoFormato uuid; deve existir na ficha pipelines.
stage_iduuidNãoFormato uuid.
owner_iduuidNãoFormato uuid; deve existir na ficha owners.
sourcestringNãoMáximo 120 caracteres.
utmobjetoNãoObjeto {source, medium, campaign, term, content}. Campos chapados utm_source/utm_medium/... também são aceitos. Campo montado pela API (não é coluna direta).
custom_fieldsobjetoNãoObjeto chave→valor. As chaves são as definidas na ficha custom-fields. até 50 chaves; até 10 KB; omitido → {}.
curl -X POST "{BASE_URL}/api-v1-leads" \
  -H "X-API-Key: vnd_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{ "first_name": "..." }'

Webhooks desta ficha

  • lead.received

Formato do envio, cabeçalhos e verificação da assinatura em Webhooks.

Erros

HTTPcodeQuando
401missing_api_key / invalid_api_key / revoked_api_keyAutenticação.
403insufficient_scopeA chave não tem leads:write.
422validation_errorCampo fora das regras da tabela acima.
422invalid_referencepipeline_id, owner_id aponta para fora deste cliente.
405method_not_allowedMétodo não suportado neste endereço.
500internal_errorFalha interna.

Catálogo completo em Erros.

Resposta de sucesso

201 Created em uma criação nova; 200 OK quando a chamada é idempotente (mesmo external_id já processado):

{
  "lead": {
    "deal_id": "8f3c...",
    "contact_id": "1a2b...",
    "company_id": "9d8e...",
    "workspace_id": "44c1...",
    "status": "aberto",
    "pipeline_id": "7b6a...",
    "stage_id": "0f1e...",
    "owner_id": "3c2d...",
    "created_at": "2026-06-27T12:00:00.000Z"
  },
  "idempotent": false,
  "created": { "company": true, "contact": true, "deal": true }
}
  • company_id vem null quando o lead não traz company_name.
  • created indica o que foi efetivamente criado nesta chamada.

Idempotência

Se você enviar um external_id que já foi processado, a API não cria um segundo negócio: responde 200 OK com "idempotent": true e os ids do registro original. Isso torna seguro reenviar em caso de timeout de rede. Sem external_id, cada chamada cria um novo lead.

Resolução automática de responsável

Quando owner_id não é informado (ou aponta para alguém que não está no workspace), o Vendee escolhe o responsável nesta ordem:

  1. O owner_id informado, se for um membro ativo do workspace.
  2. O usuário que criou a API Key.
  3. O membro de gestão (admin/gestor) ativo mais antigo do workspace.

Se nenhum se aplicar, a resposta é 422 owner_unresolved.

Erros específicos desta ficha

HTTPcodeQuando
400invalid_bodyCorpo ausente ou JSON inválido.
422pipeline_not_found / no_default_pipelineProblema ao resolver o pipeline.
422stage_not_found / pipeline_has_no_stageProblema ao resolver a etapa.
422owner_unresolvedSem responsável ativo possível.

Veja todos em Erros.

Nesta página