Place orders
Orders
Place orders
Submit one or more orders to the exchange
POST
Place orders
Submit one or more orders. The endpoint accepts a batch — per-order results come back inDocumentation Index
Fetch the complete documentation index at: https://docs.4casters.io/llms.txt
Use this file to discover all available pages before exploring further.
data.createdSessions, positionally with your input orders array. Each entry is either a successful { matched, unmatched } result or an { error, errorType } failure.
Request
POST /session/v3/place
Order fields
Order types
limit
The default order type. Executes against any matching liquidity at your price or better as a taker (with taker commission), and rests any remainder on the book as a maker. A limit order can finish fully matched, fully resting, or partially matched with the remainder resting.
post
Create a resting offer. If the order would match existing liquidity when placed, the server rejects it (rejected_order_type_rules, e.g. "post order cannot have matches").
postArb
Behaves like post, but you may post even when the order would match, only if your American odds are within 1% of the odds on the resting order you would match. If the price difference is more than 1%, the place is rejected.
Examples:
- Best offer +100 and you post +100 —
postis rejected (it would match);postArbis allowed. - Best offer +200 —
postArbat +190 is rejected (too far from +200). About +198 is at the edge of the 1% band vs +200. - Best order −200 — the band extends to about −202 on the negative side (same 1% rule).
- With +100 on the book, −101 is the reference limit on the other side for the 1% tolerance.
postArb avoids taker fees across a normal trade — you are not charged taker fees on this flow the way you would be if you lifted resting liquidity as a taker.
fillAndKill
Must execute immediately against available size at your price, or the order is rejected. See the Fill And Kill scenarios in the examples below.
Response
Per-order results, positional with the input
orders array. Each entry is either a successful place or an error.Examples
Scenario 1 — Match orders with no leftover liquidity
Three orders that all match instantly with available liquidity.Scenario 2 — Limit order with leftover liquidity
A limit order for 300 that partially matches and leaves the remainder resting.Scenario 3 — Fill and Kill, full match
Scenario 4 — Fill and Kill, no match
AfillAndKill with no match returns a per-order error.
Scenario 5 — postArb vs post when the book would match
post rejects an order that would match resting liquidity (for example, best offer +100 and you try to post +100). postArb allows that situation when your odds are within 1% of the order you would match — so the same +100 post can succeed as postArb, and you avoid the taker fees you’d pay across a normal trade. If your price is too far from the resting quote (e.g. best offer +200 but you send +190), postArb is rejected.
Scenario 6 — moneyline1x2 (soccer three-way)
moneyline1x2 is the soccer three-way market — home / away / draw — placed as a yes/no bet on the outcome named by market. Below, yes on the draw at +250.
side: "no" and set market to the home participant’s id.
Live delay
Orders placed on a game marked as live follow these rules:- If the order does not match any existing liquidity, it is placed immediately.
- If the order does match existing liquidity, it incurs a delay before execution.
- Different leagues have different live delay periods:
- NFL, UFCMMA, NCAAF — 3 seconds.
- NCAAB, NBA — 5 seconds.
- ATP, WTA — 8 seconds.
- Default — 10 seconds.
- After the delay, the order attempts to execute:
- If the odds improve, it matches instantly.
- If the odds decrease, it does not match.
Per-order errors
Example with multiple places, some erroring:Authorizations
Pass your auth token in the Authorization header. The Bearer prefix is optional; the server also accepts a signed auth cookie or a token field in the request body.
Body
application/json
Response
Per-order results (positional with input).