Skip to main content
GET
/
v2
/
accounts
/
{id}
/
orders
/
history
List order history (v2)
curl --request GET \
  --url https://api.aries.com/v2/accounts/{id}/orders/history \
  --header 'Authorization: Bearer <token>'
{
  "orders": [
    {
      "clOrdId": "clord-20260310-msft-001",
      "ordId": "ord-hist-0001",
      "accountId": "TEST-ACCOUNT-001",
      "clientId": "demo-oauth-client",
      "symbol": "MSFT",
      "side": "SELL",
      "type": "LIMIT",
      "timeInForce": "DAY",
      "qty": "10",
      "price": "410.00",
      "stopPrice": "",
      "ordStatus": "FILLED",
      "cumQty": "10",
      "leavesQty": "0",
      "avgPrice": "410.25",
      "currency": "USD",
      "exDestination": "MNGD",
      "text": "",
      "ordRejReason": "",
      "securityType": "CS",
      "category": "SINGLE_LEG",
      "legs": [],
      "createdAt": "2026-03-10T15:00:00Z",
      "updatedAt": "2026-03-10T15:00:12Z"
    }
  ],
  "nextCursor": 0
}

Prerequisites

You must pass from (RFC 3339 with timezone). If you omit to, the service uses the current time truncated to the minute (UTC) and caps the span at 90 days from from.

Pagination and sorting

Use the same cursor / nextCursor contract as List active orders (v2): start with cursor=0, then pass the last nextCursor until it returns 0. Sorting is by order_created_at; set order_by to asc or desc (default desc).

Response envelope

Same contract as List active orders (v2): orders (never null) and nextCursor are always present. Each order uses the v2 domain shape with the same required core fields (clOrdId, accountId, symbol, decimal quantity/price strings, timestamps). History excludes SUPERSEDED status and rows with failed_flag = true server-side.

Demo response

Each order matches the v2 domain shape so it aligns with WebSocket and cache-backed reads.
{
  "orders": [
    {
      "clOrdId": "clord-20260310-msft-001",
      "ordId": "ord-hist-0001",
      "accountId": "TEST-ACCOUNT-001",
      "clientId": "demo-oauth-client",
      "symbol": "MSFT",
      "side": "SELL",
      "type": "LIMIT",
      "timeInForce": "DAY",
      "qty": "10",
      "price": "410.00",
      "stopPrice": "",
      "ordStatus": "FILLED",
      "cumQty": "10",
      "leavesQty": "0",
      "avgPrice": "410.25",
      "currency": "USD",
      "exDestination": "NASDAQ",
      "text": "",
      "ordRejReason": "",
      "securityType": "EQUITY",
      "category": "SINGLE_LEG",
      "legs": [],
      "createdAt": "2026-03-10T15:00:00Z",
      "updatedAt": "2026-03-10T15:00:12Z"
    }
  ],
  "nextCursor": 0
}

Authorizations

Authorization
string
header
required

OAuth2 Bearer token: obtain an access token from the token endpoint and send it in the Authorization header.

Path Parameters

id
string
required

Account ID whose historical orders you want to read.

Query Parameters

from
string<date-time>
required

Start of the history window, inclusive. Enter an RFC 3339 timestamp with timezone, for example 2026-04-01T00:00:00Z.

to
string<date-time>

End of the history window, inclusive. Omit it to use the current time. The total range from from cannot exceed 90 days.

order_by
enum<string>
default:desc

Sort direction by order_created_at. Defaults to desc (newest first). Use asc for chronological exports.

Available options:
asc,
desc
exclude_today
boolean
default:false

Set to true when you want historical orders only and do not want today's activity duplicated with the active-orders endpoint.

limit
integer
default:50

Maximum number of historical orders to return in this page. Default is 50; maximum is 500.

Required range: 1 <= x <= 500
cursor
integer<int64>
default:0

Opaque pagination cursor for the database history walk. Send 0 (or omit) for the first page; pass the previous nextCursor until it returns 0.

Response

Page of historical orders

Paginated v2 orders response from GET /v2/accounts/{id}/orders and GET /v2/accounts/{id}/orders/history. Both fields are always present; orders may be an empty array when there are no matches.

orders
object[]

Page of orders in v2 domain shape (TradeOrderV2). Never null — use an empty array when there are no results.

nextCursor
integer<int64>

Opaque pagination cursor. Pass as cursor on the next request. Value 0 means the walk is exhausted.