curl --request POST \
--url https://api.arcus.xyz/v1/modifyOrder \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--header 'X-Signature: <api-key>' \
--header 'X-Timestamp: <api-key>' \
--data '
{
"address": "<string>",
"accountIndex": 4,
"marketId": 32767,
"goodTilTime": "<string>",
"quantity": "<string>",
"price": "<string>",
"reduceOnly": true,
"orderId": "<string>",
"clientId": "<string>",
"clientTime": "<string>",
"signature": "<string>"
}
'import requests
url = "https://api.arcus.xyz/v1/modifyOrder"
payload = {
"address": "<string>",
"accountIndex": 4,
"marketId": 32767,
"goodTilTime": "<string>",
"quantity": "<string>",
"price": "<string>",
"reduceOnly": True,
"orderId": "<string>",
"clientId": "<string>",
"clientTime": "<string>",
"signature": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"X-Timestamp": "<api-key>",
"X-Signature": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-Key': '<api-key>',
'X-Timestamp': '<api-key>',
'X-Signature': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
address: '<string>',
accountIndex: 4,
marketId: 32767,
goodTilTime: '<string>',
quantity: '<string>',
price: '<string>',
reduceOnly: true,
orderId: '<string>',
clientId: '<string>',
clientTime: '<string>',
signature: '<string>'
})
};
fetch('https://api.arcus.xyz/v1/modifyOrder', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arcus.xyz/v1/modifyOrder",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'address' => '<string>',
'accountIndex' => 4,
'marketId' => 32767,
'goodTilTime' => '<string>',
'quantity' => '<string>',
'price' => '<string>',
'reduceOnly' => true,
'orderId' => '<string>',
'clientId' => '<string>',
'clientTime' => '<string>',
'signature' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>",
"X-Signature: <api-key>",
"X-Timestamp: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arcus.xyz/v1/modifyOrder"
payload := strings.NewReader("{\n \"address\": \"<string>\",\n \"accountIndex\": 4,\n \"marketId\": 32767,\n \"goodTilTime\": \"<string>\",\n \"quantity\": \"<string>\",\n \"price\": \"<string>\",\n \"reduceOnly\": true,\n \"orderId\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientTime\": \"<string>\",\n \"signature\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("X-Timestamp", "<api-key>")
req.Header.Add("X-Signature", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.arcus.xyz/v1/modifyOrder")
.header("X-API-Key", "<api-key>")
.header("X-Timestamp", "<api-key>")
.header("X-Signature", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"address\": \"<string>\",\n \"accountIndex\": 4,\n \"marketId\": 32767,\n \"goodTilTime\": \"<string>\",\n \"quantity\": \"<string>\",\n \"price\": \"<string>\",\n \"reduceOnly\": true,\n \"orderId\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientTime\": \"<string>\",\n \"signature\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcus.xyz/v1/modifyOrder")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["X-Timestamp"] = '<api-key>'
request["X-Signature"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"address\": \"<string>\",\n \"accountIndex\": 4,\n \"marketId\": 32767,\n \"goodTilTime\": \"<string>\",\n \"quantity\": \"<string>\",\n \"price\": \"<string>\",\n \"reduceOnly\": true,\n \"orderId\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientTime\": \"<string>\",\n \"signature\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"address": "0x1234567890abcdef1234567890abcdef12345678",
"accountIndex": 4,
"clientTime": 123,
"orderId": "<string>",
"marketId": 32767,
"marketDisplayName": "BTC-USD",
"status": "ACK",
"updateTime": 123,
"clientId": "<string>",
"timeInForce": "GTT",
"goodTilTime": "<string>",
"remainingSize": "<string>",
"filledSize": "<string>",
"rejectionReason": "POST_ONLY_WOULD_CROSS",
"error": "<string>",
"rateLimit": {
"pool": "order",
"remaining": 9958
}
}{
"address": "0x1234567890abcdef1234567890abcdef12345678",
"accountIndex": 4,
"clientTime": 123,
"orderId": "<string>",
"marketId": 32767,
"marketDisplayName": "BTC-USD",
"status": "ACK",
"updateTime": 123,
"clientId": "<string>",
"timeInForce": "GTT",
"goodTilTime": "<string>",
"remainingSize": "<string>",
"filledSize": "<string>",
"rejectionReason": "POST_ONLY_WOULD_CROSS",
"error": "<string>",
"rateLimit": {
"pool": "order",
"remaining": 9958
}
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "rate limited",
"reason": "account_empty",
"retryAfterMs": 850,
"clientId": "my-order-42"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}Modify order
Modify the price and/or quantity of an open order.
curl --request POST \
--url https://api.arcus.xyz/v1/modifyOrder \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--header 'X-Signature: <api-key>' \
--header 'X-Timestamp: <api-key>' \
--data '
{
"address": "<string>",
"accountIndex": 4,
"marketId": 32767,
"goodTilTime": "<string>",
"quantity": "<string>",
"price": "<string>",
"reduceOnly": true,
"orderId": "<string>",
"clientId": "<string>",
"clientTime": "<string>",
"signature": "<string>"
}
'import requests
url = "https://api.arcus.xyz/v1/modifyOrder"
payload = {
"address": "<string>",
"accountIndex": 4,
"marketId": 32767,
"goodTilTime": "<string>",
"quantity": "<string>",
"price": "<string>",
"reduceOnly": True,
"orderId": "<string>",
"clientId": "<string>",
"clientTime": "<string>",
"signature": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"X-Timestamp": "<api-key>",
"X-Signature": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-API-Key': '<api-key>',
'X-Timestamp': '<api-key>',
'X-Signature': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
address: '<string>',
accountIndex: 4,
marketId: 32767,
goodTilTime: '<string>',
quantity: '<string>',
price: '<string>',
reduceOnly: true,
orderId: '<string>',
clientId: '<string>',
clientTime: '<string>',
signature: '<string>'
})
};
fetch('https://api.arcus.xyz/v1/modifyOrder', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arcus.xyz/v1/modifyOrder",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'address' => '<string>',
'accountIndex' => 4,
'marketId' => 32767,
'goodTilTime' => '<string>',
'quantity' => '<string>',
'price' => '<string>',
'reduceOnly' => true,
'orderId' => '<string>',
'clientId' => '<string>',
'clientTime' => '<string>',
'signature' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>",
"X-Signature: <api-key>",
"X-Timestamp: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.arcus.xyz/v1/modifyOrder"
payload := strings.NewReader("{\n \"address\": \"<string>\",\n \"accountIndex\": 4,\n \"marketId\": 32767,\n \"goodTilTime\": \"<string>\",\n \"quantity\": \"<string>\",\n \"price\": \"<string>\",\n \"reduceOnly\": true,\n \"orderId\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientTime\": \"<string>\",\n \"signature\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("X-Timestamp", "<api-key>")
req.Header.Add("X-Signature", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.arcus.xyz/v1/modifyOrder")
.header("X-API-Key", "<api-key>")
.header("X-Timestamp", "<api-key>")
.header("X-Signature", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"address\": \"<string>\",\n \"accountIndex\": 4,\n \"marketId\": 32767,\n \"goodTilTime\": \"<string>\",\n \"quantity\": \"<string>\",\n \"price\": \"<string>\",\n \"reduceOnly\": true,\n \"orderId\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientTime\": \"<string>\",\n \"signature\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcus.xyz/v1/modifyOrder")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["X-Timestamp"] = '<api-key>'
request["X-Signature"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"address\": \"<string>\",\n \"accountIndex\": 4,\n \"marketId\": 32767,\n \"goodTilTime\": \"<string>\",\n \"quantity\": \"<string>\",\n \"price\": \"<string>\",\n \"reduceOnly\": true,\n \"orderId\": \"<string>\",\n \"clientId\": \"<string>\",\n \"clientTime\": \"<string>\",\n \"signature\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"address": "0x1234567890abcdef1234567890abcdef12345678",
"accountIndex": 4,
"clientTime": 123,
"orderId": "<string>",
"marketId": 32767,
"marketDisplayName": "BTC-USD",
"status": "ACK",
"updateTime": 123,
"clientId": "<string>",
"timeInForce": "GTT",
"goodTilTime": "<string>",
"remainingSize": "<string>",
"filledSize": "<string>",
"rejectionReason": "POST_ONLY_WOULD_CROSS",
"error": "<string>",
"rateLimit": {
"pool": "order",
"remaining": 9958
}
}{
"address": "0x1234567890abcdef1234567890abcdef12345678",
"accountIndex": 4,
"clientTime": 123,
"orderId": "<string>",
"marketId": 32767,
"marketDisplayName": "BTC-USD",
"status": "ACK",
"updateTime": 123,
"clientId": "<string>",
"timeInForce": "GTT",
"goodTilTime": "<string>",
"remainingSize": "<string>",
"filledSize": "<string>",
"rejectionReason": "POST_ONLY_WOULD_CROSS",
"error": "<string>",
"rateLimit": {
"pool": "order",
"remaining": 9958
}
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "rate limited",
"reason": "account_empty",
"retryAfterMs": 850,
"clientId": "my-order-42"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}{
"error": "Invalid request body",
"code": "GEO_RESTRICTED",
"errorSource": "Order",
"errorType": "Tick",
"rejectionReason": "POST_ONLY_WOULD_CROSS"
}address query parameter matching the master Ethereum address for X-API-Key.
Identify the order to modify by exactly one of orderId or clientId — setting both, or neither, is rejected with a validation error.
ALO modifies are prioritized like cancels. A modify on a post-only (ALO) order can only shrink or reprice a maker order — it can never take liquidity — so it is routed on the high-priority path ahead of order placements, the same as cancels (and skips the taker speed bump). Modifies with any other timeInForce ride the normal path and are subject to the speed bump. Like a cancel, a prioritized modify may be processed ahead of an earlier not-yet-sequenced placement of its own target, which would then reject as ORDER_NOT_FOUND_FOR_MODIFY (and, under cancel-replace modify semantics, be buffered briefly and applied when the placement arrives).
No separate cancel + place event pair is emitted. On the orders WebSocket channel the client observes: a non-crossing modify → a single orders update; a crossing modify → a fill followed by a PLACED (or REJECTED). Correlate by orderId / clientId.
Cancel-replace semantics (feature-flagged rollout). When the modify_cancel_place engine flag is active, every modify unconditionally cancels the original order and re-places it under the same orderId: the orders channel emits a CANCELED update with cancelReason: MODIFY_CANCELED immediately followed by the replacement outcome (PLACED, fills, or REJECTED). Under these semantics:
- A modify whose target has not yet reached the book is rejected with
ORDER_NOT_FOUND_FOR_MODIFYbut also buffered briefly — if the target placement arrives shortly after, it is canceled (MODIFY_CANCELED) and replaced with the modify’s parameters, mirroring buffered-cancel behavior. - Untriggered TPSL orders cannot be modified: the modify is rejected with
MODIFY_TPSL_NOT_SUPPORTEDand a live TPSL survives unchanged. If a buffered modify meets an arriving TPSL placement, the TPSL is canceled as a precaution. - A pending cancel always dominates a modify for the same order; the modify is rejected with
MODIFY_SUPERSEDED_BY_CANCELand the order’s final state is canceled.
Response behavior
Asynchronous. Returns either202 Accepted (common case — forwarded to the matching engine, body carries the orderId for correlation) or 200 OK (gateway already has definitive state for the order). Subscribe to the orders WebSocket channel to observe the order’s lifecycle.Authorizations
Hex-encoded Ed25519 public key (64 chars). The public key IS the API key — register it via POST /createApiKey. Required on every authenticated request, both read-only and signed.
Unix time in nanoseconds as a decimal string (e.g. "1713825891591000000"). Millisecond or second epochs are rejected with 401 Unauthorized. Must be within ±30,000 ms (MaxTimestampDriftMs, the drift window stays configured in milliseconds) of server wall-clock, or the request is rejected with 401 Unauthorized. Required on all mutating / credential-creating endpoints. This same value must appear as the ct field in the ordersign typed canonical payload (single-order endpoints) or in each element's ct field (batch endpoints).
Lowercase hex-encoded Ed25519 signature (128 chars).
Single-order endpoints (placeOrder, cancelOrder, modifyOrder, and other non-batch mutating routes) sign over the ordersign typed canonical payload — a compact, key-sorted JSON object built from parsed request fields using engine-native integer values:
placeOrder: {"ad":"0x…","ai":N,[,"c":"…"],"ct":N,"g":N,"m":N,"op":1,"p":N,"q":N,"r":0|1,"s":N,"t":N,"v":1} cancelOrder: {"ad":"0x…","ai":N,[,"c":"…"],"ct":N,[,"id":"…"],"m":N,"op":2,"v":1} modifyOrder: {"ad":"0x…","ai":N,[,"c":"…"],"ct":N,"g":N,[,"id":"…"],"m":N,"op":3,"p":N,"q":N,"r":0|1,"s":N,"t":N,"v":1} (exactly one of id / c)
ct must equal the X-Timestamp header value. Keys in brackets are conditional (omitted when empty). op values: 1=place, 2=cancel, 3=modify. See the ordersign package for field definitions and reference signing code.
Other signed routes (e.g. createApiKey) still use the legacy scheme: signing_message = X-Timestamp + ACTION + canonicalJSON(body), where ACTION is the camelCase final path segment.
Batch endpoints (batchPlaceOrders, batchCancelOrders, batchModifyOrders) do NOT use this header. They authenticate with per-element typed ordersign signatures embedded in the request body (see the global auth description and the per-field signature descriptions on OrderRequest / CancelOrderRequest / ModifyOrderRequest).
Read endpoints are authenticated by ?address= (and optionally X-API-Key) only — no signature is required. canonicalJSON(body) is the JSON body with object keys sorted lexicographically at every level and no whitespace; the server canonicalizes the received body before verifying, so only the bytes signed over must be canonical. Required on all mutating / credential-creating endpoints.
Body
Modify the price and/or size of a single open order (processed as an atomic cancel + replace).
Identify the order to modify by exactly one of orderId (the server-generated id) or clientId (resolved engine-side against the account's client-id index). Setting both is rejected, and so is setting neither — supply one or the other, never both.
Master Ethereum address for this API key (must match POST /createApiKey for the same key).
^(0x|0X)?[0-9a-fA-F]{40}$Account index (account index, 0–9). Identifies the account for orders, positions, fills, and API keys.
0 <= x <= 9Perpetual market identifier (uint16). Map to display name via GET /markets. Used for orders, positions, funding, and market metadata.
0 <= x <= 65535The order's expiry as an epoch-microsecond timestamp (string). Required — echo the resting order's goodTilTime from placement, and it must be at least one month ahead of the current system timestamp. If it differs from the resting order's value, the engine performs a cancel-replace with the new expiry. Covered by the Ed25519 request signature (g field of the canonical modify payload, in nanoseconds).
1New size in human-readable base-asset units (e.g. "0.5" for 0.5 BTC), at most the market's maxOrderSize (reduce-only orders are not exempt).
1^(0\.[0-9]*[1-9][0-9]*|[1-9][0-9]*\.?[0-9]*)$New price in human-readable USD (e.g. "50000.5").
1^(0\.[0-9]*[1-9][0-9]*|[1-9][0-9]*\.?[0-9]*)$BUY, SELL GTT = Good Till Time (rests until goodTilTime), IOC = Immediate or Cancel, FOK = Fill or Kill, ALO = Add Liquidity Only (post-only).
Submissions must use GTT for resting orders. Note: order reads (REST order queries and the orders WebSocket channel) currently report resting orders as GTC — the legacy name for the same bucket — for backward compatibility; see TimeInForceResponse.
GTT, IOC, FOK, ALO Required — must be explicitly true or false (immutable; echo the resting order's value). Covered by the Ed25519 request signature. A missing or null value is rejected with InvalidRequest.
Server-generated order ID to modify (hex string). Provide exactly one of orderId or clientId, never both.
1Identify the order to modify by its placement-time clientId. Subject to the same constraints as at placement: 1–36 characters, [A-Za-z0-9_-] only. The gateway resolves the value against the account's client-id index engine-side. Provide exactly one of orderId or clientId; supplying both is rejected with HTTP 400.
36^[A-Za-z0-9_-]+$Client-side timestamp as a string of Unix nanoseconds — this is the signed ct replay nonce and must equal the X-Timestamp header. A millisecond or second value is rejected with 401.
Per-modify Ed25519 signature, required inside POST /batchModifyOrders only (single POST /modifyOrder signs via the X-Signature header instead). Covers the same typed canonical modify payload as a standalone modifyOrder — the signed bytes are identical whether the modify is submitted alone or in a batch: {"ad":"0x…","ai":N,[,"c":"…"],"ct":N,"g":N,[,"id":"…"],"m":N,"op":3,"p":N,"q":N,"r":0|1,"s":N,"t":N,"v":1}
Keys in brackets are conditional (omitted when empty — exactly one of id or c must be present, matching the request's identity field).
Response
Modify processed and the gateway already has definitive state for the replacement order. Treat as best-effort enrichment of the 202 path; the orders WebSocket channel is still the source of truth.
Modify-order response. The HTTP call is asynchronous and may return either:
202 Accepted— common case.statusisACKand the body carries the replacementorderIdfor correlation; theordersWebSocket channel delivers the lifecycle.200 OK— the gateway already had definitive state for the replacement order by the time it responded.
Master Ethereum address of the account that modified the order.
"0x1234567890abcdef1234567890abcdef12345678"
Account index (subaccount) that modified the order.
0 <= x <= 9Parsed clientTime from the request when provided as an integer-like string; otherwise 0.
Server-generated id of the replacement order created by the modify operation.
Perpetual market identifier (uint16). Map to display name via GET /markets. Used for orders, positions, funding, and market metadata.
0 <= x <= 65535Market symbol (e.g. BTC-USD).
"BTC-USD"
ACK on the 202 path. On the 200 path, the definitive state.
PENDING, OPEN, PARTIALLY_FILLED, FILLED, CANCELED, MARGIN_CANCELED, REJECTED, UNTRIGGERED, TPSL_PLACED, TPSL_TRIGGERED, TPSL_CANCELED, LIQUIDATED, ADL, ACK, CANCEL_ACKNOWLEDGED, CANCEL_ALL_ACKNOWLEDGED, CANCEL_PENDING, ERROR "ACK"
Gateway clock (epoch microseconds) at the moment the modify was forwarded to the matching engine.
Echo of the client id attached to the replacement order, when provided.
Echo of the time-in-force from the modify request.
GTT, IOC, FOK, ALO The resting order's expiration timestamp in epoch microseconds (as string). Populated once the matching engine confirms the modify. Present only on the 200 path for GTT/ALO orders; absent on 202 and for IOC/FOK orders.
Unfilled size of the replacement order. Populated only on the 200 path.
Cumulative filled size of the replacement order. Populated only on the 200 path.
Populated when status is REJECTED on the 200 path.
POST_ONLY_WOULD_CROSS, SELF_TRADE, UNDERCOLLATERALIZED, COULD_NOT_FILL, IOC_CANCELED, FOK_FAILED, REDUCE_ONLY_WOULD_INCREASE, TOO_MANY_CLIENT_IDS, DUPLICATE_CLIENT_ID, POSITION_TPSL_ALREADY_EXISTS, ENTRY_TPSL_CANNOT_BE_POSITION_TPSL, ORDER_WILL_TAKE_LIQUIDITY_DURING_MARKET_HALT, ORDER_NOT_FOUND_FOR_MODIFY, MODIFY_CHANGED_IMMUTABLE_FIELD, MODIFY_ZERO_SIZE, PRICE_WILL_EXCEED_MAXIMUM_OUTSIDE_RTH_TRADING_BOUND, MODIFY_WOULD_CROSS_OUTSIDE_RTH_TRADING_BOUNDARY, FILL_WILL_EXCEED_TRADING_BOUND, OPEN_INTEREST_CAP_EXCEEDED, POSITION_SIZE_CAP_EXCEEDED, MODIFY_TPSL_NOT_SUPPORTED, MODIFY_SUPERSEDED_BY_CANCEL, MODIFY_SIZE_ALREADY_FILLED Present when status is ERROR — a per-row failure inside POST /batchModifyOrders (validation, signature, or immutable-field mismatch). Never set on single POST /modifyOrder responses, which report failures at the HTTP level instead.
Per-subaccount order-pool rate-limit snapshot after this modify. Omitted when rate limiting is not configured.
Show child attributes
Show child attributes
Was this page helpful?