Skip to main content

Renewal Forecast API

The Renewal Forecast API computes per-renewal probabilities and org-level GRR/NRR projections. GET returns cached or on-the-fly computed forecasts; POST triggers a fresh computation and persists results.

GET /api/forecasting/renewals

Returns the org-level forecast and per-renewal probabilities for a given period. Auth: Requires authenticated session. Scoped to organization.

Query Parameters

Response

The response includes:
  • forecast — Org-level metrics: total renewable ARR, weighted renewal ARR, projected GRR, projected NRR, high confidence ARR, at-risk ARR, renewal count, average probability
  • probabilities — Per-renewal array with account details, probability, confidence tier, risk factors, positive signals, ARR, renewal date, health score, risk score
  • cached — Boolean indicating whether results were served from cache

Response Fields: forecast

Response Fields: probabilities[]

Caching Behavior

GET first checks for a cached forecast matching the org, period, and model version. If found, it returns cached data with cached: true. If not, it computes on-the-fly without persisting.

POST /api/forecasting/renewals

Triggers a fresh forecast computation and persists results. Auth: Requires authenticated session. Scoped to organization.

Request Body

Response

Same structure as GET, with cached: false.

Side Effects

  • Persists org-level forecast data (keyed on organization + period + model version)
  • Persists per-renewal probability data (keyed on renewal + model version)

Computation Flow

  1. Load all renewals in the period with associated account data
  2. Load active signals to detect critical signal accounts
  3. Load active plays to detect accounts with open playbooks
  4. Compute probability for each renewal using the scoring model
  5. Aggregate into org-level GRR/NRR projections
  6. Persist forecast and probability records
See the Renewal Forecasting data model page for full details on the probability model inputs and weights.