Skip to main content
POST
cURL

Authorizations

Authorization
string
header
required

Authorization: Bearer tl_live_…

Body

application/json
client_order_id
string
required

an id you choose for this order (e.g. a UUID), unique per order; resend the same one only to retry the same order, which never places a second order

Pattern: ^[A-Za-z0-9_-]{1,64}$
outcome
enum<string>
required

the venue's own outcome label the order is on

Available options:
yes,
no
price
string
required

the limit price of outcome, a plain decimal string; a price off the venue's grid is refused, never rounded

Required string length: 1 - 32
Pattern: ^[0-9]+(\.[0-9]+)?$
side
enum<string>
required

buy or sell, the action on outcome at price

Available options:
buy,
sell
size
integer
required

whole contracts

Required range: 1 <= x <= 1000000
type
string
required

the order type; only limit

Allowed value: "limit"
venue
enum<string>
required

the venue to trade on; only venues enabled for trading are accepted (no best-venue routing)

Available options:
kalshi,
polymarket,
limitless,
predictfun
time_in_force
enum<string>
default:gtc

gtc rests until cancelled, ioc fills what it can now and cancels the rest

Available options:
gtc,
ioc
universal_id
string | null

the market universal id; its leg on venue is traded, so switching venue is one field. Send this, venue_market_id, or both

Required string length: 1 - 256
venue_market_id
string | null

the venue's own market id (on Kalshi, its ticker); with universal_id both must name the same leg, else 422, never re-routed

Required string length: 1 - 256

Response

a reconcile's answer (the venue's state, or not_placed), or a replay of the latest answer for this client_order_id

client_order_id
string
required

your id for this order

created_at
string
required

when we accepted the order, ISO 8601

id
string
required

our id for the order, ord_ and 24 hex digits; it exists from the moment we accept the request, so an order whose status is unknown has one too

Pattern: ^ord_[0-9a-f]{24}$
notional_reserved
string
required

the order's maximum loss counted against your limits, USD as a decimal string

outcome
string
required

the venue's own outcome label

price
string
required

the limit price of outcome, a decimal string

side
enum<string>
required

buy or sell, the action on outcome at price

Available options:
buy,
sell
size
integer
required

whole contracts ordered

status
enum<string>
required

unknown: the venue's answer was not received; retry with the same client_order_id or read GET /public/v1/orders/{id}, never send a new id. On a venue that cannot prove an order's absence it may stay unknown: check the venue before trading the same intent again

Available options:
open,
filled,
partially_filled,
cancelled,
unknown,
not_placed
time_in_force
enum<string>
required

as requested

Available options:
gtc,
ioc
type
string
required

the order type; only limit

Allowed value: "limit"
universal_id
string | null
required

the market universal id holding the leg; null when no market lists it

updated_at
string
required

when we last recorded a change to the order, ISO 8601

venue
enum<string>
required

the venue the order was sent to

Available options:
kalshi,
polymarket,
limitless,
predictfun
venue_market_id
string
required

the venue's own market id the order went to

avg_price
string | null

the average fill price of outcome, 0..1 as a decimal string, when the venue reported one

filled_size
string | null

contracts filled, an exact decimal string; null while the status is unknown

remaining_size
string | null

contracts still resting, an exact decimal string; null while the status is unknown

venue_market_title
string | null

the leg's title on the venue, when our mirror holds it

venue_order_id
string | null

the venue's order id; null while the status is unknown and for an order that was never placed