SaaSFlow
DevelopersAPIReferencedata

Benchmarks

Use this when the user asks how the company compares with SaaS peers: growth, retention, churn, gross margin, Rule of 40, CAC payback and burn multiple…

Authentication

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

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
metricNames?array<>

Metrics to compare. Omit for every metric with a peer band.

Items1 <= items
month?string

Compare the latest value up to this month (YYYY-MM). Defaults to the last complete month.

Match^\d{4}-\d{2}$
mrrType?string

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

Default"cmrr"
Value in"cmrr""mrr"
arrStage?string

Compare against this ARR stage instead of the company's own.

Value in"lt1m""from1to3m""from3to10m""from10to20m""gte20m"
acvSegment?string

Compare against this ACV segment instead of the company's own.

Value in"mice""rabbits""deer""elephants"
timeZone?string

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

Response Body

benchmarks result

application/json
  1. response
asOfMonth*string
autoCell*|

The company's own peer group from its committed ARR and paying customers. Null until both are known.

peerCell*

The peer group compared against: overrides first, then the auto cell.

metrics*array<>
Example Request
curl -X POST 'https://api.saasflow.com/companies/string/data/benchmarks' \  -H 'Content-Type: application/json' \  -d '{}'
Example Response
{  "asOfMonth": "string",  "autoCell": {    "arrStage": "lt1m",    "acvSegment": "mice"  },  "peerCell": {    "arrStage": "lt1m",    "acvSegment": "mice"  },  "metrics": [    {      "metric": "mrrGrowthRateAnnual",      "value": 0,      "valueMonth": "string",      "bands": {        "lower": 0,        "median": 0,        "upper": 0,        "direction": "higherIsBetter",        "peerLabel": "string"      },      "zone": "green",      "covered": true,      "note": "string"    }  ]}