Leaper Desenvolvedores
Central de Ajuda Entrar
API de Integração · v1

Referência da API de Integração

URL base: https://api.external.leaper.com.br. Toda requisição precisa do cabeçalho X-API-Key. Autenticação, formatos, erros e casos de uso estão no guia.

Abrir no ChatGPT ↗ Abrir no Claude ↗ Ver .md

Mensagens

Registre as mensagens de WhatsApp trocadas fora da Leaper.

Registrar mensagem

POST /v1/message

Registra uma mensagem de WhatsApp na conversa do lead. A Leaper procura o lead pelo phone ou pelo lid: se ele existir, a mensagem entra na conversa dele; se não existir, o lead é criado no primeiro status do funil.

  • O telefone é comparado só pelos dígitos: +55 (11) 98765-4321 e 5511987654321 são o mesmo contato. Envie sempre com DDI.
  • Com phone e lid, vale o lead que tiver qualquer um dos dois. Se o lead foi encontrado pelo telefone e ainda não tinha LID, o lid enviado é salvo.
  • Sem message, nada é gravado na conversa, mas o lead continua sendo encontrado ou criado.
  • Reenviar a mesma mensagem com o mesmo message_id não a duplica na conversa.
  • Um lead que veio de formulário passa a aparecer como contatado pelo WhatsApp.

Mensagens da empresa (from_me: true): para um contato que ainda não é lead, o lead só é criado se a opção Criar lead ao iniciar conversa estiver ligada nas configurações da empresa. Com ela desligada, a resposta é 200 com { "lead": null } e nada é gravado. Leads criados por mensagem da empresa ficam com origem NO_TRACKING.

Origem do lead: quando a mensagem de um contato cria o lead, os parâmetros de rastreamento definem o source:

Parâmetro enviadosource
ctwa_clidMETAADS_MSG
fbclidMETAADS_SITE
gclid, wbraid ou gbraidGOOGLE_SITE
utm.source com googleGOOGLE_ORGANIC
utm.source com facebook ou metaFACEBOOK_ORGANIC
utm.source com instagramINSTAGRAM_ORGANIC
utm.source com tiktokTIKTOK_ORGANIC
utm.source com youtubeYOUTUBE_ORGANIC
Outro utm.sourceOTHER_ORGANIC
NenhumNO_TRACKING

Se o lead já existe, a origem dele não muda.

Corpo da requisição (JSON)

CampoTipoObrigatórioDescrição
phonetexto ou inteiroSim, sem lidTelefone do contato com DDI. Só os dígitos contam, e precisam ser de 8 a 15.
lidtextoSim, sem phoneIdentificador do contato no WhatsApp (LID), no formato 123456789@lid.
nametextoNãoNome do contato. Usado ao criar o lead.
messagetextoNãoTexto da mensagem.
from_mebooleanoNãotrue quando a mensagem foi enviada pela empresa. Padrão: false.
message_idtextoNãoIdentificador da mensagem no seu sistema ou provedor de WhatsApp. Evita duplicar a mensagem quando a chamada é repetida. Até 255 caracteres.
timestamptexto (data e hora)NãoData e hora da mensagem em ISO 8601, com fuso (2026-09-11T10:30:00-03:00 ou 2026-09-11T13:30:00Z). Sem ele, vale o horário do recebimento.
ctwa_clidtextoNãoIdentificador do clique em anúncio de clique para o WhatsApp (Meta Ads).
fbclidtextoNãoIdentificador do clique em anúncio do Meta Ads que levou a um site.
gclidtextoNãoIdentificador do clique no Google Ads.
wbraidtextoNãoIdentificador de clique do Google Ads em navegação web (iOS).
gbraidtextoNãoIdentificador de clique do Google Ads em aplicativos (iOS).
utmobjetoNãoParâmetros UTM do acesso. Também aceitos soltos no corpo, como utm_source e utm_medium.
utm.sourcetextoNão
utm.mediumtextoNão
utm.campaigntextoNão
utm.termtextoNão
utm.contenttextoNão

Respostas

CódigoDescrição
201O lead foi criado e a mensagem, registrada. Corpo: Resultado de mensagem.
200O lead já existia e a mensagem foi registrada. Também é a resposta, com lead: null, quando a mensagem da empresa é ignorada. Corpo: Resultado de mensagem.
400Corpo ou parâmetro inválido. A mensagem em error diz o que corrigir. Corpo: Erro.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
422A empresa não tem status no funil para receber o lead. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl -X POST "https://api.external.leaper.com.br/v1/message" \
  -H "X-API-Key: $LEAPER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "phone": "5511987654321",
    "name": "Marina Alves",
    "message": "Olá, quero agendar uma avaliação",
    "message_id": "wamid.HBgNNTUxMTk4NzY1NDMyMRUCABIYFjNFQjA",
    "timestamp": "2026-09-11T10:30:00-03:00",
    "ctwa_clid": "ARAkLgdbrocNABYQnQoGHmFy"
  }'

Resposta 201

json
{
  "lead": {
    "id": "b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84"
  }
}

Resposta 200 — Lead existente

json
{
  "lead": {
    "id": "b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84"
  }
}

Resposta 200 — Mensagem ignorada

json
{
  "lead": null
}

Leads

Crie, atualize, liste e consulte leads.

Listar leads

GET /v1/leads

Lista os leads da empresa, dos mais recentes para os mais antigos, com paginação por limit e offset. Os filtros podem ser combinados. Cada item traz os blocos lead e status; tracking e form_submissions vêm só com include.

Parâmetros de consulta

