curl --request GET \
--url https://api.rivermarkets.com/v1/orders/{order_id} \
--header 'X-River-Key-Id: <api-key>' \
--header 'X-River-Org-Id: <api-key>' \
--header 'X-River-Signature: <api-key>' \
--header 'X-River-Timestamp: <api-key>'import requests
url = "https://api.rivermarkets.com/v1/orders/{order_id}"
headers = {
"X-River-Key-Id": "<api-key>",
"X-River-Timestamp": "<api-key>",
"X-River-Signature": "<api-key>",
"X-River-Org-Id": "<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>',
'X-River-Org-Id': '<api-key>'
}
};
fetch('https://api.rivermarkets.com/v1/orders/{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/orders/{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-Org-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/orders/{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>")
req.Header.Add("X-River-Org-Id", "<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/orders/{order_id}")
.header("X-River-Key-Id", "<api-key>")
.header("X-River-Timestamp", "<api-key>")
.header("X-River-Signature", "<api-key>")
.header("X-River-Org-Id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rivermarkets.com/v1/orders/{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>'
request["X-River-Org-Id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"river_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_type": "<string>",
"time_in_force": "<string>",
"qty": 123,
"status": "<string>",
"subaccount_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "<string>",
"updated_at": "<string>",
"complex_order_ids": {},
"price": 123,
"buy_flag": true,
"post_only": false,
"cancel_order_on_pause": true,
"river_id": 123,
"generic_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expiry_ts_utc": "<string>",
"traded_qty": 0,
"average_price": 123,
"fees_paid": 0,
"reject_reason": "<string>",
"parent_iceberg_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_peg_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_smart_taker_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_generic_peg_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fills": []
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Get Order
Get a single order by ID with its fills.
Returns complete order details including execution history.
Use Cases:
- Track order progress and execution quality
- Reconcile fills for accounting
- Debug rejected or partially filled orders
curl --request GET \
--url https://api.rivermarkets.com/v1/orders/{order_id} \
--header 'X-River-Key-Id: <api-key>' \
--header 'X-River-Org-Id: <api-key>' \
--header 'X-River-Signature: <api-key>' \
--header 'X-River-Timestamp: <api-key>'import requests
url = "https://api.rivermarkets.com/v1/orders/{order_id}"
headers = {
"X-River-Key-Id": "<api-key>",
"X-River-Timestamp": "<api-key>",
"X-River-Signature": "<api-key>",
"X-River-Org-Id": "<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>',
'X-River-Org-Id': '<api-key>'
}
};
fetch('https://api.rivermarkets.com/v1/orders/{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/orders/{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-Org-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/orders/{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>")
req.Header.Add("X-River-Org-Id", "<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/orders/{order_id}")
.header("X-River-Key-Id", "<api-key>")
.header("X-River-Timestamp", "<api-key>")
.header("X-River-Signature", "<api-key>")
.header("X-River-Org-Id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rivermarkets.com/v1/orders/{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>'
request["X-River-Org-Id"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"river_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_type": "<string>",
"time_in_force": "<string>",
"qty": 123,
"status": "<string>",
"subaccount_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"created_at": "<string>",
"updated_at": "<string>",
"complex_order_ids": {},
"price": 123,
"buy_flag": true,
"post_only": false,
"cancel_order_on_pause": true,
"river_id": 123,
"generic_asset_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"expiry_ts_utc": "<string>",
"traded_qty": 0,
"average_price": 123,
"fees_paid": 0,
"reject_reason": "<string>",
"parent_iceberg_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_peg_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_smart_taker_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"parent_generic_peg_order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"fills": []
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
UUID of your API key (from Settings → API Keys).
Current unix milliseconds (unix seconds also accepted). 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.
Your organization id (from GET /v1/rate-limit). Signed requests are rate limited per organization on this header; a missing or wrong value is refused with 403.
Path Parameters
Response
Successful Response
Schema for order detail response including fills.
Unique order identifier
Order type: LIMIT or MARKET
Time in force: FOK, GTC, GTD, or IOC
Original order quantity
Order status. Live: PENDING_SUBMISSION, PROCESSING, RESTING. Terminal: EXECUTED, PARTIALLY_FILLED (cancelled with some fills), CANCELLED, REJECTED.
Subaccount the order belongs to
Order creation timestamp (UTC)
Last update timestamp (UTC)
List of complex river orders id
Show child attributes
Show child attributes
Limit price (null for market orders)
Order direction: true=buy, false=sell. Null on a two-sided RFQ_MAKER quote until the taker picks a side, at which point the executed side is stamped.
Whether the order is post-only (maker-only)
Kalshi only: whether the exchange cancels the resting order during a trading pause
Instrument ID
Generic asset basket UUID
Expiry timestamp in UTC for GTD orders
Total quantity filled
Volume-weighted average fill price
Total fees paid across all fills
Reason for rejection (if status is REJECTED)
If this order is a tranche of an iceberg parent, the parent's id; otherwise null.
If this order is the resting child of a peg parent, the parent's id; otherwise null.
If this order is an IOC child of a smart-taker parent, the parent's id; otherwise null.
If this order rests under a leg of a generic-asset peg, that peg's id; otherwise null.
List of executions (fills) for this order
Show child attributes
Show child attributes

