/orders/{orderId}Edits a pending order: trigger price, reserved amount, slippage tolerance, or base size. The engine does this by replacing the order, so the
response carries a new order with a new identifier, while the previous one ends up as canceled_by_update.
Checked beyond the schema:
- The order must exist and still be
active, and its account must belong to the caller and be in a trading status. marketandliquidationorders cannot be edited at all, nor can astop/takeorder that was created without a trigger price (order_not_updatable); a trigger price that is set cannot be reset to0(trigger_price_reset_forbidden).- Growing the reserve of an increase order requires the difference as free balance, and is refused while the account is locked by the managed capital limit.
- An order created with
sizeMode: baseneeds a freshamountwheneverbaseSizechanges (base_size_requires_amount). - The market must be open, and the resulting order is re-checked exactly as on creation — the same field-shape, trigger-price and notional
codes listed on
POST /ordersapply here, exceptinvalid_leverage: leverage cannot be edited.
A request that sets none of the fields changes nothing and returns the order as it stands.
https://api.upscale.tradeParameters
orderIdstring · uuidrequiredIdentifier of the order to edit.
00000000-0000-4000-8000-000000000000Request body · required
4 optional fields
triggerPricestring · fp9optionalNew trigger price, fp9 raw. Bounds are re-checked against the current market price (and, for stop / take, against the liquidation price of the position). A trigger price that is already set cannot be reset to 0.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
65000000000000amountstring · fp9optionalNew amount, fp9 raw, in the unit its order class uses — see the same field on order creation. On an increase order it is the quote reserve: growing it requires the difference to be available as free balance, and it is required together with baseSize on a base-sized order. On a close order it is the base asset size of the position to close.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
100000000000expectedAmountstring · fp9optionalNew slippage tolerance, fp9 raw. See the same field on order creation.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000baseSizestring · fp9optionalNew size in base asset units, fp9 raw. Only for orders created with sizeMode: base.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000{}Examples
curl --request PATCH 'https://api.upscale.trade/orders/{orderId}' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{}'const response = await fetch("https://api.upscale.trade/orders/{orderId}", {
method: "PATCH",
headers: {
"Accept": "application/json",
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: "{}",
});
console.log(response.status, await response.text());import requests
response = requests.request(
"PATCH",
"https://api.upscale.trade/orders/{orderId}",
headers={"Accept":"application/json","Authorization":"Bearer YOUR_API_KEY","Content-Type":"application/json"},
data="{}",
timeout=30,
)
print(response.status_code, response.text)Responses
Unauthorized
The order is no longer active. The account belongs to another user (account_access_denied), or the request is authenticated with an API key while api_trading is disabled on the account (api_trading_not_enabled). Trading on the account is over in its current status (challenge_closed), or the account is locked by the managed capital limit (funded_limit_trading_locked). The market is paused (market_paused) or accepts closing orders only (market_close_only).
No order with this identifier.
Rate limit of the API key exceeded (api_key_rate_limit_exceeded). Retry-After says when to come back; the body carries the bucket (read / write), the window that tripped, its limit and retryAt.
defaultResponseapplication/json
idstring · uuidrequiredOrder identifier.
- pattern
- ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
00000000-0000-4000-8000-000000000000traderstring · uuidrequiredTrader account the order belongs to.
- pattern
- ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
00000000-0000-4000-8000-000000000000marketstring · uuidrequiredMarket the order is placed on.
- pattern
- ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$
00000000-0000-4000-8000-000000000000statusstring · enumrequiredLifecycle state: active while it waits, executed once filled, canceled when cancelled by the trader or the platform, canceled_by_update when replaced by an edit, canceled_by_position when the position it was attached to went away, canceled_by_error when execution failed — see errorCode.
"active" "canceled" "canceled_by_update" "canceled_by_error" "canceled_by_position" "executed"activetypestring · enumrequiredOrder type. liquidation marks an order the engine raised itself.
"market" "limit" "stop" "trailing_stop" "take" "stop_limit" "stop_market" "liquidation"marketdirectionstring · enumrequiredOrder direction.
"long" "short"longtriggerPricestring · fp9requiredPrice at which the order fires, fp9 raw. 0 when the order carries no trigger.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000requestedTriggerPricestring · fp9 · nullablerequiredTrigger price as requested, before the engine pushed it out to the minimum stop distance, fp9 raw. Null when the requested price was kept as is.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000stopPricestring · fp9requiredTrigger price of a stop_market / stop_limit order, fp9 raw; 0 for every other type.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000limitPricestring · fp9requiredPrice the order is placed at once triggered, fp9 raw: the stop-limit price, falling back to the trigger price.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000stopTriggerPricestring · fp9requiredStop-loss attached to the order, fp9 raw. 0 when none is attached.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000takeTriggerPricestring · fp9requiredTake-profit attached to the order, fp9 raw. 0 when none is attached.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000trailingStopActivationPricestring · fp9requiredPrice at which a trailing stop starts trailing, fp9 raw. 0 when it trails from creation.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000trailingStopOffsetstring · fp9requiredTrailing distance as an absolute quote amount, fp9 raw. 0 when the distance is set as a percent.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000trailingStopOffsetPercentstring · fp9requiredTrailing distance as a price multiplier, fp9 raw: one minus the percent, so 5% is 950000000. 0 when the distance is absolute.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000leveragestring · fp9 · nullablerequiredLeverage of the order, fp9 raw. Null on close orders, which inherit the leverage of the position.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000positionIdstring · nullablerequiredPosition a close order is attached to. Null for orders that open or grow a position.
stringparentOrderIdstring · nullablerequiredOrder this one was spawned from: a stop or take created out of stopTriggerPrice / takeTriggerPrice, or the limit order a stop_limit turned into. Null when the order was submitted directly.
stringamountstring · fp9requiredSize of the order, fp9 raw, in the unit its class uses: on an increase order a quote amount — the reserve while it waits, and what it actually spent once executed; on a close order (stop, take, trailing_stop) the base asset size it closes, as requested at creation.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000indexPricestring · fp9 · nullablerequiredIndex price the order executed at, fp9 raw. Null while the order has not executed.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000recentVolumestring · fp9 · nullablerequiredVolume of the previous opens and increases on the same account, market and direction that was still counted in the price impact of this order when it executed, USD fp9 raw. The recovery window is configurable, 60 seconds by default. Fixed at execution. Null for orders that have not executed, close orders and markets without dynamic price impact.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000priceImpactstring · fp9 · nullablerequiredPrice impact applied to this open or increase, excluding the static spread, as a fraction fp9 raw (10000000 = 1%). Includes the recent volume in recentVolume. Fixed at execution. Null for orders that have not executed, close orders and markets without dynamic price impact.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000createdAtstring · date-timerequiredWhen the order was accepted.
2026-05-01T12:30:00.000ZrealizedPnlstring · fp9 · nullablerequiredPnl realised by this order, fp9 raw. Set only on an executed close order; null while pending and on orders that open or grow a position.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000rawRealizedPnlstring · fp9 · nullablerequiredRealised pnl before the 60-second adjustment, fp9 raw. Differs from realizedPnl only when the adjustment fired.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000profitAdjustmentAppliedbooleanrequiredWhether the 60-second adjustment capped the profit of this order — inside a minute of an open or increase the position pnl cannot grow above what it was at that moment.
truesizeModestring · enumrequiredHow the size was expressed on creation: quote sizes the order by amount, base sizes it by baseSize.
"quote" "base"quotebaseSizestring · fp9 · nullablerequiredOrder size in base asset units, fp9 raw. Null for quote-sized orders.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000reservedAmountstring · fp9 · nullablerequiredQuote amount reserved when the order with sizeMode=base was created, fp9 raw. Stays at the original reserve after execution, while amount is rewritten to what was spent. Null for quote-sized orders, where amount is the reserve.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000errorCodestring · nullablerequiredWhy execution failed, set together with status canceled_by_error — for example insufficient_reserve_at_execution, order_below_min_notional, order_exceeds_market_depth or slippage_tolerance. Null otherwise.
stringreasonstring · enum · nullablerequiredWhy the platform cancelled the order itself, for example force_close or weekly_session_risk_close. Null for trader-driven cancellations.
"force_close" "stop_accounts_fail" "stop_accounts_freeze" "stop_accounts_promote" "stop_accounts_manual" "weekly_session_risk_close"force_closevpiobject · nullablerequiredVPI parameters of the market at the moment the order executed. Null while the order has not executed.
Object · 5 fields
spreadstring · fp9requiredSpread charged on top of the index price, fp9 raw fraction.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000marketDepthLongstringrequiredDepth on the long side, in whole USD — not fp9.
- pattern
- ^-?[0-9]+(\.[0-9]+)?$
45604631.000000000marketDepthShortstringrequiredDepth on the short side, in whole USD — not fp9.
- pattern
- ^-?[0-9]+(\.[0-9]+)?$
38744214.000000000coefficientLongstring · fp9requiredPrice-impact coefficient applied to long orders, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000coefficientShortstring · fp9requiredPrice-impact coefficient applied to short orders, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000View example
{
"spread": "1000000000",
"marketDepthLong": "45604631.000000000",
"marketDepthShort": "38744214.000000000",
"coefficientLong": "1000000000",
"coefficientShort": "1000000000"
}{
"id": "00000000-0000-4000-8000-000000000000",
"trader": "00000000-0000-4000-8000-000000000000",
"market": "00000000-0000-4000-8000-000000000000",
"status": "active",
"type": "market",
"direction": "long",
"triggerPrice": "1000000000",
"requestedTriggerPrice": "1000000000",
"stopPrice": "1000000000",
"limitPrice": "1000000000",
"stopTriggerPrice": "1000000000",
"takeTriggerPrice": "1000000000",
"trailingStopActivationPrice": "1000000000",
"trailingStopOffset": "1000000000",
"trailingStopOffsetPercent": "1000000000",
"leverage": "1000000000",
"positionId": "string",
"parentOrderId": "string",
"amount": "1000000000",
"indexPrice": "1000000000",
"recentVolume": "1000000000",
"priceImpact": "1000000000",
"createdAt": "2026-05-01T12:30:00.000Z",
"realizedPnl": "1000000000",
"rawRealizedPnl": "1000000000",
"profitAdjustmentApplied": true,
"sizeMode": "quote",
"baseSize": "1000000000",
"reservedAmount": "1000000000",
"errorCode": "string",
"reason": "force_close",
"vpi": {
"spread": "1000000000",
"marketDepthLong": "45604631.000000000",
"marketDepthShort": "38744214.000000000",
"coefficientLong": "1000000000",
"coefficientShort": "1000000000"
}
}