Skip to main content

Documentation Index

Fetch the complete documentation index at: https://hc.pillargtm.com/llms.txt

Use this file to discover all available pages before exploring further.

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

ParameterTypeDefaultDescription
periodstringNext quarterPeriod to forecast. Formats: 2026-Q2, 2026-H2, 2026
model_versionstringv1Model version identifier

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

FieldTypeDescription
org_idstringOrganization ID
forecast_periodstringPeriod identifier
forecast_datestringISO timestamp of computation
total_renewable_arrnumberTotal ARR up for renewal
weighted_renewal_arrnumberProbability-weighted ARR
projected_grrnumberProjected Gross Revenue Retention (0-1)
projected_nrrnumberProjected Net Revenue Retention (0-1)
high_confidence_arrnumberARR from high-confidence renewals
at_risk_arrnumberARR from at-risk renewals
renewal_countnumberNumber of renewals in period
avg_probabilitynumberAverage renewal probability
forecast_model_versionstringModel version used

Response Fields: probabilities[]

FieldTypeDescription
renewal_idstringRenewal record ID
account_idstringAccount ID
account_namestringAccount display name
probabilitynumberRenewal probability (0.01-0.99)
confidence_tierstringhigh, medium, or at_risk
risk_factorsarray[{factor, impact, description}]
positive_signalsarray[{signal, impact, description}]
arr_amountnumberRenewal ARR
renewal_datestringRenewal due date
health_scorenumberAccount health score
risk_scorenumberAccount risk score

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

FieldTypeDefaultDescription
periodstringNext quarterPeriod to forecast
model_versionstringv1Model version identifier

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.