---
title: "Get plan usage and limits"
method: GET
path: "/users/me/usage"
tags: ["users"]
---

# Get plan usage and limits

`GET /users/me/usage`

## Request

- Base URL: `https://api.sytecheck.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sytecheck.app/users/me/usage`
- Auth: HTTP bearer

Return the plan's limits and consumption so far: scans used and remaining this
calendar month, when the quota resets, which categories are available, and any
one-off scan credits.

Quota runs on the calendar month in UTC and does not roll over.

## Response `200`

Successful Response

- PlanUsageResponse: The caller's plan entitlements and their usage against them (Phase 11 B3). Exists because the limits were previously invisible: a user only discovered the monthly cap by being 429'd. The SPA reads this to show remaining scans, label the categories a plan withholds, and decide whether to offer an upgrade prompt.
  - `tier` string, required: Billing tier: "free", "pro", or "agency".
  - `plan_name` string, required: Display name of the plan, e.g. "Pro".
  - `scans_used` integer, required: Scans created in the current calendar month (UTC).
  - `scans_limit` integer, required: Scans the plan permits per calendar month.
  - `scans_remaining` integer, required: Scans left before the monthly cap is reached.
  - `period_start` string, date-time, required: First instant of the current quota month (UTC).
  - `period_end` string, date-time, required: When the quota resets (UTC).
  - `categories` string[], required: Analysis categories this plan may run.
  - `pdf_export` boolean, required: Whether PDF report download is included.
  - `public_api` boolean, required: Whether API keys may be minted and used.
  - `webhooks` boolean, required: Whether a scan may request webhook delivery.
  - `retention_days` integer, required: How long completed scans are kept.
  - `concurrent_scans` integer, required: Maximum simultaneously running scans.
  - `scan_credits` integer: Unspent one-off scan credits. Each buys a single all-category scan outside the monthly quota, and is only spent on explicit request.
  - `retention_grace_until` string, date-time, nullable: When the extended retention granted after a plan downgrade ends. Until then scans are kept as though the account were still on its previous plan; after it, `retention_days` applies and older scans may be permanently deleted. Null when no grace period is running.
  - `one_off_offer_price_usd` string, nullable: A one-time reduced price for the one-off scan, applied automatically at checkout until `one_off_offer_expires_at`. Null when there is no offer.
  - `one_off_offer_expires_at` string, date-time, nullable: When the one-time one-off scan price ends.

---

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