Skip to main content
POST
/
portfolio
/
events
/
orders
Create Order (V2)
curl --request POST \
  --url https://api.elections.kalshi.com/trade-api/v2/portfolio/events/orders \
  --header 'Content-Type: application/json' \
  --header 'KALSHI-ACCESS-KEY: <api-key>' \
  --header 'KALSHI-ACCESS-SIGNATURE: <api-key>' \
  --header 'KALSHI-ACCESS-TIMESTAMP: <api-key>' \
  --data '
{
  "ticker": "<string>",
  "client_order_id": "<string>",
  "side": "bid",
  "count": "10.00",
  "price": "0.5600",
  "time_in_force": "fill_or_kill",
  "self_trade_prevention_type": "taker_at_cross",
  "expiration_time": 123,
  "post_only": true,
  "cancel_order_on_pause": true,
  "reduce_only": true,
  "subaccount": 0,
  "order_group_id": "<string>"
}
'
{
  "order_id": "<string>",
  "fill_count": "10.00",
  "remaining_count": "10.00",
  "client_order_id": "<string>",
  "average_fill_price": "0.5600"
}

Authorizations

KALSHI-ACCESS-KEY
string
header
required

Your API key ID

KALSHI-ACCESS-SIGNATURE
string
header
required

RSA-PSS signature of the request

KALSHI-ACCESS-TIMESTAMP
string
header
required

Request timestamp in milliseconds

Body

application/json
ticker
string
required
client_order_id
string
required
side
enum<string>
required

Side of the book for an order or trade. For event markets, this refers to the YES leg only: bid means buy YES, ask means sell YES. (Selling YES is economically equivalent to buying NO at 1 - price, but this endpoint quotes everything from the YES side.)

Available options:
bid,
ask
count
string
required

String representation of the order quantity in contracts.

Example:

"10.00"

price
string
required

Price for the order in fixed-point dollars.

Example:

"0.5600"

time_in_force
enum<string>
required
Available options:
fill_or_kill,
good_till_canceled,
immediate_or_cancel
self_trade_prevention_type
enum<string>
required

The self-trade prevention type for orders

Available options:
taker_at_cross,
maker
expiration_time
integer<int64>
post_only
boolean
cancel_order_on_pause
boolean

If this flag is set to true, the order will be canceled if the order is open and trading on the exchange is paused for any reason.

reduce_only
boolean

Specifies whether the order place count should be capped by the member's current position.

subaccount
integer
default:0

The subaccount number to use for this order. 0 is the primary subaccount.

Required range: x >= 0
order_group_id
string

The order group this order is part of

Response

Order created successfully

order_id
string
required
fill_count
string
required

Number of contracts filled immediately upon placement.

Example:

"10.00"

remaining_count
string
required

Number of contracts remaining after placement. For IOC orders, this reflects the final state after unfilled contracts are canceled.

Example:

"10.00"

client_order_id
string
average_fill_price
string

Volume-weighted average fill price. Only present when fill_count > 0.

Example:

"0.5600"