Get Order Status Batch
curl --request POST \
--url https://api.limitless.exchange/orders/status/batch \
--header 'Content-Type: application/json' \
--header 'lmts-api-key: <api-key>' \
--data '
{
"items": [
{
"orderId": "4aa706dd-6c57-4f3c-945a-99818dfd95f1",
"clientOrderId": "client-order-001"
}
]
}
'import requests
url = "https://api.limitless.exchange/orders/status/batch"
payload = { "items": [
{
"orderId": "4aa706dd-6c57-4f3c-945a-99818dfd95f1",
"clientOrderId": "client-order-001"
}
] }
headers = {
"lmts-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'lmts-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
items: [
{
orderId: '4aa706dd-6c57-4f3c-945a-99818dfd95f1',
clientOrderId: 'client-order-001'
}
]
})
};
fetch('https://api.limitless.exchange/orders/status/batch', 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.limitless.exchange/orders/status/batch",
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([
'items' => [
[
'orderId' => '4aa706dd-6c57-4f3c-945a-99818dfd95f1',
'clientOrderId' => 'client-order-001'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"lmts-api-key: <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.limitless.exchange/orders/status/batch"
payload := strings.NewReader("{\n \"items\": [\n {\n \"orderId\": \"4aa706dd-6c57-4f3c-945a-99818dfd95f1\",\n \"clientOrderId\": \"client-order-001\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("lmts-api-key", "<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.limitless.exchange/orders/status/batch")
.header("lmts-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"orderId\": \"4aa706dd-6c57-4f3c-945a-99818dfd95f1\",\n \"clientOrderId\": \"client-order-001\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/orders/status/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["lmts-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"orderId\": \"4aa706dd-6c57-4f3c-945a-99818dfd95f1\",\n \"clientOrderId\": \"client-order-001\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"index": 0,
"status": "found",
"error": "Exactly one of orderId or clientOrderId is required",
"orderId": "4aa706dd-6c57-4f3c-945a-99818dfd95f1",
"clientOrderId": "client-order-001",
"data": {
"order": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"salt": "1778155025318314496",
"maker": "<string>",
"signer": "<string>",
"tokenId": "<string>",
"signatureType": 0,
"signature": "<string>",
"orderType": "GTC",
"side": 0,
"marketId": "<string>",
"ownerId": 123,
"createdAt": "2023-11-07T05:31:56Z",
"market": {
"id": 7348,
"slug": "btc-up-or-down-1-hour",
"title": "BTC Up or Down - Hourly",
"status": "FUNDED",
"yesPositionId": "11514974713064423461...",
"noPositionId": "14525308260861904048...",
"group": {
"id": 42,
"slug": "btc-price-markets",
"title": "BTC Price Markets"
}
},
"makerAmount": "5000000",
"takerAmount": "10000000",
"nonce": "0",
"owner": {
"id": 123,
"account": "<string>",
"client": "<string>",
"tradeWalletOption": "eoa",
"smartWallet": "<string>",
"points": 0,
"referredUsersCount": 0
},
"taker": "<string>",
"expiration": "2023-11-07T05:31:56Z",
"feeRateBps": 123,
"price": "0.75"
},
"execution": {
"feeRateBps": 0,
"effectiveFeeBps": 0,
"matched": true,
"settlementStatus": "UNMATCHED",
"totalsRaw": {
"contractsGross": "1000000",
"contractsFee": "1000",
"contractsNet": "999000",
"usdGross": "500000",
"usdFee": "500",
"usdNet": "499500"
},
"clientOrderId": "<string>",
"eligibleAt": "2023-11-07T05:31:56Z",
"tradeEventId": "<string>",
"txHash": "<string>"
},
"makerMatches": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"matchedSize": "1000000",
"fillPrice": "0.55",
"fillCost": "550000",
"orderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"maker": "<string>",
"price": "0.55",
"side": 0,
"tokenId": "<string>",
"owner": {
"id": 123,
"account": "<string>",
"client": "<string>",
"tradeWalletOption": "eoa",
"smartWallet": "<string>",
"username": "<string>",
"displayName": "<string>",
"pfpUrl": "<string>",
"socialUrl": "<string>",
"points": 0,
"referredUsersCount": 0
}
}
}
]
}
}
]
}{
"message": [
{
"field": "orderIds",
"message": "orderIds should not be empty"
}
],
"error": "Bad Request",
"statusCode": 400
}{
"message": "<string>",
"error": "<string>",
"statusCode": 123
}{
"message": "<string>",
"error": "<string>",
"statusCode": 123
}{
"message": "<string>"
}Trading
Get Order Status (Batch)
Fetches historical order statuses for multiple orders by internal order IDs and/or client-provided order IDs. Partner API tokens with delegated_signing scope may read a sub-account by sending the x-on-behalf-of: <profileId> header.
POST
/
orders
/
status
/
batch
Get Order Status Batch
curl --request POST \
--url https://api.limitless.exchange/orders/status/batch \
--header 'Content-Type: application/json' \
--header 'lmts-api-key: <api-key>' \
--data '
{
"items": [
{
"orderId": "4aa706dd-6c57-4f3c-945a-99818dfd95f1",
"clientOrderId": "client-order-001"
}
]
}
'import requests
url = "https://api.limitless.exchange/orders/status/batch"
payload = { "items": [
{
"orderId": "4aa706dd-6c57-4f3c-945a-99818dfd95f1",
"clientOrderId": "client-order-001"
}
] }
headers = {
"lmts-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'lmts-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
items: [
{
orderId: '4aa706dd-6c57-4f3c-945a-99818dfd95f1',
clientOrderId: 'client-order-001'
}
]
})
};
fetch('https://api.limitless.exchange/orders/status/batch', 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.limitless.exchange/orders/status/batch",
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([
'items' => [
[
'orderId' => '4aa706dd-6c57-4f3c-945a-99818dfd95f1',
'clientOrderId' => 'client-order-001'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"lmts-api-key: <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.limitless.exchange/orders/status/batch"
payload := strings.NewReader("{\n \"items\": [\n {\n \"orderId\": \"4aa706dd-6c57-4f3c-945a-99818dfd95f1\",\n \"clientOrderId\": \"client-order-001\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("lmts-api-key", "<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.limitless.exchange/orders/status/batch")
.header("lmts-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"orderId\": \"4aa706dd-6c57-4f3c-945a-99818dfd95f1\",\n \"clientOrderId\": \"client-order-001\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.limitless.exchange/orders/status/batch")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["lmts-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"orderId\": \"4aa706dd-6c57-4f3c-945a-99818dfd95f1\",\n \"clientOrderId\": \"client-order-001\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"results": [
{
"index": 0,
"status": "found",
"error": "Exactly one of orderId or clientOrderId is required",
"orderId": "4aa706dd-6c57-4f3c-945a-99818dfd95f1",
"clientOrderId": "client-order-001",
"data": {
"order": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"salt": "1778155025318314496",
"maker": "<string>",
"signer": "<string>",
"tokenId": "<string>",
"signatureType": 0,
"signature": "<string>",
"orderType": "GTC",
"side": 0,
"marketId": "<string>",
"ownerId": 123,
"createdAt": "2023-11-07T05:31:56Z",
"market": {
"id": 7348,
"slug": "btc-up-or-down-1-hour",
"title": "BTC Up or Down - Hourly",
"status": "FUNDED",
"yesPositionId": "11514974713064423461...",
"noPositionId": "14525308260861904048...",
"group": {
"id": 42,
"slug": "btc-price-markets",
"title": "BTC Price Markets"
}
},
"makerAmount": "5000000",
"takerAmount": "10000000",
"nonce": "0",
"owner": {
"id": 123,
"account": "<string>",
"client": "<string>",
"tradeWalletOption": "eoa",
"smartWallet": "<string>",
"points": 0,
"referredUsersCount": 0
},
"taker": "<string>",
"expiration": "2023-11-07T05:31:56Z",
"feeRateBps": 123,
"price": "0.75"
},
"execution": {
"feeRateBps": 0,
"effectiveFeeBps": 0,
"matched": true,
"settlementStatus": "UNMATCHED",
"totalsRaw": {
"contractsGross": "1000000",
"contractsFee": "1000",
"contractsNet": "999000",
"usdGross": "500000",
"usdFee": "500",
"usdNet": "499500"
},
"clientOrderId": "<string>",
"eligibleAt": "2023-11-07T05:31:56Z",
"tradeEventId": "<string>",
"txHash": "<string>"
},
"makerMatches": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"matchedSize": "1000000",
"fillPrice": "0.55",
"fillCost": "550000",
"orderId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"maker": "<string>",
"price": "0.55",
"side": 0,
"tokenId": "<string>",
"owner": {
"id": 123,
"account": "<string>",
"client": "<string>",
"tradeWalletOption": "eoa",
"smartWallet": "<string>",
"username": "<string>",
"displayName": "<string>",
"pfpUrl": "<string>",
"socialUrl": "<string>",
"points": 0,
"referredUsersCount": 0
}
}
}
]
}
}
]
}{
"message": [
{
"field": "orderIds",
"message": "orderIds should not be empty"
}
],
"error": "Bad Request",
"statusCode": 400
}{
"message": "<string>",
"error": "<string>",
"statusCode": 123
}{
"message": "<string>",
"error": "<string>",
"statusCode": 123
}{
"message": "<string>"
}Look up orders by either
orderId (internal) or clientOrderId (your identifier). Provide exactly one per item, not both.Authentication and delegation
Use HMAC authentication. Looking up your own orders does not require a specific token scope. To look up a managed sub-account, sendx-on-behalf-of: <profileId>. The HMAC token must carry delegated_signing, and the target profile must belong to the authenticated partner.
Validation behavior
The request accepts 1–50 items and preserves their input order inresults through the index field.
- An item with both identifiers, neither identifier, or a blank
clientOrderIdreturns an item-levelstatus: "invalid"; the rest of the batch is processed. - An unknown identifier, including an order owned by another profile, returns item-level
status: "not_found". - Malformed UUIDs or field types, client IDs longer than 128 characters, unknown fields, malformed nesting, and batch-size violations reject the whole request with
400 Bad Request.
status: "found", data directly contains order, optional makerMatches, and execution. There is no additional response envelope inside data.order.
Historical status reports UNMATCHED, DELAYED, MATCHED, MINED, CONFIRMED, RETRYING, or FAILED. It returns the latest known execution state; it does not include placement-time STP reasons, STP maker-cancel IDs, or a historical CANCELED state.
Errors
| Status | Meaning |
|---|---|
400 | Whole-request validation failed, the delegated header is malformed, or the authenticated profile cannot be resolved. |
401 | Authentication failed. |
403 | Delegation lacks delegated_signing or the target is not owned by the partner. |
500 | Historical status lookup failed unexpectedly. |
Authorizations
Scoped API token with HMAC-SHA256 signing. Requires three headers: lmts-api-key (token ID), lmts-timestamp (ISO-8601), lmts-signature (Base64-encoded HMAC). See Authentication docs for details.
Headers
Managed sub-account profile ID. Requires an HMAC token with delegated_signing and a partner relationship with the target.
Required range:
1 <= x <= 2147483647Example:
326
Body
application/json
List of status lookup queries
Required array length:
1 - 50 elementsShow child attributes
Show child attributes
Response
Batch order statuses
Show child attributes
Show child attributes