curl --request GET \
--url https://staging.apimonaco.xyz/api/v1/orders \
--header 'X-Monaco-Signature: <api-key>'import requests
url = "https://staging.apimonaco.xyz/api/v1/orders"
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://staging.apimonaco.xyz/api/v1/orders', 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://staging.apimonaco.xyz/api/v1/orders",
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://staging.apimonaco.xyz/api/v1/orders"
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://staging.apimonaco.xyz/api/v1/orders")
.header("X-Monaco-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.apimonaco.xyz/api/v1/orders")
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{
"orders": [
{
"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": "5",
"monacoTakerFee": "10",
"monacoMakerRebate": "-2",
"totalTakerFees": "2.63",
"takerTotalPayment": "17502.63",
"makerTotalReceipt": "17496.50",
"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,
"twap": {
"twapOrderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tradingPairId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"side": "BUY",
"tradingMode": "SPOT",
"totalQuantity": "10",
"executedQuantity": "4.5",
"executedNotional": "157500.00",
"averageFillPrice": "35000.00",
"progress": "0.45",
"limitPrice": "35000.00",
"slippageToleranceBps": 100,
"reduceOnly": false,
"marginAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"riskBucketId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leverage": "5",
"useMasterBalance": false,
"strategyKey": "<string>",
"clientTwapId": "<string>",
"randomize": true,
"startTime": "2026-08-01T10:00:00Z",
"endTime": "2026-08-01T11:00:00Z",
"intervalMs": 30000,
"plannedSlices": 120,
"slicesPlaced": 54,
"slicesSkipped": 2,
"nextSliceAt": "2026-08-01T10:27:30Z",
"state": "ACTIVE",
"terminalReason": "<string>",
"createdAt": "2026-08-01T09:59:58Z",
"updatedAt": "<string>",
"cancelledAt": "<string>",
"completedAt": "<string>",
"executionStyle": "TAKER",
"triggerPrice": "<string>",
"triggerDirection": "<string>",
"conditionalExpiry": "<string>",
"triggeredAt": "<string>"
},
"conditional": {
"conditionalOrderId": "<string>",
"tradingPairId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"marginAccountId": "<string>",
"positionId": "<string>",
"linkedGroupId": "<string>",
"conditionType": "<string>",
"triggerSource": "<string>",
"triggerPrice": "<string>",
"side": "<string>",
"positionSide": "<string>",
"orderType": "<string>",
"limitPrice": "<string>",
"quantity": "<string>",
"slippageToleranceBps": 123,
"reduceOnly": true,
"timeInForce": "<string>",
"state": "<string>",
"triggeredOrderId": "<string>",
"triggeredAt": "<string>",
"cancelledAt": "<string>",
"expiresAt": "<string>",
"failureReason": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"parentOrderId": "<string>",
"associationType": "<string>",
"activatedAt": "<string>",
"version": 918342,
"triggeredOrder": {
"orderId": "01a0887b-8e7c-7612-983f-b7ee89c2cbbf",
"status": "SETTLED",
"filledQuantity": "3090659.3",
"averageFillPrice": "0.145611",
"totalTakerFees": "202.52",
"filledAt": "2026-09-09T23:23:13.936682Z",
"terminalReason": "SYSTEM"
},
"trailBps": 123,
"activationPrice": "<string>",
"watermarkPrice": "<string>",
"trailArmedAt": "<string>"
},
"version": 918342,
"selfTradePreventionMode": "CANCEL_TAKER",
"conditionalOrderId": "019aefab-f665-854c-99dc-ced6db9014aa"
}
],
"total": 150,
"page": 1,
"pageSize": 20,
"totalPages": 8,
"nextPageToken": "<string>",
"totalCapped": false
}Get user orders
Get user orders.
Get orders for the authenticated user with pagination and optional filtering by status and trading pair.
curl --request GET \
--url https://staging.apimonaco.xyz/api/v1/orders \
--header 'X-Monaco-Signature: <api-key>'import requests
url = "https://staging.apimonaco.xyz/api/v1/orders"
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://staging.apimonaco.xyz/api/v1/orders', 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://staging.apimonaco.xyz/api/v1/orders",
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://staging.apimonaco.xyz/api/v1/orders"
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://staging.apimonaco.xyz/api/v1/orders")
.header("X-Monaco-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://staging.apimonaco.xyz/api/v1/orders")
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{
"orders": [
{
"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": "5",
"monacoTakerFee": "10",
"monacoMakerRebate": "-2",
"totalTakerFees": "2.63",
"takerTotalPayment": "17502.63",
"makerTotalReceipt": "17496.50",
"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,
"twap": {
"twapOrderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"tradingPairId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"side": "BUY",
"tradingMode": "SPOT",
"totalQuantity": "10",
"executedQuantity": "4.5",
"executedNotional": "157500.00",
"averageFillPrice": "35000.00",
"progress": "0.45",
"limitPrice": "35000.00",
"slippageToleranceBps": 100,
"reduceOnly": false,
"marginAccountId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"riskBucketId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"leverage": "5",
"useMasterBalance": false,
"strategyKey": "<string>",
"clientTwapId": "<string>",
"randomize": true,
"startTime": "2026-08-01T10:00:00Z",
"endTime": "2026-08-01T11:00:00Z",
"intervalMs": 30000,
"plannedSlices": 120,
"slicesPlaced": 54,
"slicesSkipped": 2,
"nextSliceAt": "2026-08-01T10:27:30Z",
"state": "ACTIVE",
"terminalReason": "<string>",
"createdAt": "2026-08-01T09:59:58Z",
"updatedAt": "<string>",
"cancelledAt": "<string>",
"completedAt": "<string>",
"executionStyle": "TAKER",
"triggerPrice": "<string>",
"triggerDirection": "<string>",
"conditionalExpiry": "<string>",
"triggeredAt": "<string>"
},
"conditional": {
"conditionalOrderId": "<string>",
"tradingPairId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"marginAccountId": "<string>",
"positionId": "<string>",
"linkedGroupId": "<string>",
"conditionType": "<string>",
"triggerSource": "<string>",
"triggerPrice": "<string>",
"side": "<string>",
"positionSide": "<string>",
"orderType": "<string>",
"limitPrice": "<string>",
"quantity": "<string>",
"slippageToleranceBps": 123,
"reduceOnly": true,
"timeInForce": "<string>",
"state": "<string>",
"triggeredOrderId": "<string>",
"triggeredAt": "<string>",
"cancelledAt": "<string>",
"expiresAt": "<string>",
"failureReason": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>",
"parentOrderId": "<string>",
"associationType": "<string>",
"activatedAt": "<string>",
"version": 918342,
"triggeredOrder": {
"orderId": "01a0887b-8e7c-7612-983f-b7ee89c2cbbf",
"status": "SETTLED",
"filledQuantity": "3090659.3",
"averageFillPrice": "0.145611",
"totalTakerFees": "202.52",
"filledAt": "2026-09-09T23:23:13.936682Z",
"terminalReason": "SYSTEM"
},
"trailBps": 123,
"activationPrice": "<string>",
"watermarkPrice": "<string>",
"trailArmedAt": "<string>"
},
"version": 918342,
"selfTradePreventionMode": "CANCEL_TAKER",
"conditionalOrderId": "019aefab-f665-854c-99dc-ced6db9014aa"
}
],
"total": 150,
"page": 1,
"pageSize": 20,
"totalPages": 8,
"nextPageToken": "<string>",
"totalCapped": false
}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.
Query Parameters
Deprecated: page number for legacy offset pagination (1-indexed). Use pageToken cursor pagination instead.
1 <= x <= 10000Items per page (max 100 in page-number mode; up to 1000 when pageToken is present)
1 <= x <= 1000Order status (single value or comma-separated list)
1Trading pair identifier (UUID)
1Trading mode
SPOT, MARGIN 1Sort direction for createdAt
ASC, DESC 1Pagination cursor with three distinct states:
- Omitted: legacy page-number pagination via
page, limited to recent history once the archive window is enabled. - Empty string (""): start a cursor walk with no prior position, from
the newest row (or the oldest, when
orderByis ASC). - Non-empty: an opaque cursor from a previous response's
next_page_token; results resume immediately after that position.
In either cursor-walk state (empty or non-empty), page is ignored (it
comes back as 0), but total and total_pages ARE populated — bounded by
the server count ceiling, see total_capped. Results cover full order
history — hot and archived rows merged — unlike page-number mode, which
only ever sees recent history. Clients that need complete order history
must use the cursor form (start with an empty string, then follow
next_page_token) rather than page. Filters and orderBy must match the
request that produced the token.
Response
OK
Show child attributes
Show child attributes
Total number of orders matching the filter, populated in both pagination modes; bounded by the server ceiling — a lower bound when totalCapped is true.
150
Deprecated: current page number (legacy offset mode only; 0 in cursor mode)
1
Items per page
20
Total number of pages at this pageSize, populated in both pagination modes; bounded by the server ceiling — a lower bound when totalCapped is true.
8
Cursor for the next page. Empty on every page-number (legacy) response —
page-number mode never mints a token, full page or not, since resuming
a client from a legacy-minted position could silently strand archived
history newer than wherever that page happened to end. To walk full
history, start a cursor-mode request with page_token present but
empty (""); from then on the token is present whenever that page
returned any rows (AIP-158 "maybe more" semantics), not only when the
page is exactly full. Empty only when a cursor-mode page returned zero
rows, which is the sole proof the walk is exhausted; a non-empty token
does not guarantee further results, so keep following it until a
response returns zero rows and an empty token. The two modes never
bridge: a page-number response's empty token is not "done," it simply
means page-number mode does not participate in cursor continuation.
True when more than the server ceiling of orders matched, so the count stopped at the ceiling and total/totalPages are a lower bound (more than total exist). False when total is the exact count, including exactly the ceiling.
false
Was this page helpful?

