SettleMint
Trading venue

Trade through sessions and auctions

Read a market's session state and calendar, collect orders during preopen, follow the live indicative auction price, and handle the uncross and the official close from an integration.

A market with a trading calendar moves through sessions: closed, preopen, then open, with the open happening through a call auction that clears once at a uniform price. Your integration reads the session state from the market, the schedule from the calendar, and the live indicative auction price from the book snapshot and the stream. This page covers those reads and what order placement does in each session state. For placement mechanics and signing, see Place and cancel orders.

Prerequisites

  • An API key with an active organization, or an authenticated session.
  • A market id from GET /api/v2/addons/trading-venue-markets. A private market you are not approved for answers not-found on every read on this page.

Read the session state

Every market read carries the session axis alongside status:

curl -X GET "https://your-platform.example.com/api/v2/addons/trading-venue-markets/0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"

The market body includes, among the part-1 fields:

{
  "mode": "continuous",
  "private": false,
  "auctionRemainder": "carry",
  "closeMethodology": "last-trade",
  "closeVwapWindowMs": null,
  "sessionState": "preopen",
  "timezone": "Europe/Brussels"
}
FieldMeaning
sessionStateclosed, preopen, open-continuous, or auction-collection. A market without a calendar is always open-continuous.
modecontinuous or auction-only. Immutable after listing.
auctionRemainderWhat happens to unfilled remainders after an uncross: carry re-rests them at original priority, cancel closes them. Fixed at creation.
closeMethodologyHow the official close is computed: last-trade or vwap over closeVwapWindowMs milliseconds before the close.
timezoneThe IANA timezone of the market's calendar; null without a calendar.

sessionState is orthogonal to status: a halted market keeps its session state, and a session transition never cancels anything.

Read the calendar

curl -X GET "https://your-platform.example.com/api/v2/addons/trading-venue-markets/0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c/calendar" \
  -H "X-Api-Key: sm_dalp_xxxxxxxxxxxxxxxx"
{
  "data": {
    "marketId": "0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c",
    "timezone": "Europe/Brussels",
    "uncrossWindowMs": 30000,
    "days": [{ "weekday": 1, "preopenTime": "08:00", "openTime": "09:00", "closeTime": "17:30" }],
    "exceptions": [{ "date": "2026-12-25", "closed": true }],
    "occurrences": [
      {
        "sessionDate": "2026-08-24",
        "preopenAt": "2026-08-24T06:00:00.000Z",
        "openAt": "2026-08-24T07:00:00.000Z",
        "closeAt": "2026-08-24T15:30:00.000Z",
        "appliedState": "none",
        "officialCloseTick": null
      }
    ]
  },
  "links": { "self": "/v2/addons/trading-venue-markets/0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c/calendar" }
}

days and exceptions are the operator's template in local wall-clock time; occurrences are the materialized sessions in UTC instants, chronological, with a bounded tail of recently closed sessions whose officialCloseTick carries the official close.

The openAt of an occurrence is the scheduled open, not the exact opening moment. The uncross happens at an undisclosed instant within uncrossWindowMs milliseconds after openAt; the drawn instant is never published, by design, so an integration cannot target the last order before the uncross. Treat the window end as the latest moment by which the market opens.

GET /api/v2/addons/trading-venue-market-calendars lists the calendars of every market you can see, paginated.

Place orders during preopen

During preopen and auction-collection, order placement works exactly as in continuous trading, including reservation: the platform accepts and reserves your signed order, and it rests for the uncross without matching. You can cancel throughout the collection window. During closed, intake rejects new orders with the session named as the reason; resting good-till-cancelled orders persist across sessions at their price-time priority.

Follow the indicative auction price

While the market collects orders, the book snapshot carries the live auction equilibrium:

{
  "sequence": "42",
  "bids": [{ "priceTick": "1010", "quantity": "5000000000000000000", "orderCount": 2 }],
  "asks": [{ "priceTick": "1008", "quantity": "3000000000000000000", "orderCount": 1 }],
  "indicativePriceTick": "1009",
  "indicativeQuantity": "3000000000000000000"
}

indicativePriceTick is the price the auction would clear at right now, and indicativeQuantity the base quantity that would match there. Both are computed over the self-trade-excluded book, so the published price is achievable. They are null outside preopen and auction collection, and null while nothing crosses.

The stream delivers the same value as a dedicated indicative event whenever the book changes, throttled to the venue's publication cadence:

event: message
data: {"type":"indicative","marketId":"0198f1c4-5e6f-7a80-bc13-4d5e6f7a8b9c","sequence":"57","priceTick":"1009","quantity":"3000000000000000000","asOf":"2026-08-24T06:59:58.000Z"}

Depth snapshots and diffs key on the engine log sequence, not on trades, so preopen book changes reach stream subscribers even though no trade prints. See Read market data and streams for the stream contract.

Handle the uncross

At the drawn instant, the engine uncrosses once. Every crossing fill executes at one uniform clearing price, selected to maximize executable volume, then minimize the residual imbalance, then stay closest to the reference price, and validated on-chain between each fill's own limits. From your integration's view:

  • Filled quantity appears in the blotter and in a trades stream batch at the clearing price.
  • The unmatched remainder of your order keeps working at its original price-time priority on a carry market, or closes on a cancel market.
  • sessionState moves to open-continuous on a continuous market, or back to closed on an auction-only one.

A stop order's trigger also accepts the auction clearing print; see Place stop orders.

Read the official close

After each close, the session occurrence carries officialCloseTick: the official closing price by the market's methodology, computed from settlement-confirmed trades excluding busted ones. The same value publishes to the platform's price-feed infrastructure as a new observation marked as the official close. A session without trades carries null and publishes nothing.

Errors

StatusWhat happenedWhat to do
404The market id does not name a market you can see. For a private market this is deliberate: not-found is the only answer shape for non-members.Use a market id from your own markets list.
422 on placementIntake rejected the order; during closed the reason names the session.Wait for the next session, or check the calendar occurrences.

On this page