Server fleet with filters and presence
const url = 'https://api.flotera.com/api/v1/servers?limit=50&presence=online';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/servers?limit=50&presence=online' \ --cookie __Host-erm_session=<__Host-erm_session>Paginated view over the versioned fleet snapshot (dash:v1:{tenant}:servers:{filter_hash}, 60 s). Presence comes from the presence read model, vitals from latest telemetry.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Opaque pagination cursor from a previous next_cursor.
Page size.
Presence read model over the agent’s WebSocket session (the channel commands travel on): suspect after 60 s without a heartbeat, offline after 300 s. HTTPS-only liveness (agent hello) never makes a server online.
UUID (v7 for new entities; v4 accepted during migration).
Exact tag match (key or key:value).
Substring match on server name/hostname.
Header Parameters
Section titled “Header Parameters”Return 304 Not Modified when the entity tag still matches.
Responses
Section titled “Responses”Page of servers over a consistent snapshot.
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.
One fleet-list row (config + presence + latest vitals).
object
UUID (v7 for new entities; v4 accepted during migration).
Null until an agent registers on the server.
Historical field. The server FSM it was meant to carry has no writer anywhere in the system, so this is always new; read maintenance for what the owner declared, and the marketplace link for a rental or a listing. Kept in the response so existing clients do not break.
The owner’s declaration that the machine is out of service. Absent on a machine in service — a machine is not «not under maintenance», it just works, and an object of nulls would say otherwise.
object
When it was declared; repeating the declaration keeps it.
Presence read model over the agent’s WebSocket session (the channel commands travel on): suspect after 60 s without a heartbeat, offline after 300 s. HTTPS-only liveness (agent hello) never makes a server online.
Active marketplace assignment; null when unassigned.
Decimal string or null when unknown.
Last WebSocket heartbeat of the agent session — the same source presence is derived from, so the two never disagree. Null until the command channel comes up at least once; an agent that only reaches the core over HTTPS (hello) does not move this field.
Decimal value serialized as a string, never a JSON number.
Average GPU utilization percentage over the server’s GPUs.
key or key:value tags; empty until any tag is set.
One per-GPU vitals sample for the fleet Temp/Fan bars, ordered by GPU index.
object
Opaque cursor for the next page; null when there are no more rows.
Example
{ "generated_at": "2026-07-25T10:15:30.123456Z", "data_as_of": "2026-07-25T10:15:30.123456Z", "items": [ { "presence": "online", "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"}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"}