Skip to content

Insights & forecasts

Predictive and comparative insight endpoints built on your venues’ own history. Every endpoint is operator (client role) and scoped to venues you can access with scope - either one venue id, or all to combine every venue you can access. Most of this page needs the Advanced BI add-on (bi_advanced); each endpoint that does is marked below. Forecasts are statistical estimates with an 80% confidence range, not guarantees - treat them as a planning aid.

Method Path Purpose Auth
GET /api/my-operator/demand-forecast Predicted covers/bookings, 1-8 weeks ahead operator, Advanced BI
GET /api/my-operator/revenue-forecast Predicted revenue, 1-8 weeks ahead operator, Advanced BI
GET /api/my-operator/staffing-plan Suggested headcounts from the demand forecast operator, Advanced BI
GET /api/my-operator/noshow-forecast Per-booking no-show risk for an upcoming window operator, Advanced BI
GET /api/my-operator/deposit-whatif Simulate the effect of a deposit amount operator, Advanced BI
GET /api/my-operator/churn-forecast Guests ranked by risk of lapsing operator, Advanced BI
GET /api/my-operator/forecast-accuracy How accurate recent forecasts have been operator, Advanced BI
GET /api/my-operator/forecast-coverage How much history is available to forecast from operator, Advanced BI
GET /api/my-operator/ml-predictions Raw prediction feed behind the forecasts above operator, Advanced BI
GET /api/my-operator/network-benchmarks Compare your metrics to an anonymised peer group operator, Advanced BI
GET /api/my-operator/anomalies Metrics that moved significantly this week operator
GET /api/my-operator/proactive-alerts Preview this week’s proactive alert operator
GET /api/my-operator/weekly-digest Preview a venue’s weekly email digest operator
GET /api/my-operator/insights/rules List your custom alert rules operator

Guest-level predictions (attendance, cancellation, lifetime value) are a separate, guest-scoped endpoint - see A guest’s predicted attendance and lifetime value.

GET /api/my-operator/demand-forecast and GET /api/my-operator/revenue-forecast predict covers and revenue per venue per service window for weeks ahead (1-8, default 4), each with an 80% confidence range. GET /api/my-operator/staffing-plan turns the demand forecast into a suggested front-of-house/kitchen headcount per venue, day and service window - add format=print for a printable HTML roster, or format=csv to download one as a file.

Terminal window
curl "https://thesidedoor.co/api/my-operator/demand-forecast?weeks=4&scope=all" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{
"venues": [
{
"venue_id": "ven_123",
"forecast": [{ "week_of": "2026-07-13", "covers": 410, "range": [360, 460] }],
"context": { "holidays": [], "school_breaks": [] }
}
],
"action": { "venue_id": "ven_123", "note": "Tuesday looks quiet next week" }
}

Without the Advanced BI add-on, these return { "entitled": false, "addon": "bi_advanced" } instead of a 403.

GET /api/my-operator/noshow-forecast scores each upcoming booking (within days, default 14) by no-show risk, with a summary per venue. GET /api/my-operator/deposit-whatif simulates what would happen if you required a deposit of depositPence (default 2500) over the next days: projected no-shows avoided, revenue protected and deposits captured.

Terminal window
curl "https://thesidedoor.co/api/my-operator/noshow-forecast?days=14&scope=all" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
curl "https://thesidedoor.co/api/my-operator/deposit-whatif?depositPence=2500&days=14" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{
"bookings": [{ "id": "bkg_9a1", "venue_id": "ven_123", "risk_pct": 34, "tier": "medium" }],
"summary": { "upcoming": 120, "high": 6, "medium": 18, "low": 96, "expectedNoShows": 11 }
}
{
"before": { "expected_noshows": 11, "revenue_at_risk_pence": 198000 },
"after": { "expected_noshows": 4, "deposit_captured_pence": 300000 },
"uplift_pence": 110000
}

Guest names are only included in noshow-forecast for callers with the analytics.pii permission - without it, rows carry the risk data only.

GET /api/my-operator/churn-forecast ranks your regular guests (3+ visits by default, tune with minVisits) by how likely they are to lapse, with a “why” and a projected value at risk if they do.

Terminal window
curl "https://thesidedoor.co/api/my-operator/churn-forecast?minVisits=3&limit=100" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{ "guests": [{ "id": "usr_abc", "status": "at_risk", "lapse_probability": 0.42, "value_at_risk_pence": 24000 }] }

Guest names and contact details are only included for callers with the analytics.pii permission; everyone else sees the scores without identity.

GET /api/my-operator/forecast-accuracy reports how close recent forecasts came to what actually happened, per venue. GET /api/my-operator/forecast-coverage reports how much usable booking history exists to forecast from. Both flag a venue as not having enough history yet rather than guessing - useful to check before you lean on the forecasts above for a brand-new venue.

Terminal window
curl "https://thesidedoor.co/api/my-operator/forecast-coverage?scope=all" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{
"venues": [{ "venue_id": "ven_123", "days_covered": 210, "tier": "ready" }],
"summary": { "ready": 2, "limited": 1, "cold": 0, "none": 0 }
}

GET /api/my-operator/ml-predictions returns the underlying per-booking, per-guest and per-venue-day predictions that feed the forecasts above, as a flat list - useful if you want the raw records rather than one of the friendlier views. Filter with model (demand, revenue, noshow, churn or ltv) and scope.

Terminal window
curl "https://thesidedoor.co/api/my-operator/ml-predictions?model=demand&scope=all" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{
"predictions": [{ "model": "demand", "venue_id": "ven_123", "date": "2026-07-14", "value": 410 }],
"runs": [{ "model": "demand", "trained_at": "2026-07-13T04:00:00Z" }]
}
Terminal window
curl "https://thesidedoor.co/api/my-operator/network-benchmarks?scope=all" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{
"venues": [
{
"venue_id": "ven_123",
"metrics": {
"no_show_rate": { "yours": 0.06, "p25": 0.04, "p50": 0.08, "p75": 0.12, "verdict": "better" }
},
"sufficient": true
}
],
"optedOut": false
}

GET /api/my-operator/anomalies flags metrics that moved significantly this week, with a likely driver; add ?explain=1 for a plain-English narrative (uses your Aimy allowance). GET /api/my-operator/proactive-alerts previews the proactive alert that would be sent right now, if any. GET /api/my-operator/weekly-digest?venue_id= previews a venue’s weekly email report. None of these three need the Advanced BI add-on.

Terminal window
curl "https://thesidedoor.co/api/my-operator/anomalies?scope=all" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{ "coldStart": false, "anomalies": [{ "metric": "covers", "venue_id": "ven_123", "change_pct": -18, "likely_driver": "weather" }] }

A venue with nothing unusual this week returns an empty anomalies array, and proactive-alerts/weekly-digest return { "alerting": false } / { "coldStart": true, "report": null } rather than an error.

GET /api/my-operator/insights/rules lists the custom alert rules you’ve set up - each watching one metric against a threshold, with the message and recommendation it fires when triggered.

Terminal window
curl "https://thesidedoor.co/api/my-operator/insights/rules" \
-H "Authorization: Bearer $SIDEDOOR_TOKEN"
{
"rules": [
{
"id": "rule_1",
"title": "Revenue drop",
"metric": "revenue",
"period": "week",
"cmp": "lt",
"threshold": -15,
"severity": "high",
"recommendation": "Check for a cancelled event or venue closure"
}
]
}