SettleMint
Trading venue

Trading venue flows

Read venue markets, calendars, and market data, place signed orders and quoting batches, manage watchlists, stream live depth, and administer markets, bands, participants, busts, and desk limits through the DALP v2 API.

Trading venue flows

The Trading Venue exposes a v2 route group for orderbook trading: market, calendar, and market-data reads, a live stream, signed-order placement and cancellation, quoting batches, participant-scoped reads, and personal watchlists. Venue-operator administration covers markets, bands, private-market participants, trade busts, and desk limits. Every operation requires a session or API key with an active organization. Chain-writing mutations answer 202 with a status URL; poll it as described in Transaction tracking.

Use this page to map the route surface and its semantics. Use the API Reference for exact request and response fields, and the generated SDK operations named below from @settlemint/dalp-sdk/operations.

Route surface

Market, calendar, and market-data reads

Reads are scoped to the active organization and safe to repeat. A private market answers every read as not-found for callers without an approved wallet, exactly as if the market did not exist.

RouteSDK operationReturns
GET /api/v2/addons/trading-venuesv2AddonsTradingVenueVenuesListThe Trading Venue contracts serving the organization's network.
GET /api/v2/addons/trading-venue-marketsv2AddonsTradingVenueMarketsListEvery visible market, including halted and pending listings.
GET /api/v2/addons/trading-venue-markets/{marketId}v2AddonsTradingVenueMarketsReadOne market with its trading grid, fee schedule, protection band, trading mode, visibility, session state, and close methodology.
GET /api/v2/addons/trading-venue-markets/{marketId}/bookv2AddonsTradingVenueBookA sequence-numbered depth snapshot with the indicative auction price during preopen and auction collection.
GET /api/v2/addons/trading-venue-markets/{marketId}/tradesv2AddonsTradingVenueTradesMost recent trades, newest first, capped by limit (1 to 500, default 100), each with its settled or busted status.
GET /api/v2/addons/trading-venue-markets/{marketId}/candlesv2AddonsTradingVenueCandlesOHLC candles with volume for one interval: 1m, 5m, 15m, 1h, 4h, or 1d. Busted trades are excluded.
GET /api/v2/addons/trading-venue-markets/{marketId}/tickerv2AddonsTradingVenueTickerTrailing 24-hour statistics: last price, open, high, low, volume, trade count. Busted trades are excluded.
GET /api/v2/addons/trading-venue-markets/{marketId}/calendarv2AddonsTradingVenueCalendarReadThe market's trading calendar: timezone, weekly template, exceptions, the published uncross window width, and materialized session occurrences with official closes.
GET /api/v2/addons/trading-venue-market-calendarsv2AddonsTradingVenueCalendarsListA paginated list of every visible market's calendar summary: timezone, mode, session state, status.
GET /api/v2/addons/trading-venue-markets/{marketId}/streamv2AddonsTradingVenueStreamServer-sent events: depth snapshots, diffs, trade batches, indicative auction quotes, heartbeats.

Amounts and prices travel as integer strings in token base units and price ticks. Market status is pending, live, halted, or delisted; sessionState is the orthogonal session axis: closed, preopen, open-continuous, or auction-collection. Calendar occurrences publish scheduled boundaries only: the randomized uncross instant inside the published window is never returned by any route or stream.

The stream's first event is a full sequence-numbered snapshot; later events carry diffs keyed by their sequence span. Snapshots and diffs key on the engine log sequence, not the trade sequence, so preopen book changes reach subscribers without a trade. A sequence gap means the client must reconnect for a fresh snapshot instead of rendering stale depth. The stream is consumed same-origin by the Console; a cross-origin request answers 404. Server-to-server integrations poll the book snapshot and order results by sequence.

Participant reads

These reads are additionally scoped to the selected participant.

RouteSDK operationReturns
GET /api/v2/addons/trading-venue-ordersv2AddonsTradingVenueOrdersListOrders placed by wallets the participant controls, filterable by marketId and status.
GET /api/v2/addons/trading-venue-blotterv2AddonsTradingVenueBlotterThe trade blotter: fills newest first, with the participant's side, fee, and settled or busted status per fill.
GET /api/v2/addons/trading-venue-reservationsv2AddonsTradingVenueReservationsListReserved balances backing the participant's open orders.

Order status is pending_reservation, armed, working, partially_filled, filled, cancelled, expired, rejected, or pruned. armed is a dormant stop order holding no reservation. Closed orders carry a closeReason naming why the engine closed them, band and threshold rejections included.

Order mutations

RouteSDK operationEffect
POST /api/v2/addons/trading-venue-ordersv2AddonsTradingVenueOrdersPlaceAccepts an EIP-712-signed order after eligibility, desk-limit, trading-authorization, fee-cap, band, and threshold checks, then queues the reserved-balance transaction. With triggerTick, arms the order as a dormant stop instead: nothing is reserved until the trigger print confirms.
POST /api/v2/addons/trading-venue-order-batchesv2AddonsTradingVenueOrdersBatchApplies a quoting batch of place, replace, and cancel operations on one market with per-order failure isolation. Reservation changes settle as net deltas: a flat batch emits zero chain transactions. Answers synchronously with per-operation results.
DELETE /api/v2/addons/trading-venue-orders/{orderId}v2AddonsTradingVenueOrdersCancelQueues the on-chain cancellation so the signed order can never fill, and marks it cancelled on the book. Cancels dormant stops too.