CampoTipoObrigatórioDescrição
searchtextoNãoBusca por parte do nome, do e-mail ou do telefone.
status_idtexto (uuid)Nãoid do status, de Listar status do funil. Não pode ser usado junto com status.
statustextoNãocode do status, como NEGOCIACAO. Prefira status_id: o code muda quando o status é renomeado.
sourcetextoNãoOrigem do lead (veja Origem do lead). Aceita também META_ADS e GOOGLE_ADS, que reúnem as origens pagas de cada plataforma.
tagtextoNãoLeads com uma tag que contenha o texto informado.
start_datetextoNãoInício do período, em YYYY-MM-DD ou YYYY-MM-DD HH:MM:SS, no horário de Brasília. Só a data vale a partir de 00:00:00.
end_datetextoNãoFim do período, no mesmo formato. Só a data vale até 23:59:59.
date_fieldtextoNãoData usada por start_date e end_date: created_at (entrada do lead) ou status_changed_at (última mudança de status). Valores: created_at, status_changed_at. Padrão: created_at.
includetextoNãoBlocos opcionais, separados por vírgula: tracking e form_submissions. São os mesmos blocos de Consultar lead. Com include, limit vale no máximo 50. Valores: tracking, form_submissions, tracking,form_submissions.
limitinteiroNãoItens por página. No máximo 50 quando include é usado. Padrão: 50. De 1 a 200.
offsetinteiroNãoQuantos itens pular. Padrão: 0. Mínimo: 0.

Respostas

CódigoDescrição
200Página de leads. Corpo: Lista de leads.
400Corpo ou parâmetro inválido. A mensagem em error diz o que corrigir. Corpo: Erro.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/leads?status_id=5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21&start_date=2026-09-01&include=tracking&limit=50" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200

json
{
  "data": [
    {
      "lead": {
        "id": "b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84",
        "name": "Marina Alves",
        "phone": "5511987654321",
        "email": "marina.alves@exemplo.com.br",
        "address": null,
        "custom_fields": [],
        "source": "METAADS_MSG",
        "tags": "prioridade-alta",
        "created_at": "2026-09-02T09:14:50-03:00",
        "updated_at": "2026-09-02T15:41:05-03:00",
        "created_from": "external_api",
        "lead_value": "3200"
      },
      "status": {
        "current": {
          "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
          "code": "NEGOCIACAO",
          "name": "Negociação",
          "changed_at": "2026-09-02T15:41:05-03:00"
        },
        "previous": {
          "id": "a81d44b0-5e2c-4b7f-8d13-6f9a2c4e0b58",
          "code": "PROPOSTA",
          "name": "Proposta Enviada",
          "changed_at": "2026-09-02T11:22:18-03:00"
        }
      }
    }
  ],
  "count": 1,
  "limit": 50,
  "offset": 0
}

Criar lead

POST /v1/leads

Cria um lead no primeiro status do funil. Se a empresa tiver webhooks do evento Novo Lead, eles são disparados.

Observação Esta rota sempre cria um lead novo, mesmo que já exista um lead com o mesmo telefone. Para alterar um lead existente, use Atualizar lead. Para mensagens de WhatsApp, Registrar mensagem já encontra o lead pelo telefone.

Corpo da requisição (JSON)

CampoTipoObrigatórioDescrição
sourcetextoSimOrigem do lead. TRACKING_LOST não é aceito.
clientobjetoSimDados do contato.
client.nametextoNãoNome.
client.phonetextoNãoTelefone. Envie só dígitos, com DDI, como 5511987654321.
client.lidtextoNãoIdentificador do contato no WhatsApp (LID), no formato 123456789@lid.
client.emailtextoNãoE-mail.
client.addresstextoNãoEndereço.
client.custom_fieldslista de objetosNãoCampos personalizados.
client.custom_fields[].keytextoSimNome do campo.
client.custom_fields[].valuetexto ou númeroSimValor do campo. Números são gravados como texto.
lead_valuetexto ou númeroNãoValor do lead, com ponto como separador decimal e sem separador de milhar, como 1500.50. 1.500,00 é recusado e 1.500 é lido como 1,5. O prefixo R$ é aceito.
created_fromtextoNãoCanal de entrada do lead. É o canal mostrado no painel e o que os gatilhos de conversão configurados por canal consideram. Valores: external_api, whatsapp, forms. Padrão: external_api.
tagstextoNãoTags do lead.

Respostas

CódigoDescrição
201Lead criado. Corpo: Recurso lead.
400Corpo ou parâmetro inválido. A mensagem em error diz o que corrigir. Corpo: Erro.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
422A empresa não tem status no funil para receber o lead. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl -X POST "https://api.external.leaper.com.br/v1/leads" \
  -H "X-API-Key: $LEAPER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "source": "WEBSITE",
    "client": {
      "name": "Marina Alves",
      "phone": "5511987654321",
      "email": "marina.alves@exemplo.com.br",
      "custom_fields": [
        {
          "key": "Interesse",
          "value": "Clareamento"
        }
      ]
    },
    "lead_value": "3200",
    "tags": "prioridade-alta"
  }'

Resposta 201 — Lead

