Per-product usage counters for one of the caller's client accounts.
const url = 'https://api.siteqwality.com/partner/accounts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/usage';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.siteqwality.com/partner/accounts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/usage \ --header 'Authorization: Bearer <token>'Resolved through exactly the path /billing/usage uses, against the
CLIENT’s account id: account_usage_periods derives the window each
product is metered in, and usage_counters_for_resolved_periods reads each
product’s counter from its own window. Nothing here may shortcut to a
single period string. A client can be anchored on a different day per
product, and reporting one period is what made the 2026-08-02 hard-stop
incident invisible for a month.
A client provisioned but not yet given an entitlement bundle has no paid packs, so every product resolves to the calendar month and only the products it has actually used carry a row.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Client account identifier
Responses
Section titled “ Responses ”The client’s per-product usage
Response for GET /partner/accounts/{id}/usage.
Deliberately carries NO top-level period. /billing/usage still has one
for backwards compatibility, and it is a lie whenever an account is
anchored on a different day per product: reporting one is what made the
2026-08-02 hard-stop incident invisible for a month. A new endpoint gets to
start correct.
object
Every product, including the ones with no counter row yet, is NOT
guaranteed here: this lists the counter rows that exist, exactly as
/billing/usage does. A product a client has never used has no row.
One product’s counters for one client.
Field-for-field the shape /billing/usage returns, on purpose: a partner
reading a client’s usage here and that client reading their own usage in
the dashboard must not see two different numbers or two different units.
object
Usage in the product’s CUSTOMER-FACING unit (see unit), not the raw
tracking unit: synthetic is metered in seconds and reported in minutes.
The period THIS product is metered in.
Example generated
{ "account_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "products": [ { "product": "example", "current_usage": 1, "quota_limit": 1, "hard_stopped": true, "unit": "example", "period": "example" } ]}Missing or invalid authentication
Caller is not an admin, or the account is not in the partner program
No live client account of yours with that id
Internal server error