Skip to main content
POST
Reprice a resting limit order in place

Authorizations

X-Client-Id
string
header
required

Credential client id (kairos_ck_...). Must be sent together with X-Api-Key and X-Api-Secret.

X-Api-Key
string
header
required

64-char hex API key.

X-Api-Secret
string
header
required

64-char hex API secret.

Path Parameters

order_id
string<uuid>
required

Internal Kairos order id.

Body

application/json

Request body for POST /orders/{order_id}/amend. Reprice only — quantity exists solely to be refused.

price
number

New limit price, strictly greater than 0 and less than 1, in the order's OWN outcome's terms (send a Kalshi No order's No price; do not complement it client-side). Omitted re-sends the price the order already has.

quantity
number

Accepted only to be REFUSED with 409 EXCHANGE_AMEND_QUANTITY_UNSUPPORTED, before the order is even read. This route reprices; it does not resize. Refused rather than ignored so a caller never believes an order was resized when it was not.

Response

Amend outcome. Check success — a 200 does not guarantee the order was actually amended (see description).

Response for POST /orders/{order_id}/amend. Returned with HTTP 200 even when success is false.

success
boolean
required

Whether the venue confirmed the amend. false is an AMBIGUOUS outcome, not an error status — the amend may have been refused, or it may have reached the venue and been applied without us learning so. That ambiguity is why it is not a 5xx, which would invite a blind retry against an order that may already carry the new price. A non-amendable status answers 200 with a false success too. On any false, re-read the order before acting on it.

order_id
string<uuid>
required

The id that was addressed, always unchanged. An amend never mints a new order.

exchange_order_id
string

The venue's order id, also unchanged — Kalshi AmendOrder v2 answers with the same id it was given, so there is no supersession to record. Omitted only on the pre-submission path, where the order has no venue identity yet.

price
string

Decimal string. The new resting price on success. On an unsuccessful path it is the price we last recorded — the resting price when the venue explicitly refused, but only our last known value when the call failed in transit or came back unreadable, where the venue may in fact hold the new price. Omitted when unknown.

quantity
string

Decimal string, the order's total size — always the size it was placed for. This route never resizes. Omitted when unknown.

message
string

Human-readable outcome detail, e.g. "Order amended on exchange", "Order cannot be amended - status is filled", or "Could not amend on the exchange: ". A success whose row write failed reads "Order amended on exchange (price not persisted)".