Most rejections happen before the order reaches the book, so a
400 means nothing was placed.
markets-service does not verify your signature — see Authentication and
signing. A bad signature is accepted here and fails later,
onchain, so none of the errors below indicate a signature problem.Missing fields
Every one of these is required onPOST /v1/orders.
Action payload shape
These come from decodingaction_json.data, the ABI-encoded TradeData tuple.
400
data is not exactly seven 32-byte words. After the 0x prefix it must be 448 hex
characters. See Encoding data.400
data is the right length but not valid hex.400
A wrapper around the field-level failures below. The suffix names the specific problem.
Field consistency
The flat order fields and the signedaction_json describe the same order, so they must agree.
Rebuild both from one set of values rather than editing one of them.
Scaling
These are the most common rejections, and they almost always mean the body was sent in wei.400
data.limitPrice must be a positive whole multiple of the body’s limit_price after tick
normalization. The body takes human decimals; only data carries wei.400
Same rule for size, normalized against the instrument’s minimum size.
400
limitPrice is a signed int256 but zero and negative values are rejected.400
Same for
desiredAmount.400
desired_amount is smaller than the instrument’s minimum size, so it normalizes to nothing.400
desired_amount is not a whole multiple of the instrument’s minimum size.Amounts and expiry
Instrument
400
The
(asset_address, sub_id) pair is not an enabled market. Read GET /v1/markets — both
values must come from the same entry.400
The
symbol or asset_address + sub_id on a read endpoint did not resolve.400
These two fields apply to the spot market only. Omit them on futures orders.
Duplicate orders
409
order_id has already been submitted. Generate a fresh one; do not retry with the same id.order_id as an idempotency key you control. A 409 means the first submission was
accepted, so check its status with GET /v1/orders/{order_id} rather than resubmitting.
Cancelling
Read endpoints
unknown market applies to GET /v1/book, GET /v1/trades, and GET /v1/candles alike.
Authentication and signing
Most rejections trace back to how the action payload was built.

