curl --request GET \
--url https://api.rivermarkets.com/v1/complex-orders/{complex_order_id} \
--header 'X-River-Key-Id: <api-key>' \
--header 'X-River-Signature: <api-key>' \
--header 'X-River-Timestamp: <api-key>'import requests
url = "https://api.rivermarkets.com/v1/complex-orders/{complex_order_id}"
headers = {
"X-River-Key-Id": "<api-key>",
"X-River-Timestamp": "<api-key>",
"X-River-Signature": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-River-Key-Id': '<api-key>',
'X-River-Timestamp': '<api-key>',
'X-River-Signature': '<api-key>'
}
};
fetch('https://api.rivermarkets.com/v1/complex-orders/{complex_order_id}', 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.rivermarkets.com/v1/complex-orders/{complex_order_id}",
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-River-Key-Id: <api-key>",
"X-River-Signature: <api-key>",
"X-River-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"
"net/http"
"io"
)
func main() {
url := "https://api.rivermarkets.com/v1/complex-orders/{complex_order_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-River-Key-Id", "<api-key>")
req.Header.Add("X-River-Timestamp", "<api-key>")
req.Header.Add("X-River-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://api.rivermarkets.com/v1/complex-orders/{complex_order_id}")
.header("X-River-Key-Id", "<api-key>")
.header("X-River-Timestamp", "<api-key>")
.header("X-River-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rivermarkets.com/v1/complex-orders/{complex_order_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-River-Key-Id"] = '<api-key>'
request["X-River-Timestamp"] = '<api-key>'
request["X-River-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"complex_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"complex_order_type": "<string>",
"subaccount_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"complex_order_subtype": "<string>",
"river_id": 123,
"generic_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"conditional_order": {
"parent_river_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_complex_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"conditional_order_type": "<string>",
"stop_order_price": 123,
"trigger_stop_order_price": 123,
"trigger_order_type": "<string>",
"trigger_order_qty": 123,
"trigger_order_limit_price": 123,
"trigger_order_buy_flag": true,
"trigger_river_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trigger_complex_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"iceberg_order": {
"buy_flag": true,
"total_qty": 123,
"displayed_qty": 123,
"limit_price": 123,
"post_only": true,
"cancel_order_on_pause": true,
"reload_delay_s": 1800,
"executed_qty": 123,
"remaining_qty": 123,
"expiry_ts_utc": "2023-11-07T05:31:56Z",
"reject_reason": "<string>"
},
"peg_order": {
"buy_flag": true,
"total_qty": 123,
"min_price": 123,
"max_price": 123,
"post_only": true,
"executed_qty": 123,
"remaining_qty": 123,
"expiry_ts_utc": "2023-11-07T05:31:56Z",
"peg_min_stay_time_s": 123,
"max_qty_level": 123,
"reject_reason": "<string>"
},
"smart_taker_order": {
"buy_flag": true,
"total_qty": 123,
"limit_price": 123,
"min_qty": 123,
"executed_qty": 123,
"remaining_qty": 123,
"expiry_ts_utc": "2023-11-07T05:31:56Z",
"reject_reason": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get Complex Order
Get a single complex order by ID (conditional or iceberg).
curl --request GET \
--url https://api.rivermarkets.com/v1/complex-orders/{complex_order_id} \
--header 'X-River-Key-Id: <api-key>' \
--header 'X-River-Signature: <api-key>' \
--header 'X-River-Timestamp: <api-key>'import requests
url = "https://api.rivermarkets.com/v1/complex-orders/{complex_order_id}"
headers = {
"X-River-Key-Id": "<api-key>",
"X-River-Timestamp": "<api-key>",
"X-River-Signature": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'X-River-Key-Id': '<api-key>',
'X-River-Timestamp': '<api-key>',
'X-River-Signature': '<api-key>'
}
};
fetch('https://api.rivermarkets.com/v1/complex-orders/{complex_order_id}', 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.rivermarkets.com/v1/complex-orders/{complex_order_id}",
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-River-Key-Id: <api-key>",
"X-River-Signature: <api-key>",
"X-River-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"
"net/http"
"io"
)
func main() {
url := "https://api.rivermarkets.com/v1/complex-orders/{complex_order_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-River-Key-Id", "<api-key>")
req.Header.Add("X-River-Timestamp", "<api-key>")
req.Header.Add("X-River-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://api.rivermarkets.com/v1/complex-orders/{complex_order_id}")
.header("X-River-Key-Id", "<api-key>")
.header("X-River-Timestamp", "<api-key>")
.header("X-River-Signature", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rivermarkets.com/v1/complex-orders/{complex_order_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-River-Key-Id"] = '<api-key>'
request["X-River-Timestamp"] = '<api-key>'
request["X-River-Signature"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"complex_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"complex_order_type": "<string>",
"subaccount_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"status": "<string>",
"created_at": "<string>",
"updated_at": "<string>",
"complex_order_subtype": "<string>",
"river_id": 123,
"generic_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"conditional_order": {
"parent_river_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_complex_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"conditional_order_type": "<string>",
"stop_order_price": 123,
"trigger_stop_order_price": 123,
"trigger_order_type": "<string>",
"trigger_order_qty": 123,
"trigger_order_limit_price": 123,
"trigger_order_buy_flag": true,
"trigger_river_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"trigger_complex_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
},
"iceberg_order": {
"buy_flag": true,
"total_qty": 123,
"displayed_qty": 123,
"limit_price": 123,
"post_only": true,
"cancel_order_on_pause": true,
"reload_delay_s": 1800,
"executed_qty": 123,
"remaining_qty": 123,
"expiry_ts_utc": "2023-11-07T05:31:56Z",
"reject_reason": "<string>"
},
"peg_order": {
"buy_flag": true,
"total_qty": 123,
"min_price": 123,
"max_price": 123,
"post_only": true,
"executed_qty": 123,
"remaining_qty": 123,
"expiry_ts_utc": "2023-11-07T05:31:56Z",
"peg_min_stay_time_s": 123,
"max_qty_level": 123,
"reject_reason": "<string>"
},
"smart_taker_order": {
"buy_flag": true,
"total_qty": 123,
"limit_price": 123,
"min_qty": 123,
"executed_qty": 123,
"remaining_qty": 123,
"expiry_ts_utc": "2023-11-07T05:31:56Z",
"reject_reason": "<string>"
}
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
UUID of your API key (from Settings → API Keys).
Current unix seconds. Must be within 30s of server time.
Base64 Ed25519 signature over the canonical request: METHOD\nPATH\nSORTED_QUERY\nTIMESTAMP\nSHA256(body) hex. See /api-reference/authentication for the full recipe.
Path Parameters
Response
Successful Response
Schema for a complex order response (unified across all complex order types).
Unique complex order identifier
Complex order type: CONDITIONAL, TWAP, etc.
Subaccount the order belongs to
Order status (interpretation depends on complex_order_type)
Creation timestamp (UTC)
Last update timestamp (UTC)
Complex order subtype: TP, SL, STOP, etc.
Instrument ID
Generic asset basket ID
Conditional order detail
Show child attributes
Show child attributes
Iceberg order detail
Show child attributes
Show child attributes
Peg order detail
Show child attributes
Show child attributes
Smart-taker order detail
Show child attributes
Show child attributes