An order becomes matchable only after its reservation confirms. Poll the 202 status URL before you treat an order as placed or cancelled on chain. The signing payload, typed-data domain, and field semantics are documented in Place and cancel orders; batch semantics in Quote in bulk; the stop contract in Place stop orders.

Watchlists

Watchlists are personal, scoped to the authenticated user, and never operator-gated. Entry reads respect private-market visibility: an invisible market is silently absent.

RouteSDK operationEffect
GET /api/v2/addons/trading-venue-watchlistsv2AddonsTradingVenueWatchlistsListLists your watchlists, paginated.
POST /api/v2/addons/trading-venue-watchlistsv2AddonsTradingVenueWatchlistsCreateCreates a named watchlist.
GET /api/v2/addons/trading-venue-watchlists/{watchlistId}v2AddonsTradingVenueWatchlistsReadOne watchlist with its currently visible entries.
PUT /api/v2/addons/trading-venue-watchlists/{watchlistId}v2AddonsTradingVenueWatchlistsRenameRenames the watchlist.
DELETE /api/v2/addons/trading-venue-watchlists/{watchlistId}v2AddonsTradingVenueWatchlistsDeleteDeletes the watchlist and its entries.
POST /api/v2/addons/trading-venue-watchlists/{watchlistId}/entriesv2AddonsTradingVenueWatchlistEntriesAddAdds a visible market to the watchlist; re-adding is a no-op.
DELETE /api/v2/addons/trading-venue-watchlists/{watchlistId}/entries/{marketId}v2AddonsTradingVenueWatchlistEntriesRemoveRemoves a watched market; removing an unwatched one is a no-op.

Another user's watchlist id answers not-found on every one of these routes.

Market administration

These routes require the venue-operator platform role: platform administrators and organization owners. The venue contract enforces its own on-chain operator role check as well.

RouteSDK operationEffect
POST /api/v2/addons/trading-venuesv2AddonsTradingVenueVenuesCreateQueues venue-contract creation from the system's registered Trading Venue factory.
POST /api/v2/addons/trading-venue-marketsv2AddonsTradingVenueMarketsCreateQueues on-chain market creation, trading mode, visibility, and auction-remainder configuration included, and records the listing as pending until the listing ceremony completes.
PUT /api/v2/addons/trading-venue-markets/{marketId}v2AddonsTradingVenueMarketsUpdateUpdates off-chain market settings such as the close methodology. Rejects any change to the trading mode or visibility: both are immutable after listing.
POST /api/v2/addons/trading-venue-market-haltsv2AddonsTradingVenueMarketsHaltStops matching and new order acceptance immediately and queues the on-chain halt. Resting orders stay; submitted batches complete.
DELETE /api/v2/addons/trading-venue-market-haltsv2AddonsTradingVenueMarketsResumeReopens matching and order acceptance and queues the on-chain resume.
POST /api/v2/addons/trading-venue-market-delistingsv2AddonsTradingVenueMarketsDelistPermanently closes the market: resting orders and dormant stops cancelled, reserved balances released. Cannot be reversed.
PUT /api/v2/addons/trading-venue-market-fee-schedulesv2AddonsTradingVenueMarketsSetFeesSets the maker and taker fees in basis points of the quote leg. Resting orders whose signed fee cap falls below the new schedule are pruned.

Bands and thresholds

Band and threshold writes are off-chain configuration: no queue, no chain transaction, effective at intake immediately.

RouteSDK operationEffect
GET /api/v2/addons/trading-venue-markets/{marketId}/bandsv2AddonsTradingVenueBandsReadThe market's static band, its session anchor, the dynamic band, and the maximum quantity and notional thresholds.
PUT /api/v2/addons/trading-venue-markets/{marketId}/bandsv2AddonsTradingVenueBandsPutFull-replacement write of bands and thresholds; null deactivates a control. Resting orders are untouched.
GET /api/v2/addons/trading-venue-markets/{marketId}/band-previewv2AddonsTradingVenueBandsPreviewCounts the resting orders that would fall outside candidate band and threshold values.
POST /api/v2/addons/trading-venue-market-band-prunesv2AddonsTradingVenueBandsPruneExplicitly mass-cancels the resting orders outside the current settings and releases their reservations, reporting the pruned order ids.

Private-market participants

RouteSDK operationEffect
GET /api/v2/addons/trading-venue-markets/{marketId}/participantsv2AddonsTradingVenueParticipantsListThe market's approved participant wallets, paginated.
POST /api/v2/addons/trading-venue-markets/{marketId}/participantsv2AddonsTradingVenueParticipantsAddApproves a wallet; the market becomes visible to the participant controlling it.
DELETE /api/v2/addons/trading-venue-markets/{marketId}/participants/{walletAddress}v2AddonsTradingVenueParticipantsRemoveRevokes a wallet, prunes its resting orders and dormant stops, releases its reservations, and reports the pruned order ids.

