---
title: "Get Subscription Active"
method: GET
path: "/api/billing/subscription/active"
tags: ["billing"]
---

# Get Subscription Active

`GET /api/billing/subscription/active`

## Request

- Base URL: `https://api.civilquants.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.civilquants.com/api/billing/subscription/active`
- Auth: none declared

Answer "does this signed-in user have ANY active subscription?".

The web subscriber-unlock signal: catalogue + calculator pages poll
this on load (no `session_id` in hand, unlike `/subscription/status`)
to drive `useSubscriptionActive()` → unlock paid cards / workspace.

Auth: Clerk JWT only. API tokens / pass_holders are rejected at 401 —
pass-holders already have the `cqp_`-token web path (`usePassActive()`);
this endpoint is specifically the subscriber signal. The response is a
bare boolean (no tier / IDs / email) to avoid enumeration. Entitlement
is keyed on the actor's `user_id` OR `org_id`, so org-seat Studio /
Practice members resolve active via their organisation's subscription.

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- SubscriptionActiveResponse
  - `active` boolean, required

## Other responses

- `422`: Validation Error

---

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