Forecast

Base do forecast

GET
/v1/forecast/baseline

A base mensal de onde o forecast parte, montada com as mesmas leituras dos dashboards: o funil de aquisição, o investimento em mídia e os cards de rentabilidade dos últimos 30 dias (horário de São Paulo), e os cards dos últimos 365 dias para o faturamento de 12 meses.

  • status: "ready" traz a base. noFunnel: sem funil configurado, nada medido no topo ou nenhuma etapa do lado do cliente. noRevenue: há funil, mas não há receita nem ticket para ancorar a projeção. error: a leitura do funil falhou.
  • Uma falha na leitura de receita, investimento ou 12 meses degrada em vez de falhar: o investimento cai para o dos cards e depois para 0 (sem alavanca de mídia); o faturamento de 12 meses cai para os últimos 30 dias × 365/30, com annualized: true.
  • averageTicket é o ticket dos cards; sem ele, a receita dos 30 dias ÷ os pedidos da última etapa da cadeia.
  • businessModel vem do cadastro da organização no v4mos-marketing (o Authorization de quem chama é repassado, como o diagnóstico lê), com a configuração do bowtie de retaguarda; vendas_online → online_sales, inside_sales → inside_sales, pdv → pos. Desconhecido → null e todo floor é null.
  • Cache de 30 minutos que não depende de quem chama: as leituras por organização e dia de São Paulo, e o modelo do cadastro da organização por organização, só depois de lido com sucesso do cadastro. Quem chama sem Authorization (cliente de API) recebe esse modelo em cache ou, sem ele, o da configuração do bowtie; os pisos são montados a cada chamada.

Autorização

ClientIdAuthClientSecretAuth
headerx-client-id<token>

Client ID

headerx-client-secret<token>

Client secret

Parâmetros de query

organizationId*string

Identificador da organização (obrigatório). Um valor ausente ou que não seja string resulta em 400.

Corpo da resposta

Base do forecast

application/json
  1. response

Discriminado por status. Só ready traz a base.

status*string
baseline*
curl -X GET "https://example.com/v1/forecast/baseline?organizationId=c0ad4763-173e-4a05-9cff-5208c8ea5f6a"

{  "status": "ready",  "baseline": {    "windowStart": "2026-10-01",    "funnelKind": "ecommerce",    "businessModel": "online_sales",    "monthlyInvestment": 25000,    "stages": [      {        "stageId": "ATTENTION",        "scale": "media",        "role": "sessions",        "count": 100000,        "rate": null,        "sourceLabel": "GA4 · Sessões",        "floor": null      },      {        "stageId": "INTEREST",        "scale": "customer",        "role": "cart",        "count": 8000,        "rate": 0.08,        "sourceLabel": "Shopify · Add to cart",        "floor": 0.06      },      {        "stageId": "QUALIFICATION",        "scale": "customer",        "role": "checkout",        "count": 4000,        "rate": 0.5,        "sourceLabel": "Shopify · Initiate checkout",        "floor": 0.37      },      {        "stageId": "DECISION",        "scale": "customer",        "role": "purchase",        "count": 2000,        "rate": 0.5,        "sourceLabel": "Shopify · Pedido pago",        "floor": 0.5525      },      {        "stageId": "RETENTION",        "scale": "customer",        "role": "retention",        "count": 300,        "rate": 0.15,        "sourceLabel": "Shopify · Recompra",        "floor": null      }    ],    "averageTicket": 180,    "monthlyRevenue": 342000,    "trailingRevenue": {      "value": 3900000,      "annualized": false    },    "revenueSource": "transactional"  }}