Calendars

RouteSDK operationEffect
PUT /api/v2/addons/trading-venue-markets/{marketId}/calendarv2AddonsTradingVenueCalendarPutFull-replacement write of the market's trading calendar: timezone, weekly template, and dated exceptions. Overrides are calendar edits effective from now.

Trade busts

Busting follows maker-checker: a proposal, then a decision by a distinct operator. The pre-check runs at proposal and again at approval; a refusal creates or executes nothing.

RouteSDK operationEffect
GET /api/v2/addons/trading-venue-trade-bustsv2AddonsTradingVenueTradeBustsListBust proposals and their states, paginated: proposed, approved, rejected, executed, or failed.
POST /api/v2/addons/trading-venue-trade-bustsv2AddonsTradingVenueTradeBustsProposeRuns the pre-check (settlement confirmation, order closure, bust window, counterparty balances, compliance path) and records the proposal. A failing pre-check refuses with the reason and records nothing.
POST /api/v2/addons/trading-venue-trade-bust-approvalsv2AddonsTradingVenueTradeBustsApproveApproves as a distinct operator, re-runs the full pre-check, and executes the compensating reversal with the fee refund atomically.
POST /api/v2/addons/trading-venue-trade-bust-rejectionsv2AddonsTradingVenueTradeBustsRejectRejects the proposal as a distinct operator; the decision is audited.

Desk limits

RouteSDK operationEffect
GET /api/v2/addons/trading-venue-desk-limitsv2AddonsTradingVenueDeskLimitsListDesk trading-limit records and their maker-checker states, paginated.
POST /api/v2/addons/trading-venue-desk-limitsv2AddonsTradingVenueDeskLimitsProposeProposes a desk limit for a trader wallet. Only approved records enforce at intake.
POST /api/v2/addons/trading-venue-desk-limit-decisionsv2AddonsTradingVenueDeskLimitsDecideApproves or rejects a proposal as a distinct operator.

Error handling

Every error response carries a stable DALP-#### id and the error name; branch on them and see the error index for the full catalog with per-id guidance. The venue's own errors:

ErrorHTTPWhenCaller response
ORDER_INTAKE_REJECTED422An intake check failed: eligibility, desk limits, trading authorization, fee cap, expiry, signature, submission rate, session state, participant list, a price band, or a size threshold. Nothing was accepted.Correct the named check. Do not retry unchanged.
RESERVATION_BUDGET_EXCEEDED409The wallet's cumulative reserved balance plus this order would exceed its spendable balance.Cancel resting orders or submit a smaller order.
RESERVATION_FAILED503The reserved-balance transaction reverted or timed out; the order was rejected and compensated.Check the wallet balance and the venue's custodian role, then submit a new order.
TRADING_VENUE_MARKET_NOT_FOUND404The market id does not name a market the caller can see in the active organization. Private markets answer this shape for non-members.Use a market id from the markets list.
TRADING_VENUE_ORDER_NOT_FOUND404The order id does not name an order the selected participant controls.Use an order id from the working-orders list.
TRADING_VENUE_ORDER_NOT_OPEN409The order already reached a terminal status; nothing was cancelled.Refresh the working-orders list before retrying.
TRADING_VENUE_OPERATOR_REQUIRED403The caller lacks the venue-operator role an administration route requires.Sign in as a platform administrator or organization owner.
MARKET_STATE_INVALID409The requested transition or setting is not valid for the market's current state, immutable-field changes included.Check the market status and issue a valid request.
MARKET_STREAM_NOT_FOUND404The stream request named a market this deployment does not serve, or came from another origin.Open the stream same-origin against a live market id.
TRADING_VENUE_NOT_FOUND404The venue address does not name a venue of the active organization.Use a venue address from the venues list.
TRADING_VENUE_FACTORY_UNAVAILABLE409No indexed Trading Venue factory exists yet for the system.Wait for addon indexing, or register the addon factory first.
TRADING_VENUE_TRADE_NOT_FOUND404The trade id does not name a trade on a market of the active organization.Use a trade id from the market's trades list.
TRADE_BUST_REFUSED422The bust pre-check failed at proposal or approval: settlement confirmation, order closure, the bust window, counterparty balances, or compliance path. Nothing was recorded or executed.Resolve the named reason, then propose again.
TRADE_BUST_APPROVAL_INVALID409The decision violated maker-checker: the proposer decided their own record, or the record was already decided.Have a distinct operator decide, or refresh the approvals list.
TRADE_BUST_EXECUTION_FAILED503The compensating reversal did not complete; no reversal leg remains applied and the record is marked failed.Resolve the underlying cause and propose the bust again.
TRADING_VENUE_APPROVAL_NOT_FOUND404The approval id does not name a maker-checker record in the active organization.Use an approval id from the approvals or desk-limits list.
TRADING_VENUE_WATCHLIST_NOT_FOUND404The watchlist id does not name a watchlist the authenticated user owns.Use a watchlist id from your own watchlists list.

On this page