---
title: "Get My Usage"
method: GET
path: "/v1/me/usage"
tags: ["me"]
---

# Get My Usage

`GET /v1/me/usage`

## Request

- Base URL: `https://api.ctindex.io`
- URL: `https://api.ctindex.io/v1/me/usage`
- Auth: none declared

Aggregate usage analytics for the portal Usage page (task #107).

Reads from the ``usage_events`` table populated by the v1 sub-app
middleware (see ``api/usage_recording.py``). The dashboard shows
request volume stacked by status-code class, top routes with p50/p95
latency, by-key splits, and rate-limit events for the selected
calendar month (UTC-aligned).

## Query parameters

- `period` string, nullable
- `route` string, nullable

## Cookies

- `ctix_session` string, nullable

## Response `200`

Successful Response

- UsageAnalyticsResponse: Response shape for ``GET /v1/me/usage?period=<period>`` (task #107).
  - `period` UsageAnalyticsPeriod, required: Echoed metadata for the resolved period.
    - `period` string, required
    - `label` string, required
    - `starts_at` string, date-time, required
    - `ends_at` string, date-time, required
    - `is_current` boolean
  - `totals` UsageAnalyticsTotals, required: Header numbers row for the Usage page.
    - `requests` integer
    - `errors` integer
    - `p95_ms` integer, nullable
    - `active_keys` integer
  - `quota` UsageAnalyticsQuota, required: Quota meter for the selected period. ``used / limit`` drives the colour band: brand teal up to 80%, amber 80–100%, red >100%. ``limit`` is ``None`` on unlimited tiers — the page renders an "Unlimited" pill instead of a bar in that case. ``metered`` is true on metered-overage tiers (Scale/Enterprise): the ``limit`` is an included allotment, not a ceiling — requests past it are never blocked, they're billed as overage. ``hard_cap`` is ``None`` in that case and the portal renders overage copy instead of the hard-cap footnote.
    - `used` integer
    - `limit` integer, nullable
    - `hard_cap` integer, nullable
    - `metered` boolean
  - `series` UsageAnalyticsDay[], required
    - `date` string, required
    - `requests_2xx` integer
    - `requests_4xx` integer
    - `requests_5xx` integer
    - `total` integer
  - `top_routes` UsageAnalyticsRoute[], required
    - `route_template` string, required
    - `method` string, nullable
    - `requests` integer
    - `p50_ms` integer, nullable
    - `p95_ms` integer, nullable
    - `error_pct` number
  - `by_key` UsageAnalyticsKey[], required
    - `id` string, uuid, required
    - `label` string, nullable
    - `last4` string, nullable
    - `requests` integer
    - `share_pct` number
    - `last_used_at` string, date-time, nullable
  - `rate_limit_events` UsageAnalyticsRateLimitEvent[], required
    - `occurred_at` string, date-time, required
    - `reason` string, required
    - `count` integer

## Other responses

- `422`: Validation Error

---

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