API key usage history + current quota
V2 Public API
GET /v2/me/usage
Current quota + paginated call history for the authenticated key.
GET
API key usage history + current quota
Auth: Required · Cost: Free (no quota debit) · Use case: Quota
visibility for self-service dashboards + pre-flight checks
user_api_usage, billing snapshot
from user_billing.
Use this endpoint to:
- Surface “X of Y calls remaining” inside your own admin UI.
- Detect quota exhaustion before firing a paid call (avoids a 402 round-trip).
- Audit which addresses your key has screened (CSV / SOC2 reporting).
Request
| Query param | Type | Default | Notes |
|---|---|---|---|
page | int ≥ 1 | 1 | 1-indexed page number |
limit | int 1–100 | 20 | Rows per page |
since | ISO date | — | Filter to rows with created_at >= since |
Response 200
billing object
| Field | Type | Notes |
|---|---|---|
monthly_quota | int | null | Plan-level cap. null when the user has no billing row yet (pre-onboarding state) |
used_this_month | int | null | Quota units already consumed in the current period |
remaining | int | null | max(0, monthly_quota - used_this_month) |
period_start | ISO date | null | Start of the current billing period (UTC) |
period_end | ISO date | null | Reserved for future plans with non-monthly cadences |
monthly_quota is null, the user has not been onboarded onto a
paid plan yet. Calls will return 402 until the kabinet provisions a
plan.
rows[] — usage history
Each row mirrors one entry in user_api_usage.
| Field | Type | Notes |
|---|---|---|
id | int | Monotonic per-user ID |
endpoint | string | Path called (/v2/check-address, etc.) |
address | string | null | Looked-up address. Null for non-screening endpoints |
network | string | null | BSC / ETH / TRON / … |
provider | string | null | Aegis / provider_b / provider_a / consensus. Null for free probes |
risk_level | enum | null | none / low / medium / high / critical / sanctioned |
risk_score | int 0–100 | null | Aggregated score from the provider |
quota_cost | int | Units debited for this call. 0 for free + refunded calls |
http_status | int | Wire status code (200, 402, 502, …) |
elapsed_ms | int | null | Server-side latency |
created_at | RFC 3339 | UTC timestamp |
Pagination
| Field | Type | Notes |
|---|---|---|
total | int | Total matching rows (respecting since) |
page | int | Echo of the requested page |
total_pages | int | ceil(total / limit) — always ≥ 1 |
Errors
| HTTP | code | Why |
|---|---|---|
| 401 | missing_api_key | No Authorization: Bearer … header |
| 401 | invalid_api_key | Unknown / revoked key |
| 422 | validation | page < 1 / limit out of 1–100 / non-ISO since |
Notes
- This endpoint does not debit quota — call it as often as you like.
- Best-effort write semantics on
user_api_usage: in extremely rare cases (Supabase write fails) a paid call’s row may be missing. Billing is unaffected — it’s computed fromconsume_quotaon the hot path, not from this audit table. - For programmatic billing-period detection, also check
period_startchanges — when it increments, your monthly quota has reset.
See also
- V2 API key (auth) — how to issue + rotate
- V2 introduction — quota + refund semantics
- POST /v2/screen
— the typical paid call you’ll see in
rows[]
Authorizations
Your aeg_… API key from the dashboard (Account → API tab).
Query Parameters
Required range:
x >= 1Required range:
1 <= x <= 100ISO date; only rows with created_at >= since
Response
Successful Response
The response is of type Response Me Usage Me Usage Get · object.

