One day's full per-server detail as CSV
const url = 'https://api.flotera.com/api/v1/billing/usage/days/export?day=2026-04-15';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/usage/days/export?day=2026-04-15' \ --cookie __Host-erm_session=<__Host-erm_session>Every server that reported on one closed UTC day, one CSV row each, with the frozen evidence the billable decision was taken from (14 §2.4) and the server’s share of the charge. This is the download behind the day breakdown: the on-screen response carries a summary and exception rows only, while the full roster — thousands of lines on a large fleet — belongs in a file, not a table. CSV deliberately: it is data for a spreadsheet; the ledger stays the only money document.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”UTC calendar day.
The UTC day to export (422 when missing).
Responses
Section titled “Responses”CSV attachment (flotera-usage-{day}.csv). Columns: server, server_id, billable, criteria (space-separated), telemetry_batches, connected_seconds, billable_window_seconds, registration_accepted, first_inventory_accepted, amount_usd (empty when not billable).
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"}Resource does not exist in this tenant. Foreign identifiers also return 404 (anti-enumeration).
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"}