Skip to main content
GET
Error

Authorizations

Authorization
string
header
required

A staff session token, uk_st_…. Minted by sign-up, sign-in or the two-factor exchange. Only a 401 means it is spent; not_a_member (403) is about the organization named in X-Organization-Id and leaves the token good for the others.

Headers

X-Organization-Id
string

The organization the caller is acting on — the org_… code that appears in the panel URL. It identifies; the membership JOIN is what authorizes, so a forged code reads nothing: the answer is not_a_member (403), which does not mean the session is over. Absent, the session's default organization answers, or — if that membership was revoked while the session was open — any other one the caller still holds.

Query Parameters

environment
enum<string>
default:live

Which environment to act in. A view parameter, valid only on the staff surface — a machine credential never chooses its environment, it is resolved from the key.

Available options:
live,
test
from
string<date-time>

Oldest cohort week to include, compared against the week's Monday. Default: 9 weeks ago, which is what covers the 8 cohort weeks the rollup keeps.

to
string<date-time>

Newest cohort week to include. Default: now.

Response

The matrix, oldest cohort first, each cohort's weeks in offset order.

cohorts
object[]
status
enum<string>

What an empty cohorts means. ready whenever it is not empty.

Available options:
ready,
pending,
empty
range
object

The window the read actually answered over, and what the plan did to it.

Every analytics read carries one. analytics_retention is a plan LIMIT and never a gate: asking for a year on a plan that keeps a month answers 200 over the month, with clamped true and from moved forward to the horizon — there is no 402 anywhere in this module.

Unlike the staff audit window, which only filters a read, this horizon is also enforced in storage: a nightly sweep deletes analytics past each organization's retention. So data beyond from is not merely hidden, and an upgrade recovers the horizon rather than the history.

from
string<date-time>
to
string<date-time>