Usage
Monitor subscription quota, one-time pack, and credits in real time.
The Usage endpoint returns your remaining subscription quota, one-time pack, credits, rate limits, and API key details. It does not consume any credits.
Note: the subscription object reports the combined subscription quota plus remaining packs, not the subscription portion alone. The dashboard API usage panel shows the three balances separately.
This endpoint is free. It never consumes any credits.
Request
curl "https://api.huntapi.com/v1/usage" \
-H "x-api-key: YOUR_API_KEY"The three balances
Every call draws from up to three balances, always in this order. The response reports each one separately so you can tell where your credits come from.
- Subscription quota (
subscription): calls included in the plan. Resets each billing period (period,renewal_date). - One-time pack (
packs): one-time API packs, never reset, consumed in purchase order after subscription quota.packs.currentis the pack being drawn from now. On accounts without a monthly plan,subscriptionreports the sum of all packs. - Credits (
credits): used only after subscription quota and the one-time pack are exhausted. Billed separately.
remaining is the total still available across all three balances, and total_used the total consumed. When remaining reaches 0, calls return 402 until a pack or credits are added.
Response Fields
| Field | Type | Description |
|---|---|---|
remaining | integer | Total still available across all three balances (subscription quota + one-time pack + credits) |
total_used | integer | Total consumed across all three balances (pack usage persists across billing periods) |
renewal_date | string | Date when the subscription renews (ISO 8601) |
period.start | string | Start of the current billing period |
period.end | string | End of the current billing period |
subscription.used | integer | API calls used against combined subscription quota + packs |
subscription.total | integer | Combined cap (subscription quota + packs) |
subscription.remaining | integer | Remaining combined subscription quota + packs |
subscription.percent_used | number | Percentage of combined subscription quota + packs consumed |
credits.given | integer | Credits granted (separate ledger) |
credits.consumed | integer | Credits consumed |
credits.remaining | integer | Credits remaining |
rate_limit.per_minute | integer | null | Requests per minute limit (null = unlimited) |
rate_limit.per_second | integer | null | Requests per second limit (null = unlimited) |
account.name | string | Name of the account |
account.slug | string | Account identifier slug |
api_key.alias | string | Friendly name of the API key |
api_key.active | boolean | Whether the key is currently active |
api_key.category | string | Key category (e.g. development, production) |
api_key.expires | string | null | Expiry date of the key (null = never expires) |
api_key.quotas | object | Custom per-key quotas: total, daily, weekly, monthly |
packs | object | null | One-time API packs, pack by pack (null when the account has none). For pack-only accounts, subscription.total is the sum of all packs |
packs.count | integer | Number of active packs |
packs.exhausted_count | integer | Number of packs fully consumed |
packs.total | integer | Credits granted by all active packs |
packs.used | integer | Credits consumed across all packs |
packs.remaining | integer | Credits left across all packs |
packs.current | object | null | The pack currently being consumed (packs are used in purchase order); null when every pack is exhausted |
packs.items[] | object[] | Every active pack: id, title, purchased_at, total, used, remaining, percent_used, exhausted |
Example Response
{
"remaining": 450,
"total_used": 1550,
"renewal_date": "2026-04-25",
"period": {
"start": "2026-03-25",
"end": "2026-04-25"
},
"subscription": {
"used": 1550,
"total": 2000,
"remaining": 450,
"percent_used": 77
},
"packs": {
"count": 2,
"exhausted_count": 1,
"all_exhausted": false,
"total": 25000000,
"used": 15200000,
"remaining": 9800000,
"percent_used": 60.8,
"current_index": 2,
"current": {
"id": "cm…",
"title": "Ultimate",
"purchased_at": "2026-02-07",
"total": 12500000,
"used": 2700000,
"remaining": 9800000,
"percent_used": 21.6,
"exhausted": false
},
"items": [
{ "id": "cm…", "title": "Ultimate", "purchased_at": "2025-11-10", "total": 12500000, "used": 12500000, "remaining": 0, "percent_used": 100, "exhausted": true },
{ "id": "cm…", "title": "Ultimate", "purchased_at": "2026-02-07", "total": 12500000, "used": 2700000, "remaining": 9800000, "percent_used": 21.6, "exhausted": false }
]
},
"credits": {
"given": 0,
"consumed": 0,
"remaining": 0,
"percent_used": 0
},
"rate_limit": {
"per_minute": null,
"per_second": null
},
"account": {
"name": "Acme Corp",
"slug": "acme-corp"
},
"api_key": {
"alias": "production",
"active": true,
"category": "production",
"expires": null,
"quotas": {
"total": null,
"daily": null,
"weekly": null,
"monthly": null
}
}
}See also: Stats for platform infrastructure health over the last hour. That endpoint is not your account usage.