/orders/{orderId}Редактирует ожидающий ордер: триггерную цену, зарезервированный amount, допуск проскальзывания или базовый размер. Движок делает это путём замены ордера, поэтому
ответ содержит новый ордер с новым идентификатором, а предыдущий в итоге становится canceled_by_update.
Проверено вне схемы:
- Ордер должен существовать и всё ещё быть
active, а его счёт должен принадлежать вызывающему и находиться в торговом статусе. - Ордера
marketиliquidationвообще нельзя редактировать, как и ордерstop/take, созданный без триггерной цены (order_not_updatable); установленную триггерную цену нельзя сбросить в0(trigger_price_reset_forbidden). - Увеличение резерва ордера на увеличение требует разницу в качестве свободного баланса и отклоняется, пока счёт заблокирован лимитом управляемого капитала.
- Ордер, созданный с
sizeMode: base, требует новогоamountвсякий раз, когда изменяетсяbaseSize(base_size_requires_amount). - Рынок должен быть открыт, и полученный ордер перепроверяется точно так же, как при создании — те же коды формы полей, триггерной цены и номинала, перечисленные в
POST /orders, применяются здесь, кромеinvalid_leverage: кредитное плечо нельзя редактировать.
Запрос, который не задаёт ни одного из полей, ничего не меняет и возвращает ордер в текущем состоянии.
https://api.upscale.tradeПараметры
orderIdstring · uuidобязательноИдентификатор ордера, который нужно редактировать.
00000000-0000-4000-8000-000000000000Тело запроса · обязательно
Необязательные поля: 4
triggerPricestring · fp9необязательноNew 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 · fp9необязательноNew 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 · fp9необязательноNew slippage tolerance, fp9 raw. See the same field on order creation.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000baseSizestring · fp9необязательноNew size in base asset units, fp9 raw. Only for orders created with sizeMode: base.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000{}Примеры
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)Ответы
Неавторизовано
Ордер больше не активен. Аккаунт принадлежит другому пользователю (account_access_denied), или запрос аутентифицирован с помощью API-ключа, пока api_trading отключён на аккаунте (api_trading_not_enabled). Торговля на аккаунте завершена в его текущем статусе (challenge_closed), или аккаунт заблокирован лимитом управляемого капитала (funded_limit_trading_locked). Рынок приостановлен (market_paused) или принимает только ордера на закрытие (market_close_only).
Нет ордера с этим идентификатором.
Превышен лимит частоты запросов API-ключа (api_key_rate_limit_exceeded). Retry-After указывает, когда вернуться; тело содержит бакет (read / write), окно, которое сработало, его лимит и retryAt.
defaultОтветapplication/json
idstring · uuidобязательноOrder 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 · uuidобязательноTrader 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 · uuidобязательноMarket 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 · enumобязательноLifecycle 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 · enumобязательноOrder type. liquidation marks an order the engine raised itself.
"market" "limit" "stop" "trailing_stop" "take" "stop_limit" "stop_market" "liquidation"marketdirectionstring · enumобязательноOrder direction.
"long" "short"longtriggerPricestring · fp9обязательноPrice at which the order fires, fp9 raw. 0 when the order carries no trigger.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000requestedTriggerPricestring · fp9 · nullableобязательноTrigger 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 · fp9обязательноTrigger price of a stop_market / stop_limit order, fp9 raw; 0 for every other type.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000limitPricestring · fp9обязательноPrice 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 · fp9обязательноStop-loss attached to the order, fp9 raw. 0 when none is attached.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000takeTriggerPricestring · fp9обязательноTake-profit attached to the order, fp9 raw. 0 when none is attached.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000trailingStopActivationPricestring · fp9обязательноPrice at which a trailing stop starts trailing, fp9 raw. 0 when it trails from creation.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000trailingStopOffsetstring · fp9обязательноTrailing distance as an absolute quote amount, fp9 raw. 0 when the distance is set as a percent.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000trailingStopOffsetPercentstring · fp9обязательноTrailing 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 · nullableобязательноLeverage of the order, fp9 raw. Null on close orders, which inherit the leverage of the position.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000positionIdstring · nullableобязательноPosition a close order is attached to. Null for orders that open or grow a position.
stringparentOrderIdstring · nullableобязательноOrder 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 · fp9обязательноSize 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 · nullableобязательноIndex price the order executed at, fp9 raw. Null while the order has not executed.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000recentVolumestring · fp9 · nullableобязательноVolume 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 · nullableобязательноPrice 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-timeобязательноWhen the order was accepted.
2026-05-01T12:30:00.000ZrealizedPnlstring · fp9 · nullableобязательноPnl 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 · nullableобязательноRealised pnl before the 60-second adjustment, fp9 raw. Differs from realizedPnl only when the adjustment fired.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000profitAdjustmentAppliedbooleanобязательноWhether 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 · enumобязательноHow the size was expressed on creation: quote sizes the order by amount, base sizes it by baseSize.
"quote" "base"quotebaseSizestring · fp9 · nullableобязательноOrder size in base asset units, fp9 raw. Null for quote-sized orders.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000reservedAmountstring · fp9 · nullableобязательноQuote 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 · nullableобязательноWhy 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 · nullableобязательноWhy 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 · nullableобязательноVPI parameters of the market at the moment the order executed. Null while the order has not executed.
Объект · 5 поля
spreadstring · fp9обязательноSpread charged on top of the index price, fp9 raw fraction.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000marketDepthLongstringобязательноDepth on the long side, in whole USD — not fp9.
- pattern
- ^-?[0-9]+(\.[0-9]+)?$
45604631.000000000marketDepthShortstringобязательноDepth on the short side, in whole USD — not fp9.
- pattern
- ^-?[0-9]+(\.[0-9]+)?$
38744214.000000000coefficientLongstring · fp9обязательноPrice-impact coefficient applied to long orders, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000coefficientShortstring · fp9обязательноPrice-impact coefficient applied to short orders, fp9 raw.
- pattern
- ^(?:-?[1-9][0-9]*|0)$
1000000000Посмотреть пример
{
"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"
}
}