json
{
  "lead": {
    "id": "b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84",
    "name": "Marina Alves",
    "phone": "5511987654321",
    "email": "marina.alves@exemplo.com.br",
    "address": null,
    "custom_fields": [
      {
        "key": "Interesse",
        "value": "Clareamento"
      }
    ],
    "source": "METAADS_MSG",
    "tags": "prioridade-alta",
    "created_at": "2026-09-02T09:14:50-03:00",
    "updated_at": "2026-09-02T15:41:05-03:00",
    "created_from": "external_api",
    "lead_value": "3200"
  },
  "status": {
    "current": {
      "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
      "code": "NEGOCIACAO",
      "name": "Negociação",
      "changed_at": "2026-09-02T15:41:05-03:00"
    },
    "previous": {
      "id": "a81d44b0-5e2c-4b7f-8d13-6f9a2c4e0b58",
      "code": "PROPOSTA",
      "name": "Proposta Enviada",
      "changed_at": "2026-09-02T11:22:18-03:00"
    }
  },
  "tracking": {
    "source": "METAADS_MSG",
    "source_app": "instagram",
    "source_url": "https://www.instagram.com/",
    "source_type": "ad",
    "utm_source": null,
    "utm_medium": null,
    "utm_campaign": null,
    "utm_content": null,
    "utm_term": null,
    "referer": null,
    "page_url": null,
    "device": null,
    "browser": null,
    "os": null,
    "click_id": "ARAkLgdbrocNABYQnQoGHmFy",
    "click_id_type": "ctwa_clid",
    "click_date": "2026-09-02T09:14:31-03:00",
    "campaign_data": {
      "ad": {
        "id": "120212847391750456",
        "name": "Carrossel — Depoimentos",
        "adset_id": "120212847391740789",
        "campaign_id": "120212847391740123"
      },
      "ad_set": {
        "id": "120212847391740789",
        "name": "Público quente",
        "campaign_id": "120212847391740123"
      },
      "campaign": {
        "id": "120212847391740123",
        "name": "Institucional | Setembro",
        "status": "ACTIVE"
      }
    },
    "form_data": null,
    "journey": null
  },
  "form_submissions": []
}

Consultar lead

GET /v1/leads/{lead_id}

Retorna o lead com os blocos lead, status, tracking e form_submissions.

Parâmetros de rota

CampoTipoObrigatórioDescrição
lead_idtexto (uuid)Simid do lead.

Respostas

CódigoDescrição
200Lead encontrado. Corpo: Recurso lead.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
404O lead não existe ou é de outra empresa. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/leads/b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200 — Lead

json
{
  "lead": {
    "id": "b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84",
    "name": "Marina Alves",
    "phone": "5511987654321",
    "email": "marina.alves@exemplo.com.br",
    "address": null,
    "custom_fields": [
      {
        "key": "Interesse",
        "value": "Clareamento"
      }
    ],
    "source": "METAADS_MSG",
    "tags": "prioridade-alta",
    "created_at": "2026-09-02T09:14:50-03:00",
    "updated_at": "2026-09-02T15:41:05-03:00",
    "created_from": "external_api",
    "lead_value": "3200"
  },
  "status": {
    "current": {
      "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
      "code": "NEGOCIACAO",
      "name": "Negociação",
      "changed_at": "2026-09-02T15:41:05-03:00"
    },
    "previous": {
      "id": "a81d44b0-5e2c-4b7f-8d13-6f9a2c4e0b58",
      "code": "PROPOSTA",
      "name": "Proposta Enviada",
      "changed_at": "2026-09-02T11:22:18-03:00"
    }
  },
  "tracking": {
    "source": "METAADS_MSG",
    "source_app": "instagram",
    "source_url": "https://www.instagram.com/",
    "source_type": "ad",
    "utm_source": null,
    "utm_medium": null,
    "utm_campaign": null,
    "utm_content": null,
    "utm_term": null,
    "referer": null,
    "page_url": null,
    "device": null,
    "browser": null,
    "os": null,
    "click_id": "ARAkLgdbrocNABYQnQoGHmFy",
    "click_id_type": "ctwa_clid",
    "click_date": "2026-09-02T09:14:31-03:00",
    "campaign_data": {
      "ad": {
        "id": "120212847391750456",
        "name": "Carrossel — Depoimentos",
        "adset_id": "120212847391740789",
        "campaign_id": "120212847391740123"
      },
      "ad_set": {
        "id": "120212847391740789",
        "name": "Público quente",
        "campaign_id": "120212847391740123"
      },
      "campaign": {
        "id": "120212847391740123",
        "name": "Institucional | Setembro",
        "status": "ACTIVE"
      }
    },
    "form_data": null,
    "journey": null
  },
  "form_submissions": []
}

Atualizar lead

PUT /v1/leads/{lead_id}

Atualiza os dados de um lead. Só os campos enviados mudam: campos ausentes ou vazios não apagam o que já existe.

  • custom_fields é mesclado pela key: chaves novas são adicionadas e chaves existentes, substituídas.
  • O lid e o created_from não podem ser alterados.
  • Para mudar o status, use Mover lead de status.

Parâmetros de rota

CampoTipoObrigatórioDescrição
lead_idtexto (uuid)Simid do lead.

Corpo da requisição (JSON)

CampoTipoObrigatórioDescrição
sourcetextoNãoOrigem do lead. TRACKING_LOST não é aceito.
clientobjetoNãoDados do contato.
client.nametextoNãoNome.
client.phonetextoNãoTelefone. Envie só dígitos, com DDI.
client.emailtextoNãoE-mail.
client.addresstextoNãoEndereço.
client.custom_fieldslista de objetosNãoCampos personalizados, mesclados pela key.
client.custom_fields[].keytextoSimNome do campo.
client.custom_fields[].valuetexto ou númeroSimValor do campo.
lead_valuetexto ou númeroNãoValor do lead, no mesmo formato de Criar lead.
tagstextoNãoTags do lead. Substituem as atuais.

Respostas

