Where a policy would put the price
const url = 'https://api.flotera.com/api/v1/strategy/simulate';const options = { method: 'POST', headers: { cookie: '__Host-erm_session=<__Host-erm_session>', 'Content-Type': 'application/json' }, body: '{"preset":"max_profit","offset_fraction":"example","max_usd_per_gpu_hour":"example","gpu_model":"example","marketplace":"vast"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.flotera.com/api/v1/strategy/simulate \ --header 'Content-Type: application/json' \ --cookie __Host-erm_session=<__Host-erm_session> \ --data '{ "preset": "max_profit", "offset_fraction": "example", "max_usd_per_gpu_hour": "example", "gpu_model": "example", "marketplace": "vast" }'A pure what-if over the live market: nothing is written and the policy need not exist yet. Returns the engine’s own verdict — including its refusals — plus where the resulting price would land among current offers.
It deliberately returns no expected revenue or occupancy. Both would need a demand-elasticity model that neither this platform nor the marketplaces provide; a number in their place would be a promise presented as a calculation. offers_below answers the same question with something measurable.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
A FRACTION, not a percent: 0.10 means ten percent above the anchor. Range -0.9 .. 10.0. Omitted means no offset.
Price ceiling. Omitted or empty means none.
Normalised server-side, so vendor prefixes are accepted.
Responses
Section titled “Responses”The verdict and the placement.
object
The engine’s verdict. Four of the five are refusals, and they are the point: a pricing system that always has an answer is one that invents. thin_market means fewer offers than min_offers_for_pricing — a median over a handful of offers moves tens of percent when one seller leaves.
The engine’s sixth outcome, no_change, cannot occur here: it compares against a specific server’s CURRENT price, and a simulation has no server. It belongs to the decisions feed.
Decimal string. Present only when outcome is price.
Which point of the market the preset aims at.
What the preset is missing when outcome is unsupported — named explicitly, because “no suggestion” reads as “nothing to change”.
Offers with a price on this marketplace for this model.
How many of them would be strictly cheaper than the target. Counted over the offers themselves, never interpolated between quartiles — an interpolated percentile is invented precision that reads as a measurement.
The threshold below which the engine refuses to price. Returned so the panel need not keep a second copy of the constant.
Example
{ "outcome": "price", "anchor": "undercut_p25"}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"}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"}