Immutable ledger entries
const url = 'https://api.flotera.com/api/v1/billing/ledger?limit=50&kind=charge&range=today&from=2026-07-25T10%3A15%3A30.123456Z&to=2026-07-25T10%3A15%3A30.123456Z';const options = { method: 'GET', headers: {cookie: '__Host-erm_session=<__Host-erm_session>'}};
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.flotera.com/api/v1/billing/ledger?limit=50&kind=charge&range=today&from=2026-07-25T10%3A15%3A30.123456Z&to=2026-07-25T10%3A15%3A30.123456Z' \ --cookie __Host-erm_session=<__Host-erm_session>Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Opaque pagination cursor from a previous next_cursor.
Page size.
charge — hourly usage; topup — payments, including their reversals (negative amount); adjustment — manual credits and debits. topup is exactly the set excluded from spent_mtd_usd, so the tile equals minus the sum of the non-topup rows of the same period.
Named consumption period, expanded server-side in the tenant timezone by the same code that produces the billing tiles.
Named consumption period, expanded server-side in the tenant timezone. Mutually exclusive with from/to (422 otherwise). Prefer it over client-computed bounds: the sum of the returned charge/adjustment rows then equals the matching GET /billing tile by construction.
RFC 3339 UTC with microsecond precision.
Half-open interval start [from, to) on occurred_at (the consumed period), the same anchor the tiles aggregate by.
RFC 3339 UTC with microsecond precision.
Half-open interval end [from, to) on occurred_at.
Responses
Section titled “Responses”Page of ledger entries, newest first.
object
Immutable ledger entry; amounts are negative for charges, positive for top-ups.
object
UUID (v7 for new entities; v4 accepted during migration).
UUID (v7 for new entities; v4 accepted during migration).
charge — hourly usage; topup — payments, including their reversals (negative amount); adjustment — manual credits and debits. topup is exactly the set excluded from spent_mtd_usd, so the tile equals minus the sum of the non-topup rows of the same period.
Decimal value serialized as a string, never a JSON number.
Decimal value serialized as a string, never a JSON number.
When the entry was consumed: start of the billed hour for hourly charges, effective_at otherwise. Rows are filtered, sorted and paginated by this instant and it is what the UI must display — created_at is the bookkeeping moment and runs ~1h15m later.
Start of the billed UTC hour [H, H+1) for hourly charges; null otherwise.
RFC 3339 UTC with microsecond precision.
Opaque cursor for the next page; null when there are no more rows.
Example
{ "items": [ { "kind": "charge", "amount_usd": "12.340000", "balance_after_usd": "12.340000", "occurred_at": "2026-07-25T10:15:30.123456Z", "created_at": "2026-07-25T10:15:30.123456Z" } ]}Missing/invalid credentials (code=unauthorized).
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}Authenticated but not permitted. code=forbidden — role/scope mismatch; code=feature_not_entitled — the plan does not include the capability; code=account_frozen — the account is frozen and this operation is declared x-ermeon-frozen: deny. The three are deliberately distinct: only the last one is fixed by a top-up (13 §5.6).
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}Request failed validation (code=validation_failed), with per-field errors.
RFC 9457 problem document with a stable machine code.
object
Stable machine-readable error code (03 §2.4).
UUID (v7 for new entities; v4 accepted during migration).
object
JSON Pointer to the offending field.
Example
{ "type": "https://ermeon.com/problems/validation", "code": "unauthorized"}