curl --request GET \
--url https://apimonaco.xyz/api/v1/orders/{orderId} \
--header 'X-Monaco-Signature: <api-key>'import requests
url = "https://apimonaco.xyz/api/v1/orders/{orderId}"
headers = {"X-Monaco-Signature": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Monaco-Signature': '<api-key>'}};
fetch('https://apimonaco.xyz/api/v1/orders/{orderId}', 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://apimonaco.xyz/api/v1/orders/{orderId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Monaco-Signature: <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"
"net/http"
"io"
)
func main() {
url := "https://apimonaco.xyz/api/v1/orders/{orderId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Monaco-Signature", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://apimonaco.xyz/api/v1/orders/{orderId}")
.header("X-Monaco-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://apimonaco.xyz/api/v1/orders/{orderId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Monaco-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"tradingPairId": "456e7890-e12b-12d3-a456-426614174000",
"orderType": "LIMIT",
"side": "BUY",
"price": "35000.00",
"quantity": "0.5",
"filledQuantity": "0.2",
"averageFillPrice": "35050.00",
"status": "PARTIALLY_FILLED",
"tradingMode": "SPOT",
"timeInForce": "GTC",
"createdAt": "2023-11-13T10:30:00Z",
"updatedAt": "2023-11-13T10:35:00Z",
"expirationDate": "2023-11-13T10:35:00Z",
"applicationTakerFee": "0.88",
"monacoTakerFee": "1.75",
"monacoMakerRebate": "-0.35",
"totalTakerFees": "2.63",
"takerTotalPayment": "17502.63",
"makerTotalReceipt": "17500.35",
"marginAccountId": "123e4567-e89b-12d3-a456-426614174000",
"positionSide": "LONG",
"leverage": "5",
"reduceOnly": false,
"positionId": "123e4567-e89b-12d3-a456-426614174000",
"quantityRaw": "500000000",
"filledQuantityRaw": "200000000",
"remainingQuantity": "0.3",
"remainingQuantityRaw": "300000000",
"clientOrderId": "quote-btc-1130-a",
"cancelledAt": "2023-11-13T10:35:00Z",
"filledAt": "2023-11-13T10:35:00Z",
"expiredAt": "2023-11-13T10:35:00Z",
"submittedAt": "2023-11-13T10:35:00Z",
"acknowledgedAt": "2023-11-13T10:35:00Z",
"triggerPrice": "34000.00",
"quoteVolume": "17500.00",
"applicationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parentOrderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"batchId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"terminalReason": "REDUCE_ONLY_EXHAUSTED",
"postOnly": false,
"version": 918342,
"selfTradePreventionMode": "CANCEL_TAKER",
"conditionalOrderId": "019aefab-f665-854c-99dc-ced6db9014aa",
"origin": "LIQUIDATION",
"placementTakerFeeBps": "4.5",
"placementMakerFeeBps": "-0.1",
"rfqId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rfqQuoteId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Get order by ID
Get order by ID.
Get a single order by its ID. Users can only access their own orders.
curl --request GET \
--url https://apimonaco.xyz/api/v1/orders/{orderId} \
--header 'X-Monaco-Signature: <api-key>'import requests
url = "https://apimonaco.xyz/api/v1/orders/{orderId}"
headers = {"X-Monaco-Signature": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Monaco-Signature': '<api-key>'}};
fetch('https://apimonaco.xyz/api/v1/orders/{orderId}', 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://apimonaco.xyz/api/v1/orders/{orderId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-Monaco-Signature: <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"
"net/http"
"io"
)
func main() {
url := "https://apimonaco.xyz/api/v1/orders/{orderId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Monaco-Signature", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://apimonaco.xyz/api/v1/orders/{orderId}")
.header("X-Monaco-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://apimonaco.xyz/api/v1/orders/{orderId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Monaco-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "123e4567-e89b-12d3-a456-426614174000",
"tradingPairId": "456e7890-e12b-12d3-a456-426614174000",
"orderType": "LIMIT",
"side": "BUY",
"price": "35000.00",
"quantity": "0.5",
"filledQuantity": "0.2",
"averageFillPrice": "35050.00",
"status": "PARTIALLY_FILLED",
"tradingMode": "SPOT",
"timeInForce": "GTC",
"createdAt": "2023-11-13T10:30:00Z",
"updatedAt": "2023-11-13T10:35:00Z",
"expirationDate": "2023-11-13T10:35:00Z",
"applicationTakerFee": "0.88",
"monacoTakerFee": "1.75",
"monacoMakerRebate": "-0.35",
"totalTakerFees": "2.63",
"takerTotalPayment": "17502.63",
"makerTotalReceipt": "17500.35",
"marginAccountId": "123e4567-e89b-12d3-a456-426614174000",
"positionSide": "LONG",
"leverage": "5",
"reduceOnly": false,
"positionId": "123e4567-e89b-12d3-a456-426614174000",
"quantityRaw": "500000000",
"filledQuantityRaw": "200000000",
"remainingQuantity": "0.3",
"remainingQuantityRaw": "300000000",
"clientOrderId": "quote-btc-1130-a",
"cancelledAt": "2023-11-13T10:35:00Z",
"filledAt": "2023-11-13T10:35:00Z",
"expiredAt": "2023-11-13T10:35:00Z",
"submittedAt": "2023-11-13T10:35:00Z",
"acknowledgedAt": "2023-11-13T10:35:00Z",
"triggerPrice": "34000.00",
"quoteVolume": "17500.00",
"applicationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parentOrderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"batchId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"terminalReason": "REDUCE_ONLY_EXHAUSTED",
"postOnly": false,
"version": 918342,
"selfTradePreventionMode": "CANCEL_TAKER",
"conditionalOrderId": "019aefab-f665-854c-99dc-ced6db9014aa",
"origin": "LIQUIDATION",
"placementTakerFeeBps": "4.5",
"placementMakerFeeBps": "-0.1",
"rfqId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"rfqQuoteId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}Authorizations
Ed25519 session-key request signing. Every authenticated request carries three headers: X-Monaco-PublicKey (64-char lowercase-hex session public key), X-Monaco-Timestamp (Unix milliseconds, within 30s of server time), and X-Monaco-Signature (hex ed25519 signature). The signature is over METHOD\npath?query\ntimestamp_ms\nSHA256_hex(body), where the body hash is the SHA-256 of the empty byte string when there is no body. Obtain the session keypair from POST /api/v1/auth/challenge followed by POST /api/v1/auth/verify.
Path Parameters
Response
OK
Order UUID
"123e4567-e89b-12d3-a456-426614174000"
Trading pair UUID
"456e7890-e12b-12d3-a456-426614174000"
Order type: LIMIT or MARKET
"LIMIT"
Order side: BUY or SELL
"BUY"
Limit price (null for market orders)
"35000.00"
Original order quantity
"0.5"
Quantity filled so far
"0.2"
Volume-weighted average fill price
"35050.00"
Order status: SUBMITTED, PARTIALLY_FILLED, FILLED, CANCELLED, REJECTED, or EXPIRED
"PARTIALLY_FILLED"
Trading mode: SPOT or MARGIN
"SPOT"
Time in force: GTC, IOC, or FOK. Absent on MARKET orders, which have none.
"GTC"
Order creation timestamp (ISO 8601)
"2023-11-13T10:30:00Z"
Last update timestamp (ISO 8601)
"2023-11-13T10:35:00Z"
Order expiration date (ISO 8601)
"2023-11-13T10:35:00Z"
Application (builder) taker fee this order paid, in quote token units, summed over the fills where it was the taker: each fill's fee as charged, rounded down to the quote token's smallest unit. A replacement order also includes the fills of the order it replaced. 0 on a liquidation order. An amount, not a rate.
"0.88"
Monaco protocol taker fee this order paid, in quote token units, summed over the fills where it was the taker: each fill's fee as charged, rounded down to the quote token's smallest unit. A replacement order also includes the fills of the order it replaced. A liquidation order carries the liquidation fee it was charged instead. An amount, not a rate.
"1.75"
Monaco maker fee on this order, in quote token units, summed over the fills where it was the maker; negative is a rebate credited to the maker. A replacement order also includes the fills of the order it replaced. An amount, not a rate.
"-0.35"
Total taker fees charged in quote token (monaco_taker_fee + application_taker_fee)
"2.63"
Total amount paid by taker, in quote token units: the filled notional as the ledger booked it (each fill's price * qty, rounded down to the quote token's smallest unit) plus total_taker_fees. A replacement order also includes the fills of the order it replaced.
"17502.63"
Total amount received by maker, in quote token units: the notional of its maker fills as the ledger booked it (each fill's price * qty, rounded down to the quote token's smallest unit) minus monaco_maker_rebate, so a rebate adds. A replacement order also includes the fills of the order it replaced.
"17500.35"
Margin account UUID for margin orders
"123e4567-e89b-12d3-a456-426614174000"
DEPRECATED derived compatibility value. Order side is authoritative.
"LONG"
Leverage for margin orders
"5"
Whether the order is reduce-only
false
Associated margin position UUID
"123e4567-e89b-12d3-a456-426614174000"
Original order quantity in raw format (for precision)
"500000000"
Filled quantity in raw format (for precision)
"200000000"
Remaining unfilled quantity (normalized for display)
"0.3"
Remaining unfilled quantity in raw format (for precision)
"300000000"
Client-assigned correlation handle as stored: the value supplied on create or replace, with surrounding whitespace trimmed. Absent when the order carried none, including every order placed before the field was accepted on write. Uniqueness is enforced only among your orders that are RESTING on the book, so several of your orders may share one value over time and a lookup by it can be ambiguous: an order that never rests never takes the handle, and the value is released the moment any order reaches a terminal state. It is a correlation handle, not an idempotency key.
"quote-btc-1130-a"
Timestamp when the order was cancelled (ISO 8601)
"2023-11-13T10:35:00Z"
Timestamp when the order was fully filled (ISO 8601)
"2023-11-13T10:35:00Z"
Timestamp when the order expired (ISO 8601)
"2023-11-13T10:35:00Z"
Timestamp when the order was submitted (ISO 8601)
"2023-11-13T10:35:00Z"
Timestamp when the order was acknowledged (ISO 8601)
"2023-11-13T10:35:00Z"
Trigger price for stop/conditional orders
"34000.00"
Quote volume of the order
"17500.00"
Application UUID that created the order
Parent order UUID for linked orders
Batch UUID for batch orders
Stable terminal cause for a cancelled order: USER_REQUESTED, REPLACED, LIQUIDATION, INSUFFICIENT_MARGIN, REDUCE_ONLY_EXHAUSTED, POSITION_CLOSED, OCO_SIBLING_TRIGGERED, SELF_TRADE_PREVENTION, AUTO_DELEVERAGING, PRICE_BAND, SLIPPAGE_TOLERANCE, BANKRUPTCY_PRICE, CANCEL_ALL_AFTER, or SYSTEM. CANCEL_ALL_AFTER means your cancel-all-after timer ran out (POST /api/v1/orders/cancel-all-after). AUTO_DELEVERAGING means auto-deleveraging closed the position your risk bucket held and this resting order was cancelled with it; you were deleveraged as a counterparty, not liquidated. PRICE_BAND means the exchange's protective price band stopped the order and its remainder was cancelled, or, on a resting perp order, that the mark moved the order past the band, where no taker may trade with it; SLIPPAGE_TOLERANCE means your own slippageToleranceBps did. BANKRUPTCY_PRICE means a resting order was cancelled because filling it would have taken its risk bucket below zero equity in liquidation zero mode (its bankruptcy price).
"REDUCE_ONLY_EXHAUSTED"
Whether the order was placed post-only (maker-only). Absent for orders placed before the flag was persisted.
false
Opaque, compare-only revision counter for this order's state: the sequencer step that wrote it. A strictly higher value is strictly newer state for that order. The SAME counter is carried on every order WebSocket event and on the orders snapshot frame, so a reconnecting client reconciles on (id, version) — take the REST row when snapshot.version >= local.version, else keep local state. Note >=, not >: on the stream, equal versions mean the SAME STEP rather than identical state, because one step emits several events for one order (an OrderPlaced and then its fills) and a batch shares one step across every item. A REST row is that step's FINAL state, so it wins a tie. Between two REST reads the comparison is simpler — equal there does mean identical state. Do not read anything else into the number: it is not a count of updates, consecutive values are not expected (it is drawn from a global sequence shared by every order, so per-order values are sparse and gaps are normal), and it is not comparable across different orders. Absent means unknown: an order last written before this field existed. Fall back to a full field comparison for those rather than treating absent as version zero — and note that a comparison against an absent value is false in both directions, so an order held locally without one is never refreshed by the merge above; take the REST row unconditionally for those. Reconciling on this counter does NOT on its own close a reconnect gap: an order that filled or was cancelled while the socket was down appears in neither the resting snapshot nor the stream, so recover fills from getUserTrades (GET /api/v1/accounts/trades, newest first) and resolve anything your local state believes is resting that the snapshot no longer lists with a targeted getOrder. Unlike updatedAt, this value is identical on every REST endpoint that serves the same order state, and never advances without a state change.
918342
The per-order self-trade-prevention override REQUESTED when this order was placed or replaced: CANCEL_MAKER, CANCEL_TAKER, CANCEL_BOTH, or SKIP. Absent when the order carried no override — including every order placed before the field was accepted on write — even though a wallet or platform default still governed its matching. This echoes the request, not the resolved default.
CANCEL_MAKER, CANCEL_TAKER, CANCEL_BOTH, SKIP "CANCEL_TAKER"
Present only on an order the engine placed for a take-profit or stop-loss trigger: the conditional order (GET /api/v1/orders/conditional/{conditionalOrderId}) that fired it. The reverse of ConditionalOrder.triggeredOrderId, so a close in order history can be attributed to the TP/SL that produced it without scanning the conditional list. Absent on every order a client placed itself, on TWAP slice children (those carry parentOrderId), and on triggered closes written before the field existed — there is no backfill, so a missing key on an older close means unknown, not placed by hand.
"019aefab-f665-854c-99dc-ced6db9014aa"
What placed the order: USER (the account itself, including its TP/SL triggers and TWAP slices), LIQUIDATION (the liquidation engine closing the account's position), ADL (an auto-deleveraging close), COPY (the copy trading engine mirroring a leader for one of the account's follows), or SYSTEM. Use it to label a row in order history: a liquidation is a reduce-only IOC limit order, so orderType, timeInForce and reduceOnly alone read the same as an order the user placed. The same labels as the origin key on the order WebSocket events. Present on every book order. Absent on a TWAP parent row and a conditional order row, which are the account's own instructions, not orders an engine placed. A plain string, not a closed set: a value added later must read as an origin this client does not know yet, not fail the response.
"LIQUIDATION"
Monaco taker fee rate fixed when this order was placed (re-fixed on replace), in basis points. The fee actually charged on a fill can be lower for a maker rebate: a rebate never exceeds the taker fee of the same fill. Absent for orders placed before rates were stored.
"4.5"
Monaco maker fee rate fixed when this order was placed (re-fixed on replace), in basis points. Negative means rebate. The rebate actually paid on a fill can be smaller: a rebate never exceeds the taker fee of the same fill. Absent for orders placed before rates were stored.
"-0.1"
The RFQ (block trade) this order filled in: set on RFQ orders only (origin RFQ). Read the RFQ itself with GetRfq.
Set on a maker's RFQ quote order only: the quote version's internal engine id the order rested for. It is not the public quoteId; the taker's order, which fills from several quotes, carries none.
Was this page helpful?

