Logo da Plataforma Yep
API REST · Plataforma Yep Documentação técnica para integrações homologadas

Leads e agendamentos

Endpoints somente leitura para consultar os registros de captação da loja: /api2/leads para leads e /api2/schedules (com alias /api2/agendamentos) para agendamentos. Foram desenhados para integrações externas — fluxos n8n, CRMs e BI — que precisam ler captações com filtros, UTMs e paginação determinística sem acessar o administrativo.

REST JSON Bearer Token Novo em 2026

Visão geral

Os recursos de captação expõem dois contratos GET independentes. Leads retorna contatos capturados em formulários e landing pages; Agendamentos retorna solicitações de agenda por unidade. Ambos são read-only — não há criação, atualização ou exclusão por esta API — e compartilham as mesmas regras de paginação, ordenação e datas.

200
Limit máximoPor página em qualquer listagem via limit.
20
Limit padrãoAplicado quando limit é omitido.
GET
Somente leituraConsultas que não passam pela fila de auditoria de escrita.
UTM
AtribuiçãoFiltros por utm_source, utm_medium e utm_campaign.
Todos os endpoints exigem Authorization: Bearer {token} e a integração precisa ter permissão de leitura para captação concedida no administrativo. Os parâmetros podem ser enviados via query string ou body JSON no GET, conforme a conveniência do integrador.

Regras gerais

Convenções comuns aos dois recursos de captação. Base URL nos exemplos: /api2. Toda consulta exige Authorization: Bearer {{token}}.

  • Filtros aceitam query string ou JSON body no GET. Quando o mesmo campo existir nos dois lugares, o valor da query string prevalece.
  • Filtros de texto (email, phone, name) são por igualdade exata, sem diferenciar maiúsculas/minúsculas. Não há busca parcial.
  • Paginação padrão: page=1, limit=20. Limite máximo: 200. Use include_pagination=1 para receber total, last_page e has_next no corpo.
  • Datas usam YYYY-MM-DD ou YYYY-MM-DD HH:MM:SS. Formatos inválidos retornam 400.
  • Ordenação: use sort e direction (asc ou desc). Padrão: sort=created_at, direction=desc.
  • Consulta por id retorna um único registro; quando não houver correspondência, a resposta é 404.

Leads

Consulta dos contatos capturados em formulários, landing pages e campanhas, com dados de atribuição (UTMs), origem e cupom vinculado.

GET/api2/leads

Lista leads com filtros e paginação determinística.

ListagemFiltrosNovo
id Opcional
Inteiro. Retorna um único lead pelo ID. Sem correspondência, retorna 404.
store_id Opcional
Inteiro. Filtra pela unidade de captação.
email Opcional
String. Filtro por e-mail exato, sem diferenciar maiúsculas/minúsculas.
phone Opcional
String. Filtro por telefone exato.
name Opcional
String. Filtro por nome exato.
created_from / created_to Opcional
Intervalo de criação. Aliases aceitos: created_at_from e created_at_to. Aceita data ou data/hora.
utm_source / utm_medium / utm_campaign Opcional
String. Filtros de atribuição por valor exato.
origin Opcional
String. Origem informada no formulário de captação.
coupon_id Opcional
Inteiro. ID do cupom vinculado ao lead.
coupon_used Opcional
String. Código de cupom usado ou gerado para o lead.
promoters_name Opcional
String. Nome do promotor vinculado à captação.
page / limit / include_pagination Opcional
Paginação. Padrão page=1, limit=20 (máximo 200). Com include_pagination=1, retorna total, last_page e has_next.
sort / direction Opcional
Ordenação. Campos aceitos: id, created_at, name, email, store_id. Padrão created_at desc.

Exemplo — query string

GET /api2/leads?page=1&limit=50&include_pagination=1&created_from=2026-06-01&created_to=2026-06-30&sort=created_at&direction=desc
Authorization: Bearer {{token}}

Resposta — exemplo

{
  "success": true,
  "page": 1,
  "limit": 50,
  "total": 1,
  "last_page": 1,
  "has_next": false,
  "leads": [
    {
      "id": 123,
      "store_id": 10,
      "name": "Maria Silva",
      "email": "[email protected]",
      "phone": "11999999999",
      "created_at": "2026-06-20 14:30:00",
      "utm_source": "google",
      "utm_medium": "cpc",
      "utm_campaign": "avaliacao",
      "utm_term": null,
      "utm_content": null,
      "origin": "landing_page",
      "coupon_id": 5,
      "coupon_used": "CAMPANHA_123",
      "promoters_name": "Promotor A"
    }
  ]
}
Os metadados total, last_page e has_next só aparecem quando include_pagination=1 é enviado.
GET/api2/leads?id=123por ID

Busca um lead específico pelo ID. A resposta traz o registro completo dentro de leads.

GET /api2/leads?id=123
Authorization: Bearer {{token}}

Agendamentos

Consulta das solicitações de agenda por unidade, com data e horário, tratamento solicitado, atribuição (UTMs) e status de sincronização com sistemas externos. Disponível em /api2/schedules e no alias em português /api2/agendamentos — ambos com o mesmo contrato.

GET/api2/schedules

Lista agendamentos com filtros e paginação determinística.