CódigoDescrição
200Lead atualizado. Corpo: Recurso lead.
400Corpo ou parâmetro inválido. A mensagem em error diz o que corrigir. Corpo: Erro.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
404O lead não existe ou é de outra empresa. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl -X PUT "https://api.external.leaper.com.br/v1/leads/b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84" \
  -H "X-API-Key: $LEAPER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "client": {
      "email": "marina@clinica-exemplo.com.br",
      "custom_fields": [
        {
          "key": "Unidade",
          "value": "Pinheiros"
        }
      ]
    },
    "lead_value": "4100.00"
  }'

Resposta 200 — Lead

json
{
  "lead": {
    "id": "b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84",
    "name": "Marina Alves",
    "phone": "5511987654321",
    "email": "marina.alves@exemplo.com.br",
    "address": null,
    "custom_fields": [
      {
        "key": "Interesse",
        "value": "Clareamento"
      }
    ],
    "source": "METAADS_MSG",
    "tags": "prioridade-alta",
    "created_at": "2026-09-02T09:14:50-03:00",
    "updated_at": "2026-09-02T15:41:05-03:00",
    "created_from": "external_api",
    "lead_value": "3200"
  },
  "status": {
    "current": {
      "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
      "code": "NEGOCIACAO",
      "name": "Negociação",
      "changed_at": "2026-09-02T15:41:05-03:00"
    },
    "previous": {
      "id": "a81d44b0-5e2c-4b7f-8d13-6f9a2c4e0b58",
      "code": "PROPOSTA",
      "name": "Proposta Enviada",
      "changed_at": "2026-09-02T11:22:18-03:00"
    }
  },
  "tracking": {
    "source": "METAADS_MSG",
    "source_app": "instagram",
    "source_url": "https://www.instagram.com/",
    "source_type": "ad",
    "utm_source": null,
    "utm_medium": null,
    "utm_campaign": null,
    "utm_content": null,
    "utm_term": null,
    "referer": null,
    "page_url": null,
    "device": null,
    "browser": null,
    "os": null,
    "click_id": "ARAkLgdbrocNABYQnQoGHmFy",
    "click_id_type": "ctwa_clid",
    "click_date": "2026-09-02T09:14:31-03:00",
    "campaign_data": {
      "ad": {
        "id": "120212847391750456",
        "name": "Carrossel — Depoimentos",
        "adset_id": "120212847391740789",
        "campaign_id": "120212847391740123"
      },
      "ad_set": {
        "id": "120212847391740789",
        "name": "Público quente",
        "campaign_id": "120212847391740123"
      },
      "campaign": {
        "id": "120212847391740123",
        "name": "Institucional | Setembro",
        "status": "ACTIVE"
      }
    },
    "form_data": null,
    "journey": null
  },
  "form_submissions": []
}

Consultar conversa

GET /v1/leads/{lead_id}/conversation

Retorna todas as mensagens registradas na conversa do lead, em ordem cronológica. Sem mensagens, messages vem vazio.

Parâmetros de rota

CampoTipoObrigatórioDescrição
lead_idtexto (uuid)Simid do lead.

Respostas

CódigoDescrição
200Conversa do lead. Corpo: Conversa.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
404O lead não existe ou é de outra empresa. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/leads/b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84/conversation" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200

json
{
  "messages": [
    {
      "from_me": false,
      "message": "Olá, quero agendar uma avaliação",
      "received_at": "2026-09-11T10:30:00-03:00"
    },
    {
      "from_me": true,
      "message": "Oi, Marina! Temos horário amanhã às 14h. Pode ser?",
      "received_at": "2026-09-11T10:32:14-03:00"
    }
  ]
}

Status do lead

Consulte e altere o status de um lead no funil.

Consultar status do lead

GET /v1/leads/{lead_id}/status

Retorna o status atual, o anterior e o histórico completo do lead no funil, do mais antigo para o mais recente.

Parâmetros de rota

CampoTipoObrigatórioDescrição
lead_idtexto (uuid)Simid do lead.

Respostas

CódigoDescrição
200Status do lead. Corpo: Resposta de status do lead.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
404O lead não existe ou é de outra empresa. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/leads/b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84/status" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200 — Status do lead

json
{
  "status": {
    "current": {
      "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
      "code": "NEGOCIACAO",
      "name": "Negociação",
      "changed_at": "2026-09-02T15:41:05-03:00"
    },
    "previous": {
      "id": "a81d44b0-5e2c-4b7f-8d13-6f9a2c4e0b58",
      "code": "PROPOSTA",
      "name": "Proposta Enviada",
      "changed_at": "2026-09-02T11:22:18-03:00"
    },
    "history": [
      {
        "id": "1b8e0c52-7f3a-4d2e-9a61-3c5f0e8d2a17",
        "code": "NOVO_LEAD",
        "name": "Novo Lead",
        "changed_at": "2026-09-02T09:14:50-03:00"
      },
      {
        "id": "a81d44b0-5e2c-4b7f-8d13-6f9a2c4e0b58",
        "code": "PROPOSTA",
        "name": "Proposta Enviada",
        "changed_at": "2026-09-02T11:22:18-03:00"
      },
      {
        "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
        "code": "NEGOCIACAO",
        "name": "Negociação",
        "changed_at": "2026-09-02T15:41:05-03:00"
      }
    ]
  }
}

Mover lead de status

PUT /v1/leads/{lead_id}/status

Move o lead para outro status do funil. A mudança dispara os eventos de conversão configurados para o status (Meta Ads e Google Ads) e os webhooks de mudança de status da empresa.

