---
title: "Admin Stats Clients"
method: GET
path: "/api/v1/admin/stats/clients"
tags: ["admin"]
---

# Admin Stats Clients

`GET /api/v1/admin/stats/clients`

## Request

- Base URL: `https://api.nudgelink.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.nudgelink.co/api/v1/admin/stats/clients`
- Auth: HTTP bearer

Per-client revenue vs AI cost vs comped credits → gross margin, over the
window. Sorted server-side (default: margin desc). Two grouped scans
(BillingEvent, AIUsageLog) joined in memory — no per-client N+1.

## Query parameters

- `days` integer
- `sort` 'margin' | 'revenue' | 'ai_cost'
- `limit` integer

## Response `200`

Successful Response

- ClientEconomicsRow[]
  - `client_id` string, uuid, required
  - `email` string, required
  - `company_name` string, required
  - `subscription_plan` string, nullable, required
  - `revenue_usd` number, required
  - `refunds_usd` number, required
  - `ai_cost_usd` number, required
  - `comped_credits` integer, required
  - `gross_margin_usd` number, required
  - `margin_pct` number, required

## Other responses

- `422`: Validation Error

---

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