CRM Oficina Martech
ReferênciaRelatórios

Relatório do funil

GET /analytics/reports/funnel — entradas, saídas e tempo por etapa, e envelhecimento dos negócios abertos por etapa e por responsável.

GET/analytics/reports/funnelBeta

Escopo necessário: analytics:read

Responde quantos negócios entraram e saíram de cada etapa na janela, quanto tempo ficaram nela antes de sair e há quantos dias os negócios abertos estão na etapa atual. O mesmo envelhecimento vem por responsável. O relatório é agregado: não traz contatos nem negócios individuais.

Endpoint

GET https://crm.oficinamartech.com/api/v1/analytics/reports/funnel

Parâmetros de query

ParâmetroTipoDescrição
daysint (1-90)Janela em dias. Default: 30. Termina no fim de hoje, no fuso da organização.
pipeline_idUUIDUm funil específico. Sem o filtro, entram só os funis ativos. Um funil de outra organização devolve listas vazias.

Um parâmetro fora desta lista é recusado com 400.

A janela termina no fim de hoje no fuso da organização (window.timezone). window.start é o primeiro dia e window.end é o dia seguinte ao último dia da janela. A resposta usa Cache-Control: private, no-store.

Exemplo

curl -s "https://crm.oficinamartech.com/api/v1/analytics/reports/funnel?days=30" \
  -H "Authorization: Bearer crm_live_SEU_PREFIXO_SEU_SEGREDO"

Resposta 200

{
  "captured_at": "2026-11-13T15:20:41.318Z",
  "window": {
    "days": 30,
    "timezone": "America/Sao_Paulo",
    "start": "2026-10-15",
    "end": "2026-11-14"
  },
  "pipelines": [
    {
      "pipeline_id": "9b1c0f52-58cc-4372-a567-0e02b2c3d479",
      "pipeline_name": "Vendas",
      "stages": [
        {
          "stage_id": "5a7e1d20-58cc-4372-a567-0e02b2c3d479",
          "stage_name": "Qualificação",
          "position": 1,
          "kind": "open",
          "entries": 84,
          "exits": 61,
          "measured_exits": 58,
          "avg_hours": 52.4,
          "median_hours": 30.1,
          "p90_hours": 140.7,
          "open": 23,
          "open_0_7": 12,
          "open_8_14": 5,
          "open_15_30": 4,
          "open_31_plus": 1,
          "open_unknown_age": 1,
          "open_avg_days": 8.3,
          "open_oldest_days": 36,
          "without_next_followup": 6,
          "overdue_followup": 3
        }
      ]
    }
  ],
  "operators": [
    {
      "operator_id": "11111111-58cc-4372-a567-0e02b2c3d479",
      "operator_name": "Ana Souza",
      "open": 14,
      "open_0_7": 8,
      "open_8_14": 3,
      "open_15_30": 2,
      "open_31_plus": 0,
      "open_unknown_age": 1,
      "open_avg_days": 6.1,
      "open_oldest_days": 24,
      "without_next_followup": 2,
      "overdue_followup": 1
    }
  ]
}

Campos

CampoDefinição
captured_atInstante em que o relatório foi calculado (UTC).
windowdays, timezone (fuso da organização), start (primeiro dia) e end (dia seguinte ao último).
pipelines[].stages[].kindopen, won ou lost.
entriesNegócios que entraram na etapa na janela (criação ou mudança de etapa).
exitsNegócios que saíram da etapa na janela.
measured_exitsSaídas cuja entrada está registrada. Só elas entram em avg_hours, median_hours e p90_hours; as demais ficam fora dos três.
avg_hours, median_hours, p90_hoursTempo na etapa antes de sair, em horas. null quando não há saída medida.
openNegócios abertos hoje na etapa (ou com o responsável, em operators).
open_0_7, open_8_14, open_15_30, open_31_plusAbertos por dias na etapa atual: 0–7, 8–14, 15–30 e 31 ou mais.
open_unknown_ageAbertos sem registro de entrada na etapa atual. Ficam fora das faixas e de open_avg_days.
open_avg_days, open_oldest_daysMédia e máximo de dias na etapa atual. null quando nenhum aberto tem idade conhecida.
without_next_followupAbertos sem próximo contato agendado.
overdue_followupAbertos com o próximo contato vencido.
operators[].operator_id, operator_nameResponsável pelo negócio. operator_id null agrupa os negócios sem responsável.

Os campos de open_*, without_next_followup e overdue_followup descrevem o estado atual e não dependem da janela. entries, exits e os tempos usam a janela.

Erros

StatusCódigoQuando
400invalid_querydays fora de 1–90, pipeline_id malformado ou parâmetro desconhecido.
401missing_api_key / invalid_api_keyAPI key ausente, inválida, expirada ou revogada.
403missing_scopeA chave não tem o escopo analytics:read.
413report_too_largeO relatório passou do limite de tamanho. Informe pipeline_id para ler um funil por vez.
429rate_limitedAcima de 120 req/min por chave ou por organização.
500—Erro interno.

Um nome de relatório desconhecido no caminho responde 404 not_found.

On this page