Enviar o status em que o lead já está não conta como mudança: nada entra no histórico e nenhum evento é disparado. A resposta é a mesma de uma mudança.

Parâmetros de rota

CampoTipoObrigatórioDescrição
lead_idtexto (uuid)Simid do lead.

Corpo da requisição (JSON)

CampoTipoObrigatórioDescrição
status_idtexto (uuid)Simid do status de destino, de Listar status do funil.

Respostas

CódigoDescrição
200Status atualizado. Corpo: Resposta de status do lead.
400Corpo ou parâmetro inválido. A mensagem em error diz o que corrigir. Corpo: Erro.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
404O lead não existe ou é de outra empresa. Corpo: Erro.
422O status_id não é de um status ativo da empresa. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl -X PUT "https://api.external.leaper.com.br/v1/leads/b7d4e1a2-8f3c-4a19-9c62-1e5f0a7d3b84/status" \
  -H "X-API-Key: $LEAPER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "status_id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21"
  }'

Resposta 200 — Status do lead

json
{
  "status": {
    "current": {
      "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
      "code": "NEGOCIACAO",
      "name": "Negociação",
      "changed_at": "2026-09-02T15:41:05-03:00"
    },
    "previous": {
      "id": "a81d44b0-5e2c-4b7f-8d13-6f9a2c4e0b58",
      "code": "PROPOSTA",
      "name": "Proposta Enviada",
      "changed_at": "2026-09-02T11:22:18-03:00"
    },
    "history": [
      {
        "id": "1b8e0c52-7f3a-4d2e-9a61-3c5f0e8d2a17",
        "code": "NOVO_LEAD",
        "name": "Novo Lead",
        "changed_at": "2026-09-02T09:14:50-03:00"
      },
      {
        "id": "a81d44b0-5e2c-4b7f-8d13-6f9a2c4e0b58",
        "code": "PROPOSTA",
        "name": "Proposta Enviada",
        "changed_at": "2026-09-02T11:22:18-03:00"
      },
      {
        "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
        "code": "NEGOCIACAO",
        "name": "Negociação",
        "changed_at": "2026-09-02T15:41:05-03:00"
      }
    ]
  }
}

Funil

Status do funil configurados na empresa.

Listar status do funil

GET /v1/statuses

Lista os status ativos do funil da empresa, na ordem em que aparecem no painel.

Respostas

CódigoDescrição
200Status do funil. Corpo: Lista de status do funil.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/statuses" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200

json
{
  "data": [
    {
      "id": "1b8e0c52-7f3a-4d2e-9a61-3c5f0e8d2a17",
      "code": "NOVO_LEAD",
      "name": "Novo Lead",
      "position": 1,
      "is_funnel": true
    },
    {
      "id": "a81d44b0-5e2c-4b7f-8d13-6f9a2c4e0b58",
      "code": "PROPOSTA",
      "name": "Proposta Enviada",
      "position": 2,
      "is_funnel": true
    },
    {
      "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
      "code": "NEGOCIACAO",
      "name": "Negociação",
      "position": 3,
      "is_funnel": true
    },
    {
      "id": "c47e2a90-3d1b-4f6a-b852-9e0d7c1f4a36",
      "code": "END_WON",
      "name": "Finalizado - Convertido",
      "position": 4,
      "is_funnel": true
    },
    {
      "id": "e2915b7c-8a4d-4e3f-a6c0-1b7d9f2e5c84",
      "code": "END_LOST",
      "name": "Finalizado - Perdido",
      "position": 5,
      "is_funnel": true
    }
  ]
}

Consultar status do funil

GET /v1/statuses/{id}

Retorna um status do funil da empresa.

Parâmetros de rota

CampoTipoObrigatórioDescrição
idtexto (uuid)Simid do status.

Respostas

CódigoDescrição
200Status encontrado. Corpo: Status do funil.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
404O status não existe, foi excluído ou é de outra empresa. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/statuses/5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200

json
{
  "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
  "code": "NEGOCIACAO",
  "name": "Negociação",
  "position": 3,
  "is_funnel": true
}

Empresa

Dados da empresa dona da chave.

Consultar empresa

GET /v1/company

Retorna os dados da empresa dona da chave. É uma boa chamada para testar a autenticação.

Respostas

CódigoDescrição
200Dados da empresa. Corpo: Empresa.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/company" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200

json
{
  "id": "6201138c-fc0a-4478-820f-8907907e7f00",
  "name": "Clínica Exemplo",
  "document": "12345678000190",
  "address": "Rua dos Pinheiros, 1000 - São Paulo/SP",
  "phone_number": "551130000000"
}

Relatórios

Números do funil já somados, para painéis e acompanhamento.

Resumo do período

GET /v1/reports/summary

Totais do período: quantos leads entraram, quantos foram convertidos, quantos foram perdidos e a soma dos valores. Convertido é o lead que está no status END_WON; perdido, o que está em END_LOST. O valor somado é o lead_value de cada lead.

Parâmetros de consulta

CampoTipoObrigatórioDescrição
start_datetextoNãoInício do período, em YYYY-MM-DD ou YYYY-MM-DD HH:MM:SS, no horário de Brasília. Só a data vale a partir de 00:00:00. Sem este parâmetro, o período começa 30 dias antes do fim.
end_datetextoNãoFim do período, no mesmo formato. Só a data vale até 23:59:59. Sem este parâmetro, o período termina hoje. O período pode ter no máximo 92 dias.
date_fieldtextoNãoData usada por start_date e end_date: created_at (entrada do lead) ou status_changed_at (última mudança de status). Valores: created_at, status_changed_at. Padrão: created_at.