ListagemFiltrosNovo
id Opcional
Inteiro. Retorna um único agendamento pelo ID. Sem correspondência, retorna 404.
unity_id Opcional
Inteiro. Filtra pela unidade do agendamento.
email / phone / name Opcional
String. Filtro exato, sem diferenciar maiúsculas/minúsculas.
date_from / date_to Opcional
Período da data do agendamento (campo date).
created_from / created_to Opcional
Período de criação do registro. Aceita data ou data/hora.
time Opcional
String. Horário gravado, no formato 14:30.
treatment Opcional
String. Tratamento ou serviço solicitado.
origin Opcional
String. Origem do agendamento.
status_gester Opcional
Status de sincronização: 1 Pendente, 2 Sincronizado, 3 Erro. Aceita lista separada por vírgula, ex.: 1,3.
codigo_gester Opcional
String. Cupom/código de integração do agendamento.
campanha_interna_id Opcional
Inteiro. ID da campanha interna vinculada.
utm_source / utm_medium / utm_campaign Opcional
String. Filtros de atribuição por valor exato.
page / limit / include_pagination Opcional
Paginação. Padrão page=1, limit=20 (máximo 200). Com include_pagination=1, retorna total, last_page e has_next.
sort / direction Opcional
Ordenação. Campos aceitos: id, created_at, date, time, name, email, unity_id, status_gester. Padrão created_at desc.

Exemplo — query string

GET /api2/schedules?page=1&limit=50&include_pagination=1&date_from=2026-06-01&date_to=2026-06-30&status_gester=1,3
Authorization: Bearer {{token}}

Resposta — exemplo

{
  "success": true,
  "page": 1,
  "limit": 50,
  "total": 1,
  "last_page": 1,
  "has_next": false,
  "schedules": [
    {
      "id": 456,
      "name": "Ana Costa",
      "email": "[email protected]",
      "phone": "11988888888",
      "date": "2026-06-25",
      "time": "15:00",
      "unity_id": 10,
      "treatment": "Avaliação gratuita",
      "created_at": "2026-06-20 16:10:00",
      "utm_source": "instagram",
      "utm_medium": "social",
      "utm_campaign": "agenda",
      "utm_term": null,
      "utm_content": null,
      "origin": "C",
      "campanha_interna": "https://example.com/lp",
      "campanha_interna_id": null,
      "codigo_gester": "ABC123",
      "status_gester": 2,
      "status_gester_label": "Sincronizado",
      "mensagem_erro_gester": null
    }
  ]
}
GET/api2/schedules?id=456por ID

Busca um agendamento específico pelo ID. Também disponível via alias /api2/agendamentos?id=456.

GET /api2/schedules?id=456
Authorization: Bearer {{token}}

Status de sincronização do agendamento

O campo status_gester reflete a etapa de sincronização do agendamento com o sistema externo. O campo status_gester_label traz a descrição legível e mensagem_erro_gester detalha a falha quando houver.

ValorLabelSignificado
1PendenteAguardando sincronização com o sistema externo.
2SincronizadoEnviado com sucesso ao sistema externo.
3ErroFalha na sincronização — verifique mensagem_erro_gester.

Reprocessamento

Para monitorar pendências e falhas, filtre por status_gester=1,3 e ordene por created_at. Assim o fluxo identifica registros que ainda precisam ser sincronizados ou reprocessados.

Formas de uso suportadas

Combinações testadas e homologadas para leads e agendamentos.

Leads recentesGET /api2/leads?include_pagination=1&sort=created_at&direction=desc
Leads por períodoGET /api2/leads?created_from=2026-06-01&created_to=2026-06-30
Leads por campanha (UTM)GET /api2/leads?utm_source=google&utm_campaign=avaliacao
Lead por IDGET /api2/leads?id=123
Agendamentos da unidadeGET /api2/schedules?unity_id=10&date_from=2026-06-01&date_to=2026-06-30
Agendamentos pendentes/erroGET /api2/schedules?status_gester=1,3&include_pagination=1
Alias em portuguêsGET /api2/agendamentos?id=456

Recomendações para integração

Boas práticas consolidadas para fluxos n8n, CRM e BI que sincronizam captações com a Plataforma Yep.

Recomendado

  • Use include_pagination=1 quando o fluxo precisar iterar páginas até has_next=false.
  • Para cargas incrementais, prefira janelas por created_from/created_to e guarde o último horário processado no próprio fluxo para evitar duplicidade.
  • Combine limit=100 + include_pagination=1 + sort=created_at&direction=asc para paginar com critério de parada e ordem previsíveis.
  • Use store_id (leads) ou unity_id (agendamentos) para resultados determinísticos em operações multiunidade.

Evitar

  • Esperar busca parcial por nome, e-mail ou telefone — os filtros de texto são por igualdade exata.
  • Tentar criar, atualizar ou excluir captações por esta API — os endpoints são somente leitura.
  • Depender de ordenação implícita entre páginas — sempre informe sort e direction.

Dica para fluxos n8n

Para cargas incrementais, dispare a consulta com a janela created_from igual ao último checkpoint processado, pagine até has_next=false e persista o maior created_at retornado como novo checkpoint. Como os endpoints são GET e não passam pela fila de auditoria de escrita, são seguros para polling frequente.

Erros comuns

StatusExemplo de bodyQuando ocorre
400{"error":"Campo de ordenação inválido."}Parâmetro inválido, JSON inválido ou campo de ordenação não suportado.
401{"error":"Token ausente ou malformado."}Token ausente, malformado, inválido, revogado ou expirado.
403{"error":"Acesso negado para este recurso da API."}Token válido, mas sem permissão de leitura para captação.
404{"error":"Lead não encontrado."}Consulta por id sem registro correspondente.