Skip to main content
Every call that places, replaces, or protects an order carries a caller-supplied clientOrderId. It is the identity of one trading intent. The rule is simple: one intent, one id, forever.
  • Mint a new id when the trader creates a new intent.
  • Reuse the same id when you retry the same intent, no matter why the first attempt failed.
  • Never reuse an id for a different intent.
A repeat of a used id answers 409 and the earlier order stands. That is the guarantee doing its job: a timeout, a crashed process, or a double-clicked button can re-send the request as many times as it likes, and the trader still gets exactly one order. This matters most when things go wrong. If a request times out, you do not know whether the engine received it. With a stable clientOrderId you do not need to know. Retry with the same id: either it places now, or it answers 409 because it already placed. Both outcomes are correct, and neither doubles the trader’s position.