Read the month's usage
Every meter's usage in a calendar month (UTC), in the caller's mode, against its quota. Counts add up over the month; a level (products tracked) is its highest reading. Quotas cap live mode only: at 80% the organisation receives usage.threshold_reached, and at 100% the metered action answers 429 quota_exceeded until the month ends. API calls are counted as they happen and may lag by a few seconds.
- Scopes
usage:read - Rate classread
/v1/usageEvery meter's usage in a calendar month (UTC), in the caller's mode, against its quota. Counts add up over the month; a level (products tracked) is its highest reading. Quotas cap live mode only: at 80% the organisation receives usage.threshold_reached, and at 100% the metered action answers 429 quota_exceeded until the month ends. API calls are counted as they happen and may lag by a few seconds.
Authorization
apiKey An API key (fo_live_… / fo_test_…) as a bearer token
In: header
Query Parameters
Defaults to the current month
^\d{4}-(0[1-9]|1[0-2])$Header Parameters
Dated API version; pinned per organisation on first use and overridable per request
Value in
- "2026-10-01"
- "2026-10-04"
The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused
Value in
- "live"
- "test"
ETag of a cached representation; a match returns 304
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/v1/usage"{ "object": "usage", "month": "string", "livemode": true, "meters": [ { "meter": "api_calls", "kind": "count", "used": 0, "quota": 0, "status": "ok" } ]}Read one meter over time GET
One meter by hour (up to 7 days) or by day (up to 400 days), in the caller's mode; periods without usage are left out. A level meter's point is its highest reading in the period.
Cancel a scheduled plan change POST
Drops the change waiting for the end of the term (`subscription.scheduled_change`); the subscription goes on as it is. While billing is switched off, it answers 409 `conflict`. Without a scheduled change, 409.