Versioned fleet dashboard snapshot
const url = 'https://api.flotera.com/api/v1/dashboard/summary';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/dashboard/summary \ --cookie __Host-erm_session=<__Host-erm_session>Single consistent snapshot instead of several independent aggregate calls.
Served from dash:v1:{tenant}:summary (soft freshness 60 s, hard TTL
5 min + jitter) with PG/ClickHouse fallback. Billing balance shown here
is not cached with the generic dashboard TTL.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”Return 304 Not Modified when the entity tag still matches.
Responses
Section titled “Responses”Snapshot.
Consistent fleet snapshot for the dashboard (single call, 60 s refresh).
object
When this snapshot was computed.
Source watermark the snapshot is based on.
Snapshot form version (cache-shape version).
True when serving stale-while-revalidate data.
UUID (v7 for new entities; v4 accepted during migration).
What reaches the owner today: the measured gross (deal price × time) less the marketplace rates recorded in the tenant’s cost basis, deducted per marketplace and summed afterwards. A marketplace whose commission is unset is NOT deducted, and the snapshot then carries partial_reason rates_unset:
Decimal string or null when unknown.
The measurement before any deduction. gross = revenue + fees by construction.
What the marketplaces keep, derived at read time from the cost basis rather than stored in the fact. Zero means either no rentals or rates that deduct nothing — see partial_reason.
Decimal string or null when unknown.
Today after marketplace fees and electricity. Unlike net_profit_14d_usd it does NOT deduct the Ermeon tariff: the tariff is read from the billing ledger over the 14-day window only, and there is no daily figure to subtract here.
Net USD per GPU-hour over earning GPUs (the headline product metric). “Net” here is after marketplace fees only — neither electricity nor the Ermeon tariff is deducted, unlike net_profit_14d_usd.
Profit over the 14-day window after everything the system can name: marketplace fees, electricity and the Ermeon tariff.
Decimal string or null when unknown.
Decimal string or null when unknown.
Ermeon tariff charged over the same 14-day window as electricity_14d_usd. Zero is a real zero (nothing was charged — e.g. the free first server); null means the billing ledger could not be read.
The OWNER’s operating expenses over the same 14-day window — premises, connectivity, maintenance — not an Ermeon charge. The monthly amount comes from tenant settings (operational_usd_per_month) and is apportioned to the window by calendar days. Null means the owner has not entered it, which is not zero: unentered expenses are unknown, not absent. Whatever is reported here is also already subtracted from net_profit_14d_usd, so the two always agree.
Current fleet power draw, kW.
Decimal string or null when unknown.
Complete partition of the fleet by server: the buckets always sum to servers_total. Earning buckets require the server to be reachable — a machine whose agent went silent is counted as offline, never as working or idle.
object
Rented on a marketplace that is not assigned yet; still a rental.
Online but not earning — the state the $1/month idle tariff bills.
Not reporting (and not in maintenance or error); these hours are not billed.
The same partition, per GPU class, largest fleet first. Optional during rollout: snapshots written by an older projector do not carry it. Per-bucket sums across classes equal the buckets of fleet, and machines sum to servers_total — the panel relies on both.
One GPU class of the fleet with the same breakdown as fleet. A null gpu_model is the no-hardware bucket: the agent reported zero GPUs — offline means a machine that was never configured, online means the cards have vanished from the bus.
object
Complete partition of the fleet by server: the buckets always sum to servers_total. Earning buckets require the server to be reachable — a machine whose agent went silent is counted as offline, never as working or idle.
object
Rented on a marketplace that is not assigned yet; still a rental.
Online but not earning — the state the $1/month idle tariff bills.
Not reporting (and not in maintenance or error); these hours are not billed.
Draw of the class machines currently reporting, kW; absent sensors yield null.
Decimal value serialized as a string, never a JSON number.
object
Example
{ "generated_at": "2026-07-25T10:15:30.123456Z", "data_as_of": "2026-07-25T10:15:30.123456Z", "revenue_today_usd": "12.340000", "effective_rate_usd_gpu_h": "12.340000", "fleet_classes": [ { "revenue_today_usd": "12.340000" } ]}Headers
Section titled “Headers”Entity tag of the returned snapshot/resource version.
Not modified; the cached representation is still valid.
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"}