What you specify
Every order has:On the API these map to the order fields
market, side ("yes"/"no"), direction ("buy"/"sell"), ord_type ("limit"), volume, and price. See the API Overview for the exact request shape.Limit orders
A limit order sets the exact price you’re willing to pay and rests in the order book until someone trades against it (or you cancel it).- Pros: exact price control, no slippage; a resting order can earn a maker rebate when it’s the side that gets filled.
- Cons: it may not fill if the price never reaches your limit.
post_only limit order is rejected if it would immediately take liquidity —
use it when you only want to rest in the book and never cross the spread.
Market orders are signed limits
Every order you place is signed by your own key, and the signature commits to a specific price — that is what lets the exchange match your order without ever holding your funds. “Spend $10 at whatever it costs” is not something a key can sign, so a Market order in the app is a marketable limit:- You name a max spend. The app walks the order book and works out how many contracts that buys at the resting prices.
- It signs a limit at the worst price the sweep reaches, plus a small slippage bound. That price is a ceiling, never a target: the exchange fills you at the book price or better, and anything left of your max spend is not taken.
- It is sent immediate-or-cancel: whatever the book can’t fill the moment your order arrives is refunded straight away, never left resting at the ceiling. A market order either fills now (all or part) or gives your money back.
- The signature expires after 120 seconds, long enough to approve it with your passkey. An order is never matched within 30 seconds of its signature expiring — the trade has to settle on-chain first — so one that arrives later than that is refused rather than filled.
0.62 when the best ask is 0.60 fills
at 0.60, not 0.62.
The combined order book
Calibri runs one combined book per market, priced in YES terms. There is no separate NO book: a NO order at pricep sits in the book at 1.00 − p.
Every order is one of four kinds, and each kind sits on one side of the book:
Buying YES is selling NO
The two orders in each column are the same trade. A YES and a NO contract together always pay out exactly1.00, so holding YES is the same position as
being short NO:
0.60 shows up for someone buying NO as
NO on offer at 0.40. They can take it even though you hold no NO to hand
over — see how a fill works below.
Who can fill your order
Your order fills against anything resting on the other side of the book at your price or better:
Orders on the same side compete with yours instead. A resting Sell NO at
0.40 is a second bid for YES at 0.60; it cannot fill a Buy YES.
What a fill does depends on the two orders’ directions:
On a new market nobody holds contracts yet, so the only way to fill a buy is a
buy of the other outcome. When the app says “No YES sellers or NO buyers
yet”, the ask side is empty: nobody is selling YES and nobody is buying NO. A
limit order is how you go first — it rests on the board until one of them
arrives.
Fees
You pay a single taker fee only when your order takes liquidity (a market order, or a limit order that crosses the spread and fills immediately). Resting orders that get filled are makers and pay no fee. The fee is charged once, at the moment of the fill — never again at settlement. It follows a price-dependent bell curve rather than a flat percentage; see Fees for the exact formula and how the applicable rate is shown for each market.How your order reaches the market
Every order is EIP-712 signed by your wallet — or by your passkey — and relayed on-chain by Calibri. The operator pays the gas, so signing costs you nothing. Signing is what authorises the order against your Safe; nothing can be placed on your behalf without it. See Signed orders for the exact struct and Your wallet options for what does the signing in each setup.From fill to position
Once an order fills:- A contract is created between your side and the matched counterparty. Your position is the set of contract legs you hold (net YES, net NO, or flat).
- To close a position before resolution, sell it: a Sell order offers
contracts you hold. It locks those contracts, not cash — a sell that takes
liquidity pays its taker fee out of the sale proceeds — and only the
quantity not already offered on another resting sell can be sold
(
sellable_qtyon/account/positions). In the app, use Sell on the holding. - Buying the opposite side does not close the first position — it opens a second, separately collateralised one, locking more money rather than releasing any. Sell the contracts you hold instead.
- Open (unfilled) limit orders can be cancelled while the market is open; the collateral they locked is released back to you.
Next steps
Fees
How the taker fee is computed and shown per market.
How markets are resolved
What decides the market you are trading.
Terms of use
The rules you accept by trading.
Core concepts
Contracts, positions, and the market lifecycle.
Signed orders
Build and sign an EIP-712 order.
API Overview
The exact order request and response shapes.