MetricExplanation
Use this when the user asks why a metric has its value or how it was computed for a specific month: returns the formula with every part resolved to its…
Authentication
Authorization<token>A SaaSFlow API key (format sf_…) or an OAuth bearer token. Paste only the key — the proxy adds the Bearer prefix. Create an API key in Settings → Company settings → API keys — see API keys.
companyId*string1 <= lengthapplication/json- body
metricName*string"mrr""arr""revenue""cogs""cac""pd""ga""newCustomers""grossProfit""grossProfitMargin""operatingProfit""operatingProfitMargin""cacPerNewCustomer""mrrPerCustomer""mrrPerNewCustomer""cacPaybackPeriod""churnRate""churnRate12m""customerChurnRate""customerChurnRate12m""lifetimeInMonths""lifetimeValue""netRevenueRetention""grossRevenueRetention""netRevenueRetentionMonthly""grossRevenueRetentionMonthly""mrrGrowthRate""mrrGrowthRateAnnual""ruleOf40""netBurn""grossBurn""runway""burnMultiple"month*string^\d{4}-\d{2}$mrrType?stringMRR variant. cmrr = committed MRR (CMRR), mrr = recognised MRR.
"cmrr""mrr"timeZone?stringIANA time zone. Defaults to BatchContext.timeZone, then UTC.
smoothingMonths?integer1 <= value <= 121productIds?array<string>|Restrict subscription metrics to these product ids. Omit or null for all products. Values are unioned; a customer on several selected products counts once.
nullmetricExplanation result
application/json- response
metric*referencedMetrics*smoothing?curl -X POST 'https://api.saasflow.com/companies/string/data/metricExplanation' \ -H 'Content-Type: application/json' \ -d '{ "metricName": "mrr", "month": "string"}'{ "metric": { "metricName": "mrr", "month": "string", "value": 0, "formulaValue": 0, "diverges": true, "divergence": { "code": "runwayCashDepleted", "message": "string" }, "annotatedFormula": { "kind": "metric", "name": "mrr", "monthOffset": 0, "month": "string", "value": 0 }, "definition": { "title": "string", "subTitle": "string", "format": "number", "category": "Recurring revenue", "description": "string", "formula": { "kind": "metric", "name": "mrr", "monthOffset": 0 }, "notes": [ "string" ], "requires": "string" } }, "referencedMetrics": { "property1": { "metricName": "mrr", "month": "string", "value": 0, "formulaValue": 0, "diverges": true, "divergence": { "code": "runwayCashDepleted", "message": "string" }, "annotatedFormula": { "kind": "metric", "name": "mrr", "monthOffset": 0, "month": "string", "value": 0 }, "definition": { "title": "string", "subTitle": "string", "format": "number", "category": "Recurring revenue", "description": "string", "formula": { "kind": "metric", "name": "mrr", "monthOffset": 0 }, "notes": [ "string" ], "requires": "string" } }, "property2": { "metricName": "mrr", "month": "string", "value": 0, "formulaValue": 0, "diverges": true, "divergence": { "code": "runwayCashDepleted", "message": "string" }, "annotatedFormula": { "kind": "metric", "name": "mrr", "monthOffset": 0, "month": "string", "value": 0 }, "definition": { "title": "string", "subTitle": "string", "format": "number", "category": "Recurring revenue", "description": "string", "formula": { "kind": "metric", "name": "mrr", "monthOffset": 0 }, "notes": [ "string" ], "requires": "string" } } }, "smoothing": { "months": 0, "value": 0, "monthValues": [ { "month": "string", "value": 0 } ] }}MetricDefinitions
Use this when the user asks how a SaaS metric is defined or calculated (formula, inputs, windows, caps). Static definitions only; use the analytics slice…
RevenueExpenses
Use this when the user asks for revenue vs. expenses (P&L summary) for a period. Requires permissions: financials:read.