Skip to main content
POST
/
portfolio
/
orders
Create Order
curl --request POST \
  --url https://external-api.kalshi.com/trade-api/v2/portfolio/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>",
  "count": 2,
  "count_fp": "10.00",
  "yes_price": 50,
  "no_price": 50,
  "yes_price_dollars": "0.5600",
  "no_price_dollars": "0.5600",
  "expiration_ts": 123,
  "buy_max_cost": 123,
  "post_only": true,
  "reduce_only": true,
  "sell_position_floor": 123,
  "order_group_id": "<string>",
  "cancel_order_on_pause": true,
  "subaccount": 0,
  "exchange_index": 0
}
'
{
  "order": {
    "order_id": "<string>",
    "user_id": "<string>",
    "client_order_id": "<string>",
    "ticker": "<string>",
    "yes_price_dollars": "0.5600",
    "no_price_dollars": "0.5600",
    "fill_count_fp": "10.00",
    "remaining_count_fp": "10.00",
    "initial_count_fp": "10.00",
    "taker_fill_cost_dollars": "0.5600",
    "maker_fill_cost_dollars": "0.5600",
    "taker_fees_dollars": "0.5600",
    "maker_fees_dollars": "0.5600",
    "expiration_time": "2023-11-07T05:31:56Z",
    "created_time": "2023-11-07T05:31:56Z",
    "last_update_time": "2023-11-07T05:31:56Z",
    "order_group_id": "<string>",
    "cancel_order_on_pause": true,
    "subaccount_number": 123,
    "exchange_index": 0
  }
}

Documentation Index

Fetch the complete documentation index at: https://docs.kalshi.com/llms.txt

Use this file to discover all available pages before exploring further.

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
side
enum<string>
required
Available options:
yes,
no
action
enum<string>
required
Available options:
buy,
sell
client_order_id
string
count
integer

Order quantity in contracts (whole contracts only). Provide count or count_fp; if both provided they must match.

Required range: x >= 1
count_fp
string | null

String representation of the order quantity in contracts. Provide count or count_fp; if both provided they must match.

Example:

"10.00"

yes_price
integer
Required range: 1 <= x <= 99
no_price
integer
Required range: 1 <= x <= 99
yes_price_dollars
string

Submitting price of the Yes side in fixed-point dollars

Example:

"0.5600"

no_price_dollars
string

Submitting price of the No side in fixed-point dollars

Example:

"0.5600"

expiration_ts
integer<int64>

Optional Unix timestamp in seconds for when the order expires. To place an expiring order, set time_in_force to good_till_canceled and provide this expiration_ts. GTT is an internal execution type and is not a valid API value for time_in_force. The immediate_or_cancel time-in-force value cannot be combined with expiration_ts.

time_in_force
enum<string>

Specifies how long the order remains active. Use good_till_canceled with expiration_ts for an order that should rest until a specific expiration time; without expiration_ts, good_till_canceled is a true good-till-canceled order. GTT is not a valid API value.

Available options:
fill_or_kill,
good_till_canceled,
immediate_or_cancel
buy_max_cost
integer

Maximum cost in cents. When specified, the order will automatically have Fill-or-Kill (FoK) behavior.

post_only
boolean
reduce_only
boolean
sell_position_floor
integer

Deprecated: Use reduce_only instead. Only accepts value of 0.

self_trade_prevention_type
enum<string>

The self-trade prevention type for orders. taker_at_cross cancels the taker order when it would trade against another order from the same user; execution stops and any partial fills already matched are executed. maker cancels the resting maker order and continues matching.

Available options:
taker_at_cross,
maker
order_group_id
string

The order group this order is part of

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.

subaccount
integer
default:0

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

Required range: x >= 0
exchange_index
integer
default:0

Identifier for an exchange shard. Defaults to 0 if unspecified. Note: currently only 0 supported.

Example:

0

Response

Order created successfully

order
object
required