Kalshi Place Order
Place a new order on a Kalshi prediction market. Supports limit and market orders for buying or selling yes/no contracts. Prices are dollar strings (e.g. '0.6500'). For market orders, if no price is provided a conservative slippage cap is auto-applied (0.99 for buys, 0.01 for sells) on the active side — Kalshi requires a price even on market orders. Ideal for: automated trading, signal-based order placement, portfolio construction, prediction market strategies.
Catalog action Utility kalshi
Place a new order on a Kalshi prediction market. Supports limit and market orders for buying or selling yes/no contracts. Prices are dollar strings (e.g. '0.6500'). For market orders, if no price is provided a conservative slippage cap is auto-applied (0.99 for buys, 0.01 for sells) on the active side — Kalshi requires a price even on market orders. Ideal for: automated trading, signal-based order placement, portfolio construction, prediction market strategies.
At a Glance
| Field | Value |
|---|---|
| Action ID | kalshi-place-order |
| Category | Utility |
| Connector | kalshi |
| Requires gas | No |
| Funds movement | None declared |
| Tags | kalshi, prediction-market, trading, order, write |
Payload Schema
| Field | Type | Required | Description |
|---|---|---|---|
ticker | string | Yes | Market ticker to trade |
action | string | Yes | Order action |
side | string | Yes | Contract side to trade |
type | string | No | Order type — limit defaults to good_till_canceled; market defaults to immediate_or_cancel |
count | number | Yes | Number of contracts (supports fractional, e.g. 0.12). Rounded to 2 decimal places before sending to Kalshi (V2 fixed-point granularity). To calculate from a dollar amount: count = dollars / price. |
yesPriceDollars | string | No | Price in dollars for yes side (e.g. '0.6500') |
noPriceDollars | string | No | Price in dollars for no side (e.g. '0.3500') |
clientOrderId | string | No | Your custom order ID for tracking |
expirationTs | number | No | Expiration Unix timestamp (seconds) for the order |
timeInForce | string | No | Time-in-force policy for the order (overrides the default derived from 'type') |
subaccount | number | No | Subaccount number (0 = primary, 1-63 = subaccounts) |
Result Schema
| Field | Type | Required | Description |
|---|---|---|---|
order | object | Yes | The created order acknowledgement |
Examples
json{ "type": "kalshi-place-order", "payload": { "ticker": "example-ticker", "action": "buy", "side": "yes", "count": 1 }, "children": [], "connector": { "type": "kalshi", "id": "conn_kalshi" }}
bashcurl -X POST "https://api.b3os.org/v1/actions/kalshi-place-order/test" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "ticker": "example-ticker", "action": "buy", "side": "yes", "count": 1 }}'
Payload fields can use workflow expressions such as {{$trigger.body.amount}}, {{$nodes.fetch.result.price}}, and {{$props.asset}} when the value should come from a trigger, prior node, or reusable workflow prop.
