---
title: "Get Usage Summary"
method: GET
path: "/v1/compute-units/summary"
tags: ["v1", "compute-units"]
---

# Get Usage Summary

`GET /v1/compute-units/summary`

## Request

- Base URL: `https://thrustlab.com`
- URL: `https://thrustlab.com/v1/compute-units/summary`
- Auth: HTTP bearer

Owner-scoped usage meter read.

Reuses the metering primitives: ``used_in_window`` already SUMs
``abs(amount)`` = per-rotor COMPUTE units (a 4-rotor static counts 4), so the
meter inherits compute-unit accounting. The tier is resolved via
``entitlement_for`` (default-down: a forged/unknown tier → free, never
pro), never a raw dict lookup of the request-supplied tier.

resets_at is the ROLLING window's next age-out instant — the oldest in-window
debit's ``created_at`` + the window length. With no in-window debit there is
nothing pending to age out, so resets_at = now. It is NEVER ``since + window``
(which equals ``now`` for every request because ``since = now - window``).

## Response `200`

Successful Response

- CreditUsageSummaryResource: The usage meter's single owner-scoped read. ``used`` is in COMPUTE UNITS (per physical rotor) — inherited from ``metering.used_in_window`` which SUMs ``abs(amount)`` (a 4-rotor static counts 4). ``cap``/``remaining`` are None for Pro because paid usage is unlimited. ``resets_at`` is the ROLLING reporting window's next age-out instant (oldest in-window debit + window length), NEVER ``since + window`` (which always equals ``now``).
  - `cap` integer, nullable
  - `object` 'credit_usage_summary'
  - `remaining` integer, nullable
  - `resets_at` string, required
  - `tier` string, required
  - `used` integer, required
  - `window` 'day' | 'week', required

---

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