---
title: "Check API usage"
method: GET
path: "/v1/usage"
tags: ["Account"]
---

# Check API usage

`GET /v1/usage`

## Request

- Base URL: `https://api.puntersedge.online`
- URL: `https://api.puntersedge.online/v1/usage`
- Auth: API key in header `X-API-Key`

Free — 0 credits deducted. Everything you need to decide about your plan BEFORE the
API refuses you: spend by endpoint, burn rate, the date you are projected to run out, and
the tier that would clear it (with a headless checkout you can POST).

Two windows, and every field says which one it is in its name:

* ALL TIME — `usage_by_endpoint`, `recent_activity`, `all_time`, `all_time_by_endpoint`.
  Every call this key has ever made. This is the original meaning of `usage_by_endpoint`
  and `recent_activity` and it has not changed. Because it spans every billing period the
  key has lived through, it will normally be LARGER than `credits_used` — that is not a
  discrepancy, the two are measuring different things.
* CURRENT BILLING PERIOD — `usage_by_endpoint_period`, `recent_activity_period`, plus
  `credits_used` / `credits_remaining` / `period_start` / `next_reset_at`. The credits in
  `usage_by_endpoint_period` sum to `credits_used`. Use these to reconcile a bill.

`all_time_by_endpoint` is an exact alias of `usage_by_endpoint`, kept because it shipped.
Nothing in the all-time pair changed on 2026-08-18; if you saw those two numbers step down
earlier that day, this restored them.

## Query parameters

- `format` string: `csv` returns the per-endpoint breakdown as a spreadsheet instead of the JSON document. Same rows, same numbers, no row cap. Free, like the JSON.

## Headers

- `X-API-Key` string
- `X-RapidAPI-Proxy-Secret` string

## Response `200`

Successful Response

- UsageOut
  - `plan` string, required
  - `account_email_masked` string, nullable
  - `password_set` boolean, nullable
  - `billing_attached` boolean, nullable
  - `credits_used` integer, required
  - `credits_limit` integer, required
  - `credits_remaining` integer, required
  - `reset_at` string, nullable, required: When this key's credit counter was LAST set to zero, in UTC, written without an offset (read it as ending in Z). Despite the name this is the start of the current period, not the next reset; it equals period_start, which is the clearer field to use.
  - `period_start` string, nullable: Start of the current credit period, in UTC, written without an offset (read it as ending in Z). For a key created part-way through a month this is the moment the key was created; after that it is the monthly reset.
  - `next_reset_at` string, nullable: 00:00 UTC on the 1st of next month, written without an offset (read it as ending in Z). Calculated, not stored: the reset job starts at that time and finishes a few seconds later, so a request in the first seconds of a month can still count against the old period.
  - `burn_rate_per_day` number
  - `projected_month_end_credits` integer
  - `projected_exhaustion_date` string, nullable
  - `warning` string, nullable
  - `upgrade` object, nullable
  - `all_time` object
  - `all_time_by_endpoint` object[]
  - `usage_by_endpoint` object[]
  - `recent_activity` object[]
  - `usage_by_endpoint_period` object[]
  - `recent_activity_period` object[]
  - `pool` object, nullable
  - `overage` object
  - `credits_remaining_with_overage` integer
  - `plans` object

## Other responses

- `401`: Missing or invalid API key. Send `X-API-Key`. See https://puntersedge.online/developers/errors
- `402`: Monthly credit allowance exhausted for this plan. Upgrade at https://puntersedge.online/api/pricing
- `422`: Validation Error
- `429`: Rate limit exceeded for this plan. Honour the `Retry-After` header (seconds) before retrying. See https://puntersedge.online/developers/rate-limits
- `500`: Unexpected server error. Safe to retry with backoff.

---

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