---
title: "Get Billing Entitlement"
method: GET
path: "/api/billing/entitlement"
---

# Get Billing Entitlement

`GET /api/billing/entitlement`

Fetch internal per-org entitlement state for billing/paywall decisions.

The optional ``plan_slug`` query param is sent by the frontend (derived from
Clerk's ``has({ plan })``).  When it differs from the stored plan_slug we
trigger an immediate Clerk sync so credit limits update without waiting for
the nightly job.

## Query parameters

- `plan_slug` string, nullable
- `fresh` boolean
- `user_id` string
- `org_id` string

## Response `200`

Successful Response

- EntitlementResponse — Internal billing entitlement payload for frontend gating.
  - `user_id` string, required
  - `org_id` string, required
  - `subscription_status` string, required
  - `is_paid_org` boolean, required
  - `is_paying_org` boolean, required
  - `low_balance_threshold_usd` number
  - `auto_recharge_enabled` boolean
  - `auto_recharge_amount_usd` number
  - `monthly_credit_limit` integer, required
  - `monthly_credits_used` integer, required
  - `monthly_credits_remaining` integer, required
  - `monthly_credits_exhausted` boolean, required
  - `monthly_period_start` string, nullable
  - `monthly_period_end` string, nullable
  - `monthly_exhausted_at` string, nullable
  - `extra_credit_balance` integer
  - `total_available_credits` integer
  - `ai_usage_allowed` boolean
  - `minimum_required_credits` integer
  - `free_trial_credits` integer
  - `requires_billing_paywall` boolean, required
  - `paywall_reason` string, nullable
  - `credits_reset_at` string, nullable
  - `billing_path` string, nullable
  - `has_payment_method` boolean
  - `plan_slug` string, nullable
  - `plan_name` string, nullable
  - `server_time` string, nullable
  - `is_trialing` boolean
  - `trial_started_at` string, nullable
  - `trial_ends_at` string, nullable
  - `trial_forfeited` boolean
  - `has_ever_paid` boolean
  - `member_count` integer, nullable

## Other responses

- `422` — Validation Error

## Changes

> 23 revisions in range; 20 could not be searched.

- **2026-07-26** `13940b6986a4` — 3 info
  - added the new optional `query` request parameter `fresh`
  - added the optional property `ai_usage_allowed` to the response with the `200` status
  - added the optional property `minimum_required_credits` to the response with the `200` status

[Change history](https://skmtc.dev/every/apis/every-api/changes/api/billing/entitlement/get.md)

---

[API](https://skmtc.dev/every/apis/every-api.md) · [All operations](https://skmtc.dev/every/apis/every-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/every/every-api/revisions/88bb31b8dace/schema)