Respostas

CódigoDescrição
200Totais do período. Corpo: Resumo do período.
400Corpo ou parâmetro inválido. A mensagem em error diz o que corrigir. Corpo: Erro.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/reports/summary?start_date=2026-09-01&end_date=2026-09-30" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200

json
{
  "period": {
    "start_date": "2026-09-01 00:00:00",
    "end_date": "2026-09-30 23:59:59",
    "date_field": "created_at"
  },
  "leads": 184,
  "converted": 37,
  "lost": 52,
  "converted_value": 148200.5,
  "open_value": 96400
}

Leads por status

GET /v1/reports/leads-by-status

Quantos leads estão em cada status do funil e a soma dos valores, na ordem do funil. Cada lead aparece uma vez, no status em que está agora.

Parâmetros de consulta

CampoTipoObrigatórioDescrição
start_datetextoNãoInício do período, em YYYY-MM-DD ou YYYY-MM-DD HH:MM:SS, no horário de Brasília. Só a data vale a partir de 00:00:00. Sem este parâmetro, o período começa 30 dias antes do fim.
end_datetextoNãoFim do período, no mesmo formato. Só a data vale até 23:59:59. Sem este parâmetro, o período termina hoje. O período pode ter no máximo 92 dias.
date_fieldtextoNãoData usada por start_date e end_date: created_at (entrada do lead) ou status_changed_at (última mudança de status). Valores: created_at, status_changed_at. Padrão: created_at.

Respostas

CódigoDescrição
200Leads por status. Corpo: Leads por status.
400Corpo ou parâmetro inválido. A mensagem em error diz o que corrigir. Corpo: Erro.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/reports/leads-by-status?start_date=2026-09-01&end_date=2026-09-30" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200

json
{
  "period": {
    "start_date": "2026-09-01 00:00:00",
    "end_date": "2026-09-30 23:59:59",
    "date_field": "created_at"
  },
  "data": [
    {
      "status": {
        "id": "1b8e0c52-7f3a-4d2e-9a61-3c5f0e8d2a17",
        "code": "NOVO_LEAD",
        "name": "Novo Lead",
        "position": 1
      },
      "leads": 61,
      "value": 42300
    },
    {
      "status": {
        "id": "5f3c9a1e-2b7d-4c8a-9e61-0d4b8a7c3f21",
        "code": "NEGOCIACAO",
        "name": "Negociação",
        "position": 3
      },
      "leads": 34,
      "value": 54100
    },
    {
      "status": {
        "id": "c47e2a90-3d1b-4f6a-b852-9e0d7c1f4a36",
        "code": "END_WON",
        "name": "Finalizado - Convertido",
        "position": 4
      },
      "leads": 37,
      "value": 148200.5
    }
  ]
}

Leads por origem

GET /v1/reports/leads-by-source

Quantos leads vieram de cada origem no período, quantos foram convertidos e quanto isso somou, da origem com mais leads para a com menos.

Parâmetros de consulta

CampoTipoObrigatórioDescrição
start_datetextoNãoInício do período, em YYYY-MM-DD ou YYYY-MM-DD HH:MM:SS, no horário de Brasília. Só a data vale a partir de 00:00:00. Sem este parâmetro, o período começa 30 dias antes do fim.
end_datetextoNãoFim do período, no mesmo formato. Só a data vale até 23:59:59. Sem este parâmetro, o período termina hoje. O período pode ter no máximo 92 dias.
date_fieldtextoNãoData usada por start_date e end_date: created_at (entrada do lead) ou status_changed_at (última mudança de status). Valores: created_at, status_changed_at. Padrão: created_at.

Respostas

CódigoDescrição
200Leads por origem. Corpo: Leads por origem.
400Corpo ou parâmetro inválido. A mensagem em error diz o que corrigir. Corpo: Erro.
401Cabeçalho X-API-Key ausente ou chave inválida. Corpo: Erro.
403A empresa está desativada. Corpo: Erro.
429Limite de requisições atingido. O cabeçalho Retry-After diz em quantos segundos tentar de novo. Corpo: Erro.

Exemplo

bash
curl "https://api.external.leaper.com.br/v1/reports/leads-by-source?start_date=2026-09-01&end_date=2026-09-30" \
  -H "X-API-Key: $LEAPER_API_KEY"

Resposta 200

json
{
  "period": {
    "start_date": "2026-09-01 00:00:00",
    "end_date": "2026-09-30 23:59:59",
    "date_field": "created_at"
  },
  "data": [
    {
      "source": "METAADS_MSG",
      "leads": 96,
      "converted": 21,
      "converted_value": 83400.5
    },
    {
      "source": "GOOGLE_SITE",
      "leads": 52,
      "converted": 11,
      "converted_value": 44300
    },
    {
      "source": "WHATSAPP",
      "leads": 36,
      "converted": 5,
      "converted_value": 20500
    }
  ]
}

Objetos

Recurso lead

O lead completo, devolvido por Consultar lead, Criar lead e Atualizar lead. Os blocos são os mesmos dos webhooks, com os nomes em snake_case.

CampoTipoDescrição
leadobjeto (Lead)Dados do contato e do cadastro.
statusobjeto (Status do lead)Status atual do lead e o anterior. Nulos quando não existem.
trackingobjeto (Tracking)Atribuição do lead, com a mesma informação do bloco tracking dos webhooks. URLs vêm sem query string.
form_submissionslista de objetos (Envio de formulário)Formulários enviados pelo lead, do mais recente para o mais antigo.

Lead

Dados do contato e do cadastro.

