What the engine suggested and what became of it
const url = 'https://api.flotera.com/api/v1/strategy/decisions?status=suggested';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/strategy/decisions?status=suggested' \ --cookie __Host-erm_session=<__Host-erm_session>Newest first. Each entry carries the price before and after, the market point it aimed at, and a snapshot of the market it was computed from — a week later the market is different, and the decision still has to be explainable by what was visible then.
The engine only ever SUGGESTS. Nothing is sent to a marketplace on its own: the path from a computed price to a real machine cannot be verified until an agent runs on one.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Responses
Section titled “Responses”Decision feed.
object
object
UUID (v7 for new entities; v4 accepted during migration).
UUID (v7 for new entities; v4 accepted during migration).
Supported marketplace. The database constrains the same two values, so a third one is a migration rather than a new string.
Price before. Null means it was unknown — which is not the same as zero: unknown makes any target a change, zero would mean the server was being given away.
Decimal value serialized as a string, never a JSON number.
Which point of the market the target price was derived from.
The market as it looked when this was computed.
object
RFC 3339 UTC with microsecond precision.
RFC 3339 UTC with microsecond precision, or null.
Example
{ "decisions": [ { "marketplace": "vast", "status": "suggested", "target_usd_per_gpu_hour": "12.340000", "anchor": "undercut_p25", "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"}A dependency the endpoint needs is not configured or is temporarily unavailable (code=unavailable). The rest of the API keeps working — an absent external integration must not take the service down.
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"}