Place Market Order
Place a market order that the router splits across routed venues
Overview
Place a market order that the router splits across every routed venue offering the outcome identified bypredexonId. Returns per-venue fills, an aggregate summary, and the routing decision.
The router:
- Expands
predexonIdto the cross-venue equivalence set. - Filters to venues the account has enabled, intersects with those the router is actively streaming.
- For buys — fans out balance reads and aborts if aggregate balance is below the requested notional. For sells — fans out position reads to cap each venue’s allocation by available size.
- Walks the merged fee-inclusive order books from best to worst effective price and computes a per-venue split.
- Dispatches per-venue orders in parallel.
- Collects every dispatch result (success or failure) and returns a unified response.
fills[]. A 201 Created response may still contain per-venue failures — check summary.venuesFailed.
See the Order Router concept page for an end-to-end explanation of how routing and splitting work.
Path Parameters
Request Body
Response Fields
Top level
x-request-id response header — the router echoes the header on every response. There is no _trace block in the body.
Fill entry
size, price, and amount are normalised to 6-decimal strings across every venue — partners parsing fills get consistent formatting regardless of which venue produced the fill.
Summary
_routing
Transparency block describing how the router made its allocation decision.
Status Codes & Errors
HTTP status is binary:201 when at least one venue produced a fill, 502 when no venue filled. Partial vs. full success is a body-level distinction — read summary.venuesFailed.
summary.venuesFailed === 0— full success. Every dispatched venue filled.summary.venuesFailed > 0with status201— partial success. Some venues filled, others failed. Inspect per-fillstatusandfills[].errorto see which.
errorCode alongside the human-readable error. On 502 all_venues_failed, the response is the full Place Order body (with fills[] and _routing) plus errorCode — diagnose per-venue failures from fills[].error and _routing.considered[].
Examples
Full success — market buy by notional
Both dispatched venues filled.summary.venuesFailed is 0.
Request:
201):
x-request-id response header carries a request correlation identifier — propagate it when reporting issues so support can correlate your call with router-side logs.
Market sell by size
Partial success — still a 201
At least one venue filled, so the response is still201. summary.venuesFailed is 1, and the failed venue returns an error string for diagnostics. errorCode is absent at the top level because at least one venue filled.
All venues failed (502)
A502 with the full Place Order body. Use fills[].error to diagnose per-venue failures.
Authorizations
Trading key provided by Predexon. The data key used by the Sports Discovery API on api.predexon.com is a separate credential.
Path Parameters
Account ID. Must belong to the calling API key.
Body
Canonical predexon_id for the outcome. The router expands to every routed venue listing for that canonical outcome.
buy, sell USD/stablecoin notional to spend. Required when side is buy. Must not be set when side is sell. Must be a positive decimal string.
Number of shares to sell. Required when side is sell. Must not be set when side is buy. Must be a positive decimal string.
Response
At least one venue produced a fill. Full success when summary.venuesFailed === 0; partial success when > 0 — some venues filled, others failed, inspect per-fill status and fills[].error to see which.
Unique identifier for this routed order (prefix rord-).
Echoes the request predexonId.
buy, sell market Echo of the request amount. Present (as a stringified number) on buy orders; null on sell orders.
Echo of the request size. Present (as a stringified number) on sell orders; null on buy orders.
One entry per venue that was dispatched. A single order can produce multiple fills. size, price, and amount are normalised to 6-decimal strings across every venue.
Transparency block describing how the router made its allocation decision.
Present only on a 502 response when every dispatched venue failed. Set to "all_venues_failed". Absent on a 201 success.
all_venues_failed 