List Risk Findings
/api/v1/risk/findings
Token needs the read ability.
About tokens
Risk Assessment flags: stores whose discount rate or $0-check rate is outside their usual range, each with the plain-sentence factors the Risk drill-down shows. By default returns unresolved findings (open or acknowledged), worst tier first and, within a tier, longest-running first. Requires the read ability, the Risk Assessment feature, and the view risk assessment permission; a franchisee token additionally needs risk to be visible to franchisees.
Franchisee tokens see only their own stores' findings, receive no tier, peak_tier, or escalation (every flag reads "Outside your usual range" in tier_label), and never receive network findings. The same report backs the get-risk-findings MCP tool.
Query parameters
-
locationstring (uuid)Location UUID. Addslatest_assessmentfor each rate the account scores to the response. A franchisee token asking for a location outside its portfolio receives 403. -
metricstringOne rate.cash_shareis scored only where the account has cash share turned on; it is flagged when the store's cash share falls well below its own norm.discount_ratezero_net_check_ratecash_share -
statusstringOne status, orany. Default open and acknowledged.openacknowledgedexplainedclearedany -
min_tierstringFindings at or above this tier. Ignored for franchisee tokens.watchelevatedhigh -
opened_sincestring (date)Only findings opened on or after this date, formattedYYYY-MM-DD. -
include_networkbooleanFranchisor tokens only: also returnnetwork_findings, where much of the network moved together. Ignored for franchisee tokens. -
limitintegerMaximum findings to return (1–100, default 25).
Responses
-
-
dataRiskFindings-
latest_assessed_onstring (date) nullableThe latest night the engine assessed; null before its first run. -
countintegerFindings in this response. -
totalintegerFindings matching the filters before the limit. -
summaryRiskFindingsSummaryCounts over every finding matching the filters, before the limit. Tier counts are omitted for franchisee tokens.-
findingsinteger -
storesintegerDistinct stores with at least one matching finding. -
by_metricobjectKeyed by metric (discount_rate, zero_net_check_rate, cash_share). -
by_tierobjectFranchisor only; keyed by tier (high, elevated, watch). -
stores_on_both_metricsobjectStores with a matching finding on both rates.-
countinteger -
storesarray of string
-
-
-
findingsarray of RiskFinding-
idstring (uuid) -
locationobject-
uuidstring (uuid) -
namestring -
districtstring nullable -
categorystring nullable
-
-
metricstringdiscount_ratezero_net_check_ratecash_share -
metric_labelstring -
kindstringspikechronicdrifthard_threshold -
kind_labelstring -
tierstringOmitted for franchisee tokens.watchelevatedhigh -
tier_labelstring -
peak_tierstringOmitted for franchisee tokens.watchelevatedhigh -
statusstringopenacknowledgedexplainedcleared -
status_labelstring -
opened_onstring (date) -
last_seen_onstring (date) -
closed_onstring (date) nullable -
weeks_openintegerWeeks the finding has been open, counting the opening week as week 1. -
escalationobject nullableThe last tier rise. Omitted for franchisee tokens.-
onstring (date) -
fromstring -
tostring
-
-
acknowledged_bystring nullable -
explanationobject nullable-
reasonstring -
reason_labelstring -
notestring nullable -
bystring nullable -
onstring (date) nullable -
promotion_windowobject nullable
-
-
factorsarray of objectThe evidence behind the flag, one plain sentence per factor.-
keystringown_historypeersdriftother_metricnetwork_shiftvolumeconcentration -
statusstringhitwarnokna -
textstring
-
-
-
network_findingsarray of RiskNetworkFindingPresent only when a franchisor token passes include_network.-
idstring (uuid) -
locationobject nullableAlways null. -
metricstring -
metric_labelstring -
statusstring -
status_labelstring -
opened_onstring (date) -
last_seen_onstring (date) -
closed_onstring (date) nullable -
window_starts_onstring (date) nullable -
breadth_pctnumber nullableShare of eligible stores that moved, as a percent. -
moversinteger nullable -
eligibleinteger nullable -
network_rate_pctnumber nullable -
explanationobject nullable
-
-
latest_assessmentobjectPresent only whenlocationis passed; keyed by metric, null when the store was not assessed that night.
-
-
-
-
messagestring
-
-
-
messagestring
-
-
-
messagestring -
errorsobject
-
curl "https://app.franchisesee.com/api/v1/risk/findings" \
-H "Authorization: Bearer $FRANCHISESEE_TOKEN" \
-H "Accept: application/json"
{
"data": {
"latest_assessed_on": "2026-11-11",
"count": 1,
"total": 3,
"summary": {
"findings": 3,
"stores": 2,
"by_metric": {
"field": {
"label": "Discount rate",
"findings": 2,
"stores": 2,
"by_tier": {
"field": 1
}
}
},
"by_tier": {
"field": 1
},
"stores_on_both_metrics": {
"count": 1,
"stores": [
"string"
]
}
},
"findings": [
{
"id": "0f7d3b9e-5a1c-4e8f-b2d6-7c4a9e1f3b85",
"location": {
"uuid": "9b1c8f3e-7a2d-4c5b-8e1a-2f3d4c5b6a7e",
"name": "Downtown Austin",
"district": "Central Texas",
"category": "Inline"
},
"metric": "discount_rate",
"metric_label": "Discount rate",
"kind": "spike",
"kind_label": "Spike",
"tier": "elevated",
"tier_label": "Elevated",
"peak_tier": "elevated",
"status": "explained",
"status_label": "Explained",
"opened_on": "2026-10-27",
"last_seen_on": "2026-11-10",
"closed_on": null,
"weeks_open": 3,
"escalation": {
"on": "2026-11-03",
"from": "watch",
"to": "elevated"
},
"acknowledged_by": null,
"explanation": {
"reason": "approved_promotion",
"reason_label": "Approved promotion",
"note": "BOGO bowls weekend run by the local marketing co-op.",
"by": "Jordan Rivera",
"on": "2026-11-04",
"promotion_window": {
"name": "BOGO Bowls Weekend",
"starts_on": "2026-11-07",
"ends_on": "2026-11-09"
}
},
"factors": [
{
"key": "own_history",
"status": "hit",
"text": "Discount rate was 6.8% last week, against a usual 2.1% for this store."
}
]
}
],
"network_findings": [
{
"id": "2c8e4a6f-9b1d-4f3a-8e5c-1d7b3f9a5e26",
"location": {},
"metric": "zero_net_check_rate",
"metric_label": "$0-check rate",
"status": "open",
"status_label": "Open",
"opened_on": "2026-10-20",
"last_seen_on": "2026-11-10",
"closed_on": null,
"window_starts_on": "2026-10-13",
"breadth_pct": 41.7,
"movers": 20,
"eligible": 48,
"network_rate_pct": 1.9,
"explanation": {}
}
],
"latest_assessment": {
"field": {
"assessed_on": "2026-11-10",
"rate_pct": 6.8,
"usual_rate_pct": 2.1,
"comparable_stores_rate_pct": 2.4,
"comparable_store_count": 12,
"checks": 1834,
"flagged": true,
"tier_label": "Elevated",
"suppression": null,
"suppression_label": null
}
}
}
}