Place a paper trade
place_tradeBuy YES or NO contracts. Required: contracts or stake_dollars; exactly one pair, ticker + side or instrument_id + instrument_side; and, to place (not with dry_run), a fresh UUID idempotency_key and confirm=true. MARKET fills at the ask now. limit_price_cents fills at that price or better or rests (executed, resting, or canceled). stake_dollars buys whole contracts, never more; placing by stake needs max_price_cents or limit_price_cents. The balance is the limit. On timeout or upstream_unavailable, retry ONCE with the SAME key (replayed=true). Never retry a 4xx. A reused key for a different trade is idempotency_key_reused. get_positions (get_orders for a limit) is ground truth. route=best (default, members) picks the venue. It may fill at Novig, Polymarket or ProphetX (pregame only), else Kalshi, and may split: fills lists each leg, fill_venue is the first; venues narrows it. route=kalshi is one venue. rule_note when the contract differs. dry_run=true places nothing (about 20 a minute). Over the cash: insufficient_balance with details.max_contracts. With route=best, call with dry_run=true first and tell the person in words what it pays if it wins (payout_if_win_dollars), what they lose if it loses (loss_if_lose_dollars) and where it fills (fill_venue at price_cents, and rule_note) before calling with confirm=true; otherwise pass route=kalshi. To hold what the person saw, pass max_price_cents equal to the dry run's price_cents, and route=kalshi when its fill_venue was kalshi. stated_prob_pct (1-99) never changes the fill. On a person's account, ask the person for theirs and never supply one for them. Paper unless live=true (Kalshi) or poly_intl=true (Polymarket International, not US). Pass one. Rules: arena://rules/engine. This server places paper trades only: a call with live or poly_intl is refused (live_not_hosted).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| live | No | Kalshi order. Not poly_intl. | |
| side | No | The ticker's side. | |
| route | No | Default best. | |
| ticker | No | A Kalshi ticker, with side. | |
| venues | No | ||
| confirm | No | REQUIRED to place: true. Not with dry_run. | |
| dry_run | No | Preview; places nothing. | |
| token_id | No | poly_intl CLOB token. Omit it and the ticker is mapped. | |
| contracts | No | Whole contracts, 1 or more. No cap: your balance is the only limit. One trade records at most 1,000,000,000. Or stake_dollars. | |
| poly_intl | No | Polymarket International. Not live, not US. | |
| expires_at | No | ISO time a gtc order stops resting. | |
| instrument_id | No | An instrument id or slug, with instrument_side. | |
| stake_dollars | No | Or dollars: whole contracts at the ask, never more. To place, add max_price_cents (the dry run's sized_at_cents) or limit_price_cents. | |
| time_in_force | No | gtc (default) rests up to 365 days; ioc and fok fill now or come back canceled. | |
| idempotency_key | No | REQUIRED to place: a fresh UUID v4. Not with dry_run. | |
| instrument_side | No | yes holds its label (KC ML). | |
| max_price_cents | No | Market orders: refuse a fill above this (server-enforced). | |
| stated_prob_pct | No | The account holder's probability that the side wins, whole percent (62, not 0.62); ask a person, never guess theirs. Never changes the fill. | |
| limit_price_cents | No | A LIMIT order at this price, in the side's own price (no at 40 buys no at 40c). |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| fills | No | ||
| notes | No | ||
| order | No | ||
| route | No | ||
| trade | No | ||
| filled | No | ||
| placed | No | ||
| status | No | ||
| ticker | No | ||
| venues | No | ||
| dry_run | No | ||
| warning | No | ||
| web_url | No | ||
| edge_pts | No | ||
| fee_note | No | ||
| replayed | No | ||
| contracts | No | ||
| rule_note | No | ||
| expires_at | No | ||
| fill_venue | No | ||
| order_type | No | ||
| placed_via | No | ||
| route_note | No | ||
| crosses_now | No | ||
| price_cents | No | ||
| ticker_side | No | ||
| hold_dollars | No | ||
| route_reason | No | ||
| instrument_id | No | ||
| stake_dollars | No | ||
| time_in_force | No | ||
| walk_fillable | No | ||
| sized_at_cents | No | ||
| slippage_cents | No | ||
| instrument_side | No | ||
| stated_prob_pct | No | ||
| walk_vwap_cents | No | ||
| instrument_label | No | ||
| limit_price_cents | No | ||
| kalshi_price_cents | No | ||
| original_created_at | No | ||
| walk_slippage_cents | No | ||
| loss_if_lose_dollars | No | ||
| payout_if_win_dollars | No | ||
| profit_if_win_dollars | No | ||
| venue_fee_est_dollars | No | ||
| price_improvement_cents | No | ||
| requested_stake_dollars | No |