CampoTipoDescrição
idtexto (uuid)Identificador do lead. Não muda; use como referência no seu sistema.
nametexto ou nullNome do contato.
phonetexto ou nullTelefone do contato, como foi cadastrado.
emailtexto ou nullE-mail do contato.
addresstexto ou nullEndereço do contato.
custom_fieldslista de objetosCampos personalizados.
custom_fields[].keytextoNome do campo.
custom_fields[].valuetexto ou número ou booleano ou nullValor do campo.
sourcetexto (Origem do lead)Valores possíveis de source. Leads antigos podem ter valores fora desta lista.
tagstexto ou nullTags do lead, em texto.
created_attexto (data e hora) ou nullQuando o lead entrou na Leaper.
updated_attexto (data e hora) ou nullÚltima alteração nos dados do lead.
created_fromtexto ou nullCanal de entrada, como whatsapp, forms, external_api ou manual.
lead_valuetexto ou número ou nullValor do lead, como foi informado.

Origem do lead

Valores possíveis de source. Leads antigos podem ter valores fora desta lista.

ValorDescrição
PHONETelefone
EMAILE-mail
WEBSITESite
WHATSAPPWhatsApp
WHATSAPPBOTRobô de WhatsApp
METAADS_MSGMeta Ads, campanha de mensagem
METAADS_SITEMeta Ads, campanha de site
GOOGLE_SITEGoogle Ads
TIKTOK_ADSTikTok Ads
GOOGLE_ORGANICGoogle orgânico
INSTAGRAM_ORGANICInstagram orgânico
TIKTOK_ORGANICTikTok orgânico
FACEBOOK_ORGANICFacebook orgânico
YOUTUBE_ORGANICYouTube orgânico
OTHER_ORGANICOutras origens orgânicas
OTHEROutros
REFERRALIndicação
IN_PERSONVisita presencial
EVENTEvento
NO_TRACKINGSem rastreio
TRACKING_LOSTRastreio perdido. Definido só pela Leaper; não é aceito na entrada.

Status do lead

Status atual do lead e o anterior. Nulos quando não existem.

CampoTipoDescrição
currentobjeto (Passagem por status) ou nullStatus atual.
previousobjeto (Passagem por status) ou nullStatus anterior no histórico.

Status do lead com histórico

O status atual, o anterior e todas as passagens do lead pelo funil.

CampoTipoDescrição
currentobjeto (Passagem por status) ou nullStatus atual.
previousobjeto (Passagem por status) ou nullStatus anterior no histórico.
historylista de objetos (Passagem por status)Passagens pelo funil, da mais antiga para a mais recente.

Resposta de status do lead

CampoTipoDescrição
statusobjeto (Status do lead com histórico)O status atual, o anterior e todas as passagens do lead pelo funil.

Passagem por status

Um status do funil e quando o lead entrou nele.

CampoTipoDescrição
idtexto (uuid)id do status. Não muda quando o status é renomeado.
codetexto ou nullCódigo do status. Muda quando o status é renomeado, exceto END_WON (convertido) e END_LOST (perdido).
nametexto ou nullNome do status no painel.
changed_attexto (data e hora) ou nullQuando o lead entrou no status.

Tracking

Atribuição do lead, com a mesma informação do bloco tracking dos webhooks. URLs vêm sem query string.

CampoTipoDescrição
sourcetexto ou nullOrigem do lead, igual a lead.source.
source_apptexto ou nullAplicativo de origem, quando o lead veio de anúncio, como instagram ou facebook.
source_urltexto ou nullEndereço de onde partiu o clique.
source_typetexto ou nullTipo da origem, quando identificado.
utm_sourcetexto ou null
utm_mediumtexto ou null
utm_campaigntexto ou null
utm_contenttexto ou null
utm_termtexto ou null
referertexto ou nullPágina que encaminhou o visitante.
page_urltexto ou nullPágina em que o clique ou o envio aconteceu.
devicetexto ou nullTipo de dispositivo, como mobile.
browsertexto ou nullNavegador.
ostexto ou nullSistema operacional.
click_idtexto ou nullIdentificador do clique na plataforma de anúncio.
click_id_typetexto ou nullTipo do identificador, como ctwa_clid, fbclid, gclid, gbraid ou wbraid.
click_datetexto (data e hora) ou nullQuando o clique aconteceu.
campaign_dataobjeto ou nullAnúncio, conjunto e campanha de origem, quando identificados.
campaign_data.adobjeto ou null
campaign_data.ad.idtexto ou null
campaign_data.ad.nametexto ou null
campaign_data.ad.adset_idtexto ou null
campaign_data.ad.campaign_idtexto ou null
campaign_data.ad_setobjeto ou null
campaign_data.ad_set.idtexto ou null
campaign_data.ad_set.nametexto ou null
campaign_data.ad_set.campaign_idtexto ou null
campaign_data.campaignobjeto ou null
campaign_data.campaign.idtexto ou null
campaign_data.campaign.nametexto ou null
campaign_data.campaign.statustexto ou nullSituação da campanha na plataforma, como ACTIVE.
form_dataobjeto ou nullFormulário que originou o lead.
form_data.form_nametexto ou nullNome do formulário.
form_data.submitted_attexto (data e hora) ou nullQuando o formulário foi enviado.
journeylista de objetos (Passo da jornada) ou nullPáginas visitadas antes da conversão, quando o rastreamento do site está ativo.

Passo da jornada

Uma página visitada. Os parâmetros de atribuição (utm_*, gclid, wbraid, gbraid, fbclid, ttclid, msclkid) só aparecem quando existiam no acesso.

CampoTipoDescrição
tstexto (data e hora) ou nullQuando a página foi acessada.
durationinteiro ou nullTempo na página, em milissegundos.
urltexto ou nullEndereço da página.
reftexto ou nullPágina anterior.

Envio de formulário

CampoTipoDescrição
form_nametexto ou nullNome do formulário.
answerslista de objetosRespostas dos campos definidos no formulário.
answers[].fieldtextoNome técnico do campo.
answers[].labeltexto ou nullRótulo exibido no formulário.
answers[].valuetexto ou número ou booleano ou lista ou nullValor respondido. Campos de múltipla escolha trazem uma lista.
trackingobjeto (Tracking do formulário) ou nullParâmetros capturados na página no momento do envio.
submitted_attexto (data e hora) ou nullQuando o formulário foi enviado.

Tracking do formulário

Parâmetros capturados na página do formulário. Os que não existiam vêm null.

CampoTipoDescrição
utm_sourcetexto ou null
utm_mediumtexto ou null
utm_campaigntexto ou null
utm_contenttexto ou null
utm_termtexto ou null
utm_idtexto ou null
fbclidtexto ou null
gclidtexto ou null
wbraidtexto ou null
gbraidtexto ou null
msclkidtexto ou null
ttclidtexto ou null
leaper_adidtexto ou nullAnúncio informado no link rastreável.
leaper_adsetidtexto ou nullConjunto de anúncios informado no link rastreável.
leaper_campaignidtexto ou nullCampanha informada no link rastreável.
referertexto ou nullPágina que encaminhou o visitante.
page_urltexto ou nullPágina do formulário.
devicetexto ou null
browsertexto ou null
ostexto ou null
click_idtexto ou null
click_id_typetexto ou null
journeylista de objetos (Passo da jornada) ou null

Lista de leads

CampoTipoDescrição
datalista de objetosLeads da página.
data[].leadobjeto (Lead)Dados do contato e do cadastro.
data[].statusobjeto (Status do lead)Status atual do lead e o anterior. Nulos quando não existem.
data[].trackingobjeto (Tracking)Só com include=tracking.
data[].form_submissionslista de objetos (Envio de formulário)Só com include=form_submissions. Do envio mais recente para o mais antigo.
countinteiroTotal de leads que atendem aos filtros, em todas as páginas.
limitinteirolimit usado na consulta.
offsetinteirooffset usado na consulta.

Status do funil

CampoTipoDescrição
idtexto (uuid)Identificador do status. Não muda.
codetexto ou nullCódigo do status. Muda quando o status é renomeado, exceto END_WON e END_LOST.
nametexto ou nullNome do status no painel.
positioninteiro ou nullPosição no funil.
is_funnelbooleano ou nullSe o status aparece nas colunas do funil.

Lista de status do funil

CampoTipoDescrição
datalista de objetos (Status do funil)

Empresa

CampoTipoDescrição
idtexto (uuid)
nametexto ou null
documenttexto ou nullCNPJ ou CPF.
addresstexto ou null
phone_numbertexto ou null

Conversa

CampoTipoDescrição
messageslista de objetosMensagens em ordem cronológica.
messages[].from_mebooleanotrue quando a mensagem foi enviada pela empresa.
messages[].messagetextoTexto da mensagem.
messages[].received_attexto (data e hora) ou nullData e hora da mensagem.

Resultado de mensagem

CampoTipoDescrição
leadobjeto ou nullLead da conversa. null quando a mensagem da empresa foi ignorada.
lead.idtexto (uuid)

Período do relatório

Período somado no relatório, do jeito que a API entendeu os parâmetros.

CampoTipoDescrição
start_datetextoInício do período, no horário de Brasília.
end_datetextoFim do período, no horário de Brasília.
date_fieldtextoData usada para montar o período. Valores: created_at, status_changed_at.

Resumo do período

Totais do período.

CampoTipoDescrição
periodobjeto (Período do relatório)Período somado no relatório, do jeito que a API entendeu os parâmetros.
leadsinteiroLeads no período.
convertedinteiroLeads no status END_WON.
lostinteiroLeads no status END_LOST.
converted_valuenúmeroSoma do lead_value dos leads convertidos.
open_valuenúmeroSoma do lead_value dos leads que não foram convertidos nem perdidos.

Leads por status

Leads e valores de cada status do funil, na ordem do funil.

CampoTipoDescrição
periodobjeto (Período do relatório)Período somado no relatório, do jeito que a API entendeu os parâmetros.
datalista de objetos
data[].statusobjetoStatus do funil.
data[].status.idtexto (uuid) ou nullIdentificador do status. Não muda.
data[].status.codetexto ou nullCódigo do status.
data[].status.nametexto ou nullNome do status no painel.
data[].status.positioninteiro ou nullPosição no funil.
data[].leadsinteiroLeads que estão neste status.
data[].valuenúmeroSoma do lead_value desses leads.

Leads por origem

Leads e conversões de cada origem, da origem com mais leads para a com menos.

CampoTipoDescrição
periodobjeto (Período do relatório)Período somado no relatório, do jeito que a API entendeu os parâmetros.
datalista de objetos
data[].sourcetexto ou nullOrigem do lead (veja Origem do lead).
data[].leadsinteiroLeads desta origem no período.
data[].convertedinteiroLeads desta origem no status END_WON.
data[].converted_valuenúmeroSoma do lead_value dos leads convertidos desta origem.

Erro

Formato de todos os erros. A mensagem é em inglês e diz o que corrigir.

CampoTipoDescrição
errortextoDescrição do problema.