PilotFoxDocs

Get the retention report

GET
/api/v1/sites/{siteId}/retention

Cohorts of new users by their first active day, week or month (unit) in the window, and the share of each cohort active again 0, 1, 2… periods later. Needs a bounded window (400 for all=true).

Requires analytics:read on the site (an API key, or a signed-in member's role). Share links: allowed, with the analytics:read scope. Public sites: open to everyone, no credential needed.

Authorization

headerx-api-key<token>

An organization API key (ak_…), with the permissions and the sites it was created with. For servers and scripts: no cookie and no Origin check. Also accepted as Authorization: Bearer ak_… (apiKeyBearer). A request carries one credential: a key sent with a share token or a live session cookie is 400 (details.reason: ambiguous_credentials).

Scope: analytics:read

Path Parameters

siteId*string

Query Parameters

start?string
end?string
last?string
all?"true"
Value in"true"
tz?string
bucket?string
Value in"minute""5m""15m""hour""day""week""month""year"
filters?string
Lengthlength <= 64000
segment?string
Match^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Formatuuid
unit?string
Default"week"
Value in"day""week""month"
periods?integer

Offset columns; default one per cohort

Range1 <= value <= 9007199254740991
lookback_days?integer

Users seen this long before the window are not new

Range0 <= value <= 365
Default90

Response Body

OK

application/json
  1. response
data*
meta*
Example Request
curl -X GET 'https://pilotfox.app/api/v1/sites/string/retention'
Example Response200
{  "data": {    "unit": "day",    "periods": 0,    "partialFirst": true,    "partialLast": true,    "cohorts": [      {        "start": "string",        "size": 0,        "counts": [          0        ],        "rates": [          0        ]      }    ]  },  "meta": {    "window": {      "from": "string",      "to": "string",      "tz": "string",      "bucket": "minute"    },    "compare": {      "from": "string",      "to": "string"    },    "totalCount": -9007199254740991,    "nextCursor": "string",    "truncated": true,    "cache": "hit"  }}