---
title: "Weekly signup and paid cohorts, in the request's timezone."
method: GET
path: "/api/v1/admin/metrics/retention"
tags: ["Metrics Admin"]
---

# Weekly signup and paid cohorts, in the request's timezone.

`GET /api/v1/admin/metrics/retention`

## Request

- Base URL: `https://api.avatarfactory.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.avatarfactory.io/api/v1/admin/metrics/retention`
- Auth: one of:
  - API key in cookie `session`
  - HTTP bearer

## Query parameters

- `tz` string, nullable
- `include_internal` '0' | '1', nullable
- `from` string, date, nullable
- `to` string, date, nullable
- `filters` string, nullable
- `granularity` 'day' | 'week' | 'month'
- `compare` 'previous' | 'yoy' | 'none'

## Response `200`

OK

- RetentionResponse
  - `cohorts` Cohort[], required
    - `cohort_size` integer, required
    - `cohort_week` string, date, required
    - `weeks` CohortWeek[], required
      - `active_pct` number, nullable, required
      - `active_users` integer, required
      - `activity_week` string, date, required
      - `cumulative_revenue_cents` integer, required
      - `paid_share_of_cohort_pct` number, nullable, required
      - `paid_users` integer, required
      - `revenue_cents` integer, required
      - `week_offset` integer, required
  - `compare` 'previous' | 'yoy' | 'none', required
  - `compare_from` string, date, nullable, required
  - `compare_to` string, date, nullable, required
  - `currency` 'USD'
  - `env` 'production' | 'staging' | 'local' | 'test', required
  - `estimated_before` string, date, nullable
  - `filters` FilterEcho[]
    - `dimension` string, required
    - `op` 'is' | 'not', required
    - `values` string[], required
  - `freshness` FreshnessSummary, required
    - `is_mrr_carried` boolean, required
    - `is_stale` boolean, required
    - `last_success_at` string, date-time, nullable, required
    - `subscription_state_day` string, date, nullable, required
  - `from` string, date, required
  - `granularity` 'day' | 'week' | 'month', required
  - `max_week_offset` integer, required
  - `meta` ResponseMeta, required: The zone the answer's dates are in (ruling 11). tz_applied is false where the data is UTC by nature (/freshness, /exports).
    - `tz` string, required
    - `tz_applied` boolean
  - `notes` string[]
  - `paid_cohorts` PaidCohort[], required
    - `cohort_week` string, date, required
    - `payers` integer, required
    - `weeks` PaidCohortWeek[], required
      - `activity_week` string, date, required
      - `paid_pct` number, nullable, required
      - `still_paying` integer, required
      - `week_offset` integer, required
  - `to` string, date, required

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `422`: Unprocessable Entity
- `503`: Service Unavailable

---

[API](https://skmtc.dev/avatarfactory/apis/avatarfactory-api.md) · [All operations](https://skmtc.dev/avatarfactory/apis/avatarfactory-api/llms.txt) · [OpenAPI document](https://skmtc.dev/avatarfactory/apis/avatarfactory-api/revisions/66fc7aa3f296?raw)
