SaaSFlow
DevelopersAPIReferencedata

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

Checking whether you're signed in…
POST
/companies/{companyId}/data/metricExplanation

Authorization

headerAuthorization<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.

Path Parameters

companyId*string
Length1 <= length

Request Body

application/json
  1. body
metricName*string
Value in"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
Match^\d{4}-\d{2}$
mrrType?string

MRR variant. cmrr = committed MRR (CMRR), mrr = recognised MRR.

Value in"cmrr""mrr"
timeZone?string

IANA time zone. Defaults to BatchContext.timeZone, then UTC.

smoothingMonths?integer
Range1 <= value <= 12
Default1
productIds?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.

Defaultnull

Response Body

metricExplanation result

application/json
  1. response
metric*
referencedMetrics*
smoothing?
Example Request
curl -X POST 'https://api.saasflow.com/companies/string/data/metricExplanation' \  -H 'Content-Type: application/json' \  -d '{  "metricName": "mrr",  "month": "string"}'
Example Response
{  "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      }    ]  }}