> For the complete documentation index, see [llms.txt](https://lambdaplex-labs.gitbook.io/lambdaplex/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lambdaplex-labs.gitbook.io/lambdaplex/for-developers/api/orders.md).

# Orders

Order management

## Resolve or durably close ordinary placement admission

> Signature V1 query or signed form with the complete original immutable placement terms and action=RESOLVE. A PLACE or LOOKUP signature cannot authorize this mutation. Optional signed expectedRequestBinding must match before registration or closure. May arrive before create. A pending response preserves liability; only CLOSED\_NO\_PLACEMENT excludes both future placement and residual reservation. A placed order still requires the existing settlement/fills contract.\
> \
> \*\*Weight:\*\* 2\
> \
> The ordinary placement family has a bounded pre-authentication IP bucket of 100 requests/second, burst 100. New durable identities (including resolve-before-create) additionally consume an authenticated subject bucket of 2/second, burst 10 and a process allocation bucket of 100/second, burst 100. Exact existing identities do not allocate again. Key rotation does not reset subject admission. HTTP errors never authorize release.

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"OrdinaryPlacementResolutionRequest":{"type":"object","additionalProperties":false,"allOf":[{"oneOf":[{"required":["dmsSettlementDomain","dmsPhysicalAccount","dmsOwnershipRevision","dmsGeneration","dmsGrantId"]},{"not":{"anyOf":[{"required":["dmsSettlementDomain"]},{"required":["dmsPhysicalAccount"]},{"required":["dmsOwnershipRevision"]},{"required":["dmsGeneration"]},{"required":["dmsGrantId"]}]}}]}],"description":"Exactly one of quantity or BUY-only quoteOrderQty is required. All authority fields are authenticated. Unknown fields, duplicate names and unsigned secondary sources are rejected. expireTime floors to seconds; dispatchDeadline retains milliseconds and may not exceed it. DMS intent is reserved and always refused until the full admission guard chain exists.","oneOf":[{"not":{"required":["quoteOrderQty"]},"required":["quantity"]},{"not":{"required":["quantity"]},"required":["quoteOrderQty"]}],"properties":{"contract":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]},"action":{"type":"string","description":"Signed operation discriminator; V1 does not bind HTTP method or path","enum":["RESOLVE"]},"timestamp":{"type":"integer","format":"int64","description":"Fresh authentication time; may refresh on an exact retry","maximum":253402300799999,"minimum":1},"recvWindow":{"type":"integer","format":"int64","description":"Authentication freshness window, not placement dispatch authority","maximum":253402300799999,"minimum":1},"signature":{"type":"string","description":"Base64 Ed25519 signature of the ordered decoded parameters excluding signature"},"symbol":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"},"side":{"type":"string","enum":["BUY","SELL"]},"quantity":{"type":"string","description":"Positive base quantity; mutually exclusive with quoteOrderQty","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"quoteOrderQty":{"type":"string","description":"Positive quote budget; BUY only, preserves venue rounding","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"price":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"expireTime":{"type":"integer","format":"int64","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","maximum":253402300799999,"minimum":1},"postOnly":{"type":"boolean","default":false},"dispatchDeadline":{"type":"integer","format":"int64","description":"Immutable command-admission deadline; strict now < cutoff, at most 60000ms ahead on new registration","maximum":253402300799999,"minimum":1},"expectedRequestBinding":{"type":"string","description":"Optional signed assertion of the complete canonical binding; mismatch is rejected before registration, reservation, admission or closure. Outside the economic hash.","pattern":"^[0-9a-f]{64}$"},"dmsSettlementDomain":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","enum":["1","3"]},"dmsPhysicalAccount":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"},"dmsOwnershipRevision":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"},"dmsGeneration":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"},"dmsGrantId":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},"type":{"type":"string","enum":["LIMIT"]},"timeInForce":{"type":"string","enum":["GTD"]},"newClientOrderId":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"}},"required":["action","contract","dispatchDeadline","expireTime","newClientOrderId","price","side","signature","symbol","timeInForce","timestamp","type"]},"OrdinaryPlacementResponse":{"type":"object","additionalProperties":false,"properties":{"contract":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]},"status":{"type":"string","enum":["PENDING","PLACED","CLOSED_NO_PLACEMENT"]},"subjectId":{"type":"string","format":"uuid"},"ownerId":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"accountId":{"type":"integer","format":"int64","minimum":0},"baseTokenId":{"type":"integer","format":"int64","minimum":0},"quoteTokenId":{"type":"integer","format":"int64","minimum":0},"symbolId":{"type":"integer","format":"int64","minimum":0},"requestBinding":{"type":"string","description":"SHA-256 of version domain and canonical scoped request JSON; see frozen fixtures","pattern":"^[0-9a-f]{64}$"},"request":{"$ref":"#/components/schemas/OrdinaryPlacementTerms"},"admittedAt":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1},"closedAt":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1},"placementEventId":{"type":"integer","format":"int64","minimum":1},"placement":{"$ref":"#/components/schemas/NewOrderAck","description":"Original accepted placement, including expiry before native renewal; no current-liveness or settlement claim"},"reservationState":{"type":"string","enum":["UNRESOLVED","NONE","ORDER_OWNED"]}},"required":["accountId","baseTokenId","contract","orderId","ownerId","quoteTokenId","request","requestBinding","reservationState","status","subjectId","symbolId"]},"OrdinaryPlacementTerms":{"type":"object","additionalProperties":false,"properties":{"symbol":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"},"side":{"type":"string","enum":["BUY","SELL"]},"clientOrderId":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"},"quantity":{"type":["null","string"],"description":"Positive base quantity; mutually exclusive with quoteOrderQty","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"quoteOrderQty":{"type":["null","string"],"description":"Positive quote budget; BUY only, preserves venue rounding","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"price":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"expireTime":{"type":"integer","format":"int64","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","maximum":253402300799999,"minimum":1},"postOnly":{"type":"boolean","default":false},"dispatchDeadline":{"type":"integer","format":"int64","description":"Immutable command-admission deadline; strict now < cutoff, at most 60000ms ahead on new registration","maximum":253402300799999,"minimum":1}},"required":["clientOrderId","dispatchDeadline","expireTime","postOnly","price","quantity","quoteOrderQty","side","symbol"]},"NewOrderAck":{"type":"object","description":"Acknowledgement returned when an order is accepted","properties":{"symbol":{"type":"string","description":"Trading pair symbol"},"orderId":{"type":"string","description":"Exchange-assigned order ID"},"clientOrderId":{"type":"string","description":"Client-supplied order ID used for idempotent placement retries (max 36 chars)","maxLength":36},"transactTime":{"type":"integer","format":"int64","description":"Acceptance time (ms since epoch)"},"acceptedExpireTime":{"type":"integer","format":"int64","description":"Original venue-normalized whole-second placement deadline for GTD orders (ms since epoch). Exact placement retries retain this deadline after renewal; order status reports the current effective deadline."}}},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]}}},"paths":{"/api/v1/order/placement/admission-resolution":{"put":{"tags":["Orders"],"summary":"Resolve or durably close ordinary placement admission","description":"Signature V1 query or signed form with the complete original immutable placement terms and action=RESOLVE. A PLACE or LOOKUP signature cannot authorize this mutation. Optional signed expectedRequestBinding must match before registration or closure. May arrive before create. A pending response preserves liability; only CLOSED_NO_PLACEMENT excludes both future placement and residual reservation. A placed order still requires the existing settlement/fills contract.\n\n**Weight:** 2\n\nThe ordinary placement family has a bounded pre-authentication IP bucket of 100 requests/second, burst 100. New durable identities (including resolve-before-create) additionally consume an authenticated subject bucket of 2/second, burst 10 and a process allocation bucket of 100/second, burst 100. Exact existing identities do not allocate again. Key rotation does not reset subject admission. HTTP errors never authorize release.","operationId":"resolveOrdinaryPlacementAdmission","parameters":[{"name":"contract","in":"query","required":false,"schema":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]}},{"name":"action","in":"query","description":"Signed operation discriminator; V1 does not bind HTTP method or path","required":false,"schema":{"type":"string","description":"Signed operation discriminator; V1 does not bind HTTP method or path","enum":["RESOLVE"]}},{"name":"timestamp","in":"query","description":"Fresh authentication time; may refresh on an exact retry","required":false,"schema":{"type":"integer","format":"int64","description":"Fresh authentication time; may refresh on an exact retry","maximum":253402300799999,"minimum":1}},{"name":"recvWindow","in":"query","description":"Authentication freshness window, not placement dispatch authority","required":false,"schema":{"type":"integer","format":"int64","description":"Authentication freshness window, not placement dispatch authority","maximum":253402300799999,"minimum":1}},{"name":"signature","in":"query","description":"Base64 Ed25519 signature of the ordered decoded parameters excluding signature","required":false,"schema":{"type":"string","description":"Base64 Ed25519 signature of the ordered decoded parameters excluding signature"}},{"name":"symbol","in":"query","required":false,"schema":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"}},{"name":"side","in":"query","required":false,"schema":{"type":"string","enum":["BUY","SELL"]}},{"name":"quantity","in":"query","description":"Positive base quantity; mutually exclusive with quoteOrderQty","required":false,"schema":{"type":"string","description":"Positive base quantity; mutually exclusive with quoteOrderQty","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"}},{"name":"quoteOrderQty","in":"query","description":"Positive quote budget; BUY only, preserves venue rounding","required":false,"schema":{"type":"string","description":"Positive quote budget; BUY only, preserves venue rounding","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"}},{"name":"price","in":"query","description":"Exact positive plain decimal; never binary floating point","required":false,"schema":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"}},{"name":"expireTime","in":"query","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","required":false,"schema":{"type":"integer","format":"int64","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","maximum":253402300799999,"minimum":1}},{"name":"postOnly","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"dispatchDeadline","in":"query","description":"Immutable command-admission deadline; strict now < cutoff, at most 60000ms ahead on new registration","required":false,"schema":{"type":"integer","format":"int64","description":"Immutable command-admission deadline; strict now < cutoff, at most 60000ms ahead on new registration","maximum":253402300799999,"minimum":1}},{"name":"expectedRequestBinding","in":"query","description":"Optional signed assertion of the complete canonical binding; mismatch is rejected before registration, reservation, admission or closure. Outside the economic hash.","required":false,"schema":{"type":"string","description":"Optional signed assertion of the complete canonical binding; mismatch is rejected before registration, reservation, admission or closure. Outside the economic hash.","pattern":"^[0-9a-f]{64}$"}},{"name":"dmsSettlementDomain","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","enum":["1","3"]}},{"name":"dmsPhysicalAccount","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"}},{"name":"dmsOwnershipRevision","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"}},{"name":"dmsGeneration","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"}},{"name":"dmsGrantId","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"}},{"name":"type","in":"query","required":false,"schema":{"type":"string","enum":["LIMIT"]}},{"name":"timeInForce","in":"query","required":false,"schema":{"type":"string","enum":["GTD"]}},{"name":"newClientOrderId","in":"query","required":false,"schema":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"}}],"requestBody":{"description":"One signed form, alternative to query-only parameters; never mix sources","content":{"application/x-www-form-urlencoded":{"schema":{"$ref":"#/components/schemas/OrdinaryPlacementResolutionRequest"}}},"required":false},"responses":{"200":{"description":"Historical placement or durable no-placement evidence","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrdinaryPlacementResponse"}}}},"202":{"description":"Unresolved; retain placement liability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrdinaryPlacementResponse"}}}},"400":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Capacity or rate limit; no operation outcome","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"503":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Renew only the expiry of an existing order

> Signed V1 query or form. New admission requires ENABLED protocol mode; BRIDGE and DRAIN retain recovery. Exact durable retries recover their historical result before mutable gates. Unknown parameters, duplicates, mixed signed/unsigned sources and every economic amendment are rejected. expireTime is floored to whole seconds. Optional signed dispatchDeadline is an epoch-millisecond caller cutoff, frozen at admission as the earliest of that bound, admission plus ten seconds and the predecessor expiry. Decisions require strictly earlier time. Exact retries retain the original cutoff, including after it passes. The account-scoped renewalId cannot target another order. POST remains PENDING until bounded local ORDER replay reaches a committed result; GET can return historical receipt authority before that mirror.\
> \
> \*\*Weight:\*\* 10\
> \
> Dedicated \`order\_renewal\` IP bucket: 20 requests/second, burst 4. New admission only: account bucket 2 requests/second, burst 4; exact durable retries bypass that admission bucket. New admission requires ENABLED protocol mode; BRIDGE and DRAIN retain exact retries and historical queries.

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"OrderRenewalResponse":{"type":"object","properties":{"renewalId":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["PENDING","RENEWED","REJECTED"]},"reason":{"type":"string"},"orderChangedByThisRenewal":{"type":"boolean"},"requestEventId":{"type":"integer","format":"int64"},"bookEventId":{"type":"integer","format":"int64"},"bookExecutionKey":{"type":"string"},"oldGeneration":{"type":"integer","format":"int64"},"newGeneration":{"type":"integer","format":"int64"},"oldExpireTime":{"type":"integer","format":"int64"},"acceptedExpireTime":{"type":"integer","format":"int64"},"acceptedSettlementExpireTime":{"type":"integer","format":"int64"},"observedGeneration":{"type":"integer","format":"int64"},"observedExpireTime":{"type":"integer","format":"int64"},"immutableTermsHash":{"type":"string"},"dispatchDeadline":{"type":"integer","format":"int64"},"decisionTime":{"type":"string","format":"date-time"}}},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}}}},"paths":{"/api/v1/order/renew":{"post":{"tags":["Orders"],"summary":"Renew only the expiry of an existing order","description":"Signed V1 query or form. New admission requires ENABLED protocol mode; BRIDGE and DRAIN retain recovery. Exact durable retries recover their historical result before mutable gates. Unknown parameters, duplicates, mixed signed/unsigned sources and every economic amendment are rejected. expireTime is floored to whole seconds. Optional signed dispatchDeadline is an epoch-millisecond caller cutoff, frozen at admission as the earliest of that bound, admission plus ten seconds and the predecessor expiry. Decisions require strictly earlier time. Exact retries retain the original cutoff, including after it passes. The account-scoped renewalId cannot target another order. POST remains PENDING until bounded local ORDER replay reaches a committed result; GET can return historical receipt authority before that mirror.\n\n**Weight:** 10\n\nDedicated `order_renewal` IP bucket: 20 requests/second, burst 4. New admission only: account bucket 2 requests/second, burst 4; exact durable retries bypass that admission bucket. New admission requires ENABLED protocol mode; BRIDGE and DRAIN retain exact retries and historical queries.","operationId":"renewOrder","parameters":[{"name":"renewalId","in":"query","description":"Account-scoped RENEW_V1 idempotency UUID","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"orderId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"symbol","in":"query","description":"Exact immutable placement market","required":true,"schema":{"type":"string"}},{"name":"expectedGeneration","in":"query","required":true,"schema":{"type":"integer","format":"int64","maximum":9223372036854776000,"minimum":0}},{"name":"expectedExpireTime","in":"query","description":"Whole-second-aligned predecessor deadline in epoch milliseconds","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"expireTime","in":"query","description":"Absolute new deadline; floor to whole seconds, then require strict extension","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"dispatchDeadline","in":"query","description":"Optional signed epoch-millisecond decision cutoff; must exceed admission time and never extends the server budget. Retain the same value on exact retries.","schema":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1}},{"name":"timestamp","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"recvWindow","in":"query","schema":{"type":"integer","format":"int64"}},{"name":"signature","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"RENEWED and locally applied ORDER result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderRenewalResponse"}}}},"202":{"description":"Durably admitted; result pending or awaiting local ORDER mirror","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderRenewalResponse"}}}},"400":{"description":"Malformed closed-world signed request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Stale generation/deadline or idempotency conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderRenewalResponse"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Unsupported or terminal ineligibility","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderRenewalResponse"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Rate limited before new admission","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"New admission disabled, observation timed out, or durable recovery required; retain renewalId","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Cancel an order and conditionally place its replacement

> Attempts an ordered cancel-then-place request while the request remains active. Lambdaplex does\
> not dispatch the replacement unless the old order is finally canceled, but a successful cancel\
> is not rolled back if the replacement is rejected or the request ends before placement.\
> \
> This endpoint accepts only Signature V1, LIMIT replacements, STOP\_ON\_FAILURE, and ACK responses.\
> It is inspired by Binance Spot cancel-replace but is not wire-compatible with Binance.\
> \
> Two semantic profiles are supported. The legacy V1 profile omits both \`cancelRestrictions\` and\
> \`replacementDispatchDeadline\`; its behavior and its canonical operation identity\
> (\`lambdaplex.cancel-replace.v1\`) are unchanged. The safe profile requires both fields together and\
> derives its identity from \`lambdaplex.cancel-replace.v2\`, which includes the restriction and the\
> exact dispatch-deadline millisecond; supplying only one field is a pre-mutation 400.\
> \
> Safe profile guarantees: \`cancelRestrictions=ONLY\_NEW\` is enforced by the order aggregate at the\
> cancellation linearization point, after every match committed before the book removal has\
> settled or failed. Cancellation completes only while the old order has executed exactly zero base\
> and quote quantity; otherwise the cancellation is durably rejected, the order is not canceled, and\
> the response is \`COMPLETE / FAILURE / NOT\_ATTEMPTED\` with \`CANCEL\_RESTRICTION\_FAILED\`. A fill,\
> expiry, or conflicting cancellation that wins first keeps its existing definitive classification.\
> A rejected restricted cancellation leaves the old order open but already removed from the book;\
> cancel it through the ordinary cancel path or let it expire.\
> \
> \`replacementDispatchDeadline\` is an absolute epoch-millisecond deadline on the server clock,\
> distinct from the GTD \`expireTime\` and never later than the accepted whole-second expiry (the\
> supplied \`expireTime\` floored to a whole epoch second). A fresh request whose deadline has passed\
> fails before cancellation with a \`REPLACEMENT\_DISPATCH\_DEADLINE\_EXPIRED\` problem; the same problem\
> is returned if the deadline passes after the cancel preflight but before the cancel command is\
> accepted. The deadline is rechecked after cancellation finality, during settlement cleanup and\
> release proof, after reservation evidence, immediately before the replacement reservation is\
> created, and immediately before the placement command is accepted; once it passes no replacement\
> may begin, and a proven cancellation without a replacement returns \`PARTIAL / SUCCESS / FAILURE\` with\
> \`NEW\_ORDER\_DEADLINE\_EXPIRED\` and \`PLACE\_ORDINARY\_ORDER\_WITH\_FRESH\_CLIENT\_ID\`. Recovery always runs\
> first: an identical retry after the deadline still returns an already committed replacement, and\
> an expired retry with no prior operation never starts cancellation. The internal 60-second request\
> deadline remains a separate operational bound.\
> \
> Supply every parameter in exactly one authenticated source: either the signed query string or an\
> \`application/x-www-form-urlencoded\` body. The query declarations below also describe the form\
> fields; mixing query and body input is rejected.\
> \
> \
> \*\*Weight:\*\* 50\
> \
> This endpoint also counts against your \*\*Order Count\*\* limit (verified API key;\
> observational unless \`rest.orders-api-enforced\` is true).\
> \
> Before authentication, it also consumes one request from a dedicated cancel-replace\
> pre-authentication IP bucket:\
> \*\*5 requests/second\*\* with a \*\*30 request burst\*\*. HTTP 429 means the caller must back off.<br>

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"CancelReplaceResponse":{"type":"object","properties":{"operationStatus":{"type":"string","enum":["COMPLETE","PARTIAL","UNKNOWN"]},"cancelCorrelationId":{"type":"string","format":"uuid"},"cancelResult":{"type":"string","enum":["SUCCESS","FAILURE","NOT_ATTEMPTED","UNKNOWN"]},"newOrderResult":{"type":"string","enum":["SUCCESS","FAILURE","NOT_ATTEMPTED","UNKNOWN"]},"cancelResponse":{"$ref":"#/components/schemas/FinalCancelAck"},"newOrderResponse":{"$ref":"#/components/schemas/NewOrderAck"},"cancelError":{"$ref":"#/components/schemas/CancelReplaceLegError"},"newOrderError":{"$ref":"#/components/schemas/CancelReplaceLegError"},"recovery":{"$ref":"#/components/schemas/CancelReplaceRecovery"}}},"FinalCancelAck":{"type":"object","properties":{"symbol":{"type":"string"},"orderId":{"type":"string","format":"uuid"},"origClientOrderId":{"type":"string"},"transactTime":{"type":"integer","format":"int64"},"price":{"type":"number"},"origQty":{"type":"number"},"executedQty":{"type":"number"},"cumulativeQuoteQty":{"type":"number"},"status":{"type":"string","description":"Order status","enum":["OPEN","CANCELED","FILLED","PARTIALLY_FILLED","EXPIRED","FAILED","ACTIVE"]},"timeInForce":{"type":"string","description":"Applied to LIMIT and STOP_LIMIT orders. Explicit GTD requires expireTime. GTC aliases to GTD with the venue default expiry; POST_ONLY is that alias plus postOnly=true. IOC and FOK are immediate LIMIT policies.","enum":["GTC","IOC","FOK","POST_ONLY","GTD","GTC","GTD","IOC","FOK","POST_ONLY"]},"type":{"type":"string","description":"Supported order types. LIMIT supports GTC/GTD/IOC/FOK/POST_ONLY. STOP_LIMIT supports explicit GTD and the legacy GTC/POST_ONLY aliases.\nMARKET and STOP_MARKET require quantity and reject timeInForce.\nSTOP_LIMIT additionally requires price, stopPrice, and stopComparison.\nSTOP_MARKET additionally requires stopPrice and stopComparison.\n","enum":["LIMIT","MARKET","STOP_LIMIT","STOP_MARKET"]},"side":{"type":"string","description":"Order side","enum":["BUY","SELL"]}}},"NewOrderAck":{"type":"object","description":"Acknowledgement returned when an order is accepted","properties":{"symbol":{"type":"string","description":"Trading pair symbol"},"orderId":{"type":"string","description":"Exchange-assigned order ID"},"clientOrderId":{"type":"string","description":"Client-supplied order ID used for idempotent placement retries (max 36 chars)","maxLength":36},"transactTime":{"type":"integer","format":"int64","description":"Acceptance time (ms since epoch)"},"acceptedExpireTime":{"type":"integer","format":"int64","description":"Original venue-normalized whole-second placement deadline for GTD orders (ms since epoch). Exact placement retries retain this deadline after renewal; order status reports the current effective deadline."}}},"CancelReplaceLegError":{"type":"object","properties":{"code":{"type":"string","enum":["CANCEL_TARGET_NOT_CANCELLABLE","CANCEL_CONFLICTING_REQUEST","CANCEL_LOST_TO_TERMINAL_EVENT","CANCEL_RESTRICTION_FAILED","NEW_CLIENT_ORDER_ID_CONFLICT","REPLACEMENT_PROVENANCE_CONFLICT","NEW_ORDER_REJECTED","SETTLEMENT_CLEANUP_FAILED","RELEASE_PROOF_UNAVAILABLE","RELEASE_AUTHORITY_UNAVAILABLE","RELEASE_RESIDUAL_REMAINS","REPLACEMENT_RESERVATION_UNRESOLVED","NEW_ORDER_DEADLINE_EXPIRED","EXECUTION_STATUS_UNKNOWN","STOPPED_ON_CANCEL_FAILURE","DMS_PROTECTED_BINDING_REQUIRED"]},"message":{"type":"string"},"retryable":{"type":"boolean"}}},"CancelReplaceRecovery":{"type":"object","properties":{"action":{"type":"string","enum":["RETRY_IDENTICAL_SEMANTIC_REQUEST","PLACE_ORDINARY_ORDER_WITH_FRESH_CLIENT_ID","RECONCILE_AND_CONTACT_SUPPORT"]},"authentication":{"type":"string","enum":["REFRESH_TIMESTAMP_RECV_WINDOW_AND_SIGNATURE"]},"preserveNewClientOrderId":{"type":"boolean"},"reconcileVia":{"type":"string","enum":["ORDER_STATUS_AND_USER_DATA"]}}},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]}},"responses":{"RateLimited":{"description":"Too Many Requests - Rate limit exceeded.","headers":{"X-PLEX-USED-WEIGHT-API":{"description":"Rounded burst capacity minus remaining verified API-key tokens (when authenticated accounting ran)","schema":{}},"Retry-After":{"description":"Whole seconds to wait before retrying (ceiling of the computed delay)","schema":{}},"X-PLEX-ORDER-COUNT":{"description":"Rounded order burst capacity minus remaining verified API-key order tokens (when order accounting ran)","schema":{}},"X-PLEX-USED-WEIGHT-IP":{"description":"Rounded burst capacity minus remaining IP tokens; on rejection, describes the rejecting bucket","schema":{}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}},"paths":{"/api/v1/order/cancelReplace":{"post":{"tags":["Orders"],"summary":"Cancel an order and conditionally place its replacement","description":"Attempts an ordered cancel-then-place request while the request remains active. Lambdaplex does\nnot dispatch the replacement unless the old order is finally canceled, but a successful cancel\nis not rolled back if the replacement is rejected or the request ends before placement.\n\nThis endpoint accepts only Signature V1, LIMIT replacements, STOP_ON_FAILURE, and ACK responses.\nIt is inspired by Binance Spot cancel-replace but is not wire-compatible with Binance.\n\nTwo semantic profiles are supported. The legacy V1 profile omits both `cancelRestrictions` and\n`replacementDispatchDeadline`; its behavior and its canonical operation identity\n(`lambdaplex.cancel-replace.v1`) are unchanged. The safe profile requires both fields together and\nderives its identity from `lambdaplex.cancel-replace.v2`, which includes the restriction and the\nexact dispatch-deadline millisecond; supplying only one field is a pre-mutation 400.\n\nSafe profile guarantees: `cancelRestrictions=ONLY_NEW` is enforced by the order aggregate at the\ncancellation linearization point, after every match committed before the book removal has\nsettled or failed. Cancellation completes only while the old order has executed exactly zero base\nand quote quantity; otherwise the cancellation is durably rejected, the order is not canceled, and\nthe response is `COMPLETE / FAILURE / NOT_ATTEMPTED` with `CANCEL_RESTRICTION_FAILED`. A fill,\nexpiry, or conflicting cancellation that wins first keeps its existing definitive classification.\nA rejected restricted cancellation leaves the old order open but already removed from the book;\ncancel it through the ordinary cancel path or let it expire.\n\n`replacementDispatchDeadline` is an absolute epoch-millisecond deadline on the server clock,\ndistinct from the GTD `expireTime` and never later than the accepted whole-second expiry (the\nsupplied `expireTime` floored to a whole epoch second). A fresh request whose deadline has passed\nfails before cancellation with a `REPLACEMENT_DISPATCH_DEADLINE_EXPIRED` problem; the same problem\nis returned if the deadline passes after the cancel preflight but before the cancel command is\naccepted. The deadline is rechecked after cancellation finality, during settlement cleanup and\nrelease proof, after reservation evidence, immediately before the replacement reservation is\ncreated, and immediately before the placement command is accepted; once it passes no replacement\nmay begin, and a proven cancellation without a replacement returns `PARTIAL / SUCCESS / FAILURE` with\n`NEW_ORDER_DEADLINE_EXPIRED` and `PLACE_ORDINARY_ORDER_WITH_FRESH_CLIENT_ID`. Recovery always runs\nfirst: an identical retry after the deadline still returns an already committed replacement, and\nan expired retry with no prior operation never starts cancellation. The internal 60-second request\ndeadline remains a separate operational bound.\n\nSupply every parameter in exactly one authenticated source: either the signed query string or an\n`application/x-www-form-urlencoded` body. The query declarations below also describe the form\nfields; mixing query and body input is rejected.\n\n\n**Weight:** 50\n\nThis endpoint also counts against your **Order Count** limit (verified API key;\nobservational unless `rest.orders-api-enforced` is true).\n\nBefore authentication, it also consumes one request from a dedicated cancel-replace\npre-authentication IP bucket:\n**5 requests/second** with a **30 request burst**. HTTP 429 means the caller must back off.\n","operationId":"cancelReplaceOrder","parameters":[{"name":"symbol","in":"query","description":"Trading pair symbol","required":true,"schema":{"type":"string","minLength":1}},{"name":"side","in":"query","description":"Replacement order side","required":true,"schema":{"type":"string","enum":["BUY","SELL"]}},{"name":"type","in":"query","description":"Replacement order type; this profile accepts only LIMIT","required":true,"schema":{"type":"string","enum":["LIMIT"]}},{"name":"cancelReplaceMode","in":"query","description":"Cancel-replace mode; this profile accepts only STOP_ON_FAILURE","required":true,"schema":{"type":"string","enum":["STOP_ON_FAILURE"]}},{"name":"cancelOrderId","in":"query","description":"UUID of the order to cancel. At least one cancel selector is required; when both selectors are present they must identify the same order.","schema":{"type":"string","format":"uuid"}},{"name":"cancelOrigClientOrderId","in":"query","description":"Original client order ID of the order to cancel. At least one cancel selector is required.","schema":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"}},{"name":"timeInForce","in":"query","description":"Replacement time in force. GTD requires expireTime; postOnly is invalid with IOC or FOK.","required":true,"schema":{"type":"string","enum":["GTC","GTD","POST_ONLY"]}},{"name":"expireTime","in":"query","description":"Absolute expiry in epoch milliseconds; required only for GTD","schema":{"type":"integer","format":"int64","minimum":1}},{"name":"postOnly","in":"query","description":"Prevent the replacement from taking liquidity","schema":{"type":"boolean","default":false}},{"name":"quantity","in":"query","description":"Positive base quantity; specify exactly one of quantity or quoteOrderQty","schema":{"type":"number","minimum":0}},{"name":"quoteOrderQty","in":"query","description":"Positive quote-asset budget for a BUY replacement; specify exactly one of quantity or quoteOrderQty","schema":{"type":"number","minimum":0}},{"name":"price","in":"query","description":"Positive replacement limit price","required":true,"schema":{"type":"number","minimum":0}},{"name":"newClientOrderId","in":"query","description":"Client-assigned ID for the replacement and its idempotent retries; it must differ from cancelOrigClientOrderId","required":true,"schema":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"}},{"name":"newOrderRespType","in":"query","description":"Replacement response profile; omitted values default to ACK","schema":{"type":"string","default":"ACK","enum":["ACK"]}},{"name":"cancelRestrictions","in":"query","description":"Safe-profile zero-fill restriction; must be supplied together with replacementDispatchDeadline. ONLY_NEW cancels only while the old order has executed exactly zero base and quote quantity, decided by the order aggregate at the cancellation linearization point.","schema":{"type":"string","enum":["ONLY_NEW"]}},{"name":"replacementDispatchDeadline","in":"query","description":"Safe-profile absolute server-clock deadline in epoch milliseconds after which no replacement reservation or placement may begin; must be supplied together with cancelRestrictions and, for GTD, must not be later than the accepted whole-second expireTime (expireTime floored to a whole second). Distinct from expireTime and from the internal request deadline.","schema":{"type":"integer","format":"int64","minimum":1}},{"name":"timestamp","in":"query","description":"Signature V1 request timestamp in Unix epoch milliseconds","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"recvWindow","in":"query","description":"Signature V1 receive window in milliseconds","schema":{"type":"integer","format":"int64","minimum":1}},{"name":"signature","in":"query","description":"Ed25519 Signature V1 over the ordered parameter payload","required":true,"schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"Both cancellation and replacement were durably accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelReplaceResponse"}}}},"400":{"description":"Preflight rejection (including an already-expired safe-profile dispatch deadline) or definitive cancellation failure (including a refused ONLY_NEW cancellation)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelReplaceResponse"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Cancellation succeeded but replacement definitively failed, or pre-cancel replacement provenance conflicts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelReplaceResponse"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Typed uncertain outcome or pre-mutation temporary unavailability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelReplaceResponse"}},"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Place a legacy or protected ordinary order

> Places a new order for the authenticated account.\
> \
> \## Security\
> \
> Requires both \*\*XApiKey\*\* (header) and \*\*Ed25519Sig\*\* (query) via the global security requirement.\
> The signature is computed over the request query string (including \`timestamp\` and any other parameters you send).\
> \
> \## Parameter Rules\
> \
> \- \`LIMIT\`: requires \`quantity\`, or \`quoteOrderQty\` for BUY orders, plus \`price\` and \`timeInForce\`.\
> \- \`GTD\`: requires absolute \`expireTime\` in epoch milliseconds. Lambdaplex floors it to a whole epoch second and returns \`acceptedExpireTime\`.\
> \- \`GTC\` is a compatibility alias for \`GTD\` with the venue's previous default expiry. The ACK returns the canonical \`acceptedExpireTime\`.\
> \- \`POST\_ONLY\` is the legacy \`GTC\` alias plus \`postOnly=true\`; new clients may instead send \`GTC\` or \`GTD\` with \`postOnly=true\`.\
> \- \`MARKET\`: requires \`quantity\`, or \`quoteOrderQty\` for BUY orders.\
> \- A \`BOT\` may opt a small \`MARKET\` order, or a small plain base-sized \`LIMIT\` order with \`timeInForce=IOC\`, into network-cost-recovery pricing by signing \`acceptedMaxTakerBps\`. The server still tries the normal fee tier first and never charges above the signed ceiling. An earlier \`/order/fee-quote\` response is advisory and is not an authorization artifact.\
> \- A dust-priced \`LIMIT IOC\` never matches beyond \`price\`, never rests, and expires any unexecuted remainder immediately; a partial fill covers the network-cost target for the executed prefix only. \`acceptedMaxTakerBps\` on any other \`LIMIT\` time-in-force, with \`quoteOrderQty\`, with \`postOnly\`, or on a stop order is rejected with problem \`code=DUST\_ORDER\_TYPE\_NOT\_SUPPORTED\`. An IOC may report \`EXPIRED\` before fills from its matched prefix finish settling; follow the order status until settlement reports the final fills.\
> \- \`STOP\_MARKET\`: requires \`quantity\`, or \`quoteOrderQty\` for BUY orders, plus \`stopPrice\` and \`stopComparison\`.\
> \- \`STOP\_LIMIT\`: requires \`quantity\`, or \`quoteOrderQty\` for BUY orders, plus \`price\`, \`stopPrice\`, \`stopComparison\`, and either explicit \`GTD\` or a legacy \`GTC\`/\`POST\_ONLY\` alias.\
> \- A successful \`postOnly=true\` ACK confirms durable order placement, not synchronous book admission. The serialized book command later either rests the full executable order without taking liquidity or declines it atomically; a decline is canceled asynchronously and appears on the user-data stream.\
> \
> \## Examples (query-string style)\
> \
> \- LIMIT BUY GTD: \`symbol=PLEX-HBAR\&side=BUY\&type=LIMIT\&timeInForce=GTD\&expireTime=1724952866123\&quantity=1.5\&price=0.01234567\&newClientOrderId=myorder-001\&timestamp=1724952745123\`\
> \- LIMIT BUY IOC: \`symbol=PLEX-HBAR\&side=BUY\&type=LIMIT\&timeInForce=IOC\&quantity=1.5\&price=0.01234567\&newClientOrderId=myorder-004\&timestamp=1724952745123\`\
> \- LIMIT SELL FOK: \`symbol=PLEX-HBAR\&side=SELL\&type=LIMIT\&timeInForce=FOK\&quantity=250.0\&price=0.01234567\&newClientOrderId=myorder-005\&timestamp=1724952745123\`\
> \- LIMIT BUY by quote budget FOK: \`symbol=PLEX-HBAR\&side=BUY\&type=LIMIT\&timeInForce=FOK\&quoteOrderQty=100.00\&price=0.01234567\&newClientOrderId=myorder-006\&timestamp=1724952745123\`\
> \- LIMIT SELL POST\_ONLY GTD: \`symbol=PLEX-HBAR\&side=SELL\&type=LIMIT\&timeInForce=GTD\&expireTime=1724952866123\&postOnly=true\&quantity=250.0\&price=0.01234567\&newClientOrderId=myorder-007\&timestamp=1724952745123\`\
> \- MARKET SELL: \`symbol=PLEX-HBAR\&side=SELL\&type=MARKET\&quantity=250.0\&newClientOrderId=myorder-002\&timestamp=1724952745123\`\
> \- SMALL MARKET BUY WITH FEE CEILING: \`symbol=HBAR-USDC\&side=BUY\&type=MARKET\&quoteOrderQty=1.00\&newClientOrderId=myorder-dust-001\&acceptedMaxTakerBps=506\&timestamp=1724952745123\`\
> \- SMALL LIMIT IOC BUY WITH FEE CEILING: \`symbol=HBAR-USDC\&side=BUY\&type=LIMIT\&timeInForce=IOC\&quantity=25\&price=0.2210\&newClientOrderId=myorder-dust-002\&acceptedMaxTakerBps=506\&timestamp=1724952745123\`\
> \- STOP\_LIMIT BUY: \`symbol=PLEX-HBAR\&side=BUY\&type=STOP\_LIMIT\&timeInForce=GTD\&expireTime=1724952866123\&quantity=100.0\&price=0.01200000\&stopPrice=0.01150000\&newClientOrderId=myorder-003\&timestamp=1724952745123\&stopComparison=LE\`\
> \
> \
> \## Protected ordinary placement\
> \
> ORDINARY\_PLACEMENT\_V1 is opt-in: contract, action=PLACE and dispatchDeadline must all be supplied. Only explicit LIMIT/GTD, base quantity or BUY quoteOrderQty, optional postOnly are protected. All protection and DMS fields absent preserves the legacy request and NewOrderAck response. A legacy ACK is never fencing evidence. Query-only or one signed form; never mix sources. Economic fields are immutable across retries. New dispatch requires venueTime < dispatchDeadline; equality is too late. PENDING and all HTTP errors retain liability.\
> \
> \*\*Weight:\*\* 1\
> \
> This endpoint also counts against your \*\*Order Count\*\* limit (verified API key;\
> observational unless \`rest.orders-api-enforced\` is true).<br>

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"OrdinaryPlacementRequest":{"type":"object","additionalProperties":false,"allOf":[{"oneOf":[{"required":["dmsSettlementDomain","dmsPhysicalAccount","dmsOwnershipRevision","dmsGeneration","dmsGrantId"]},{"not":{"anyOf":[{"required":["dmsSettlementDomain"]},{"required":["dmsPhysicalAccount"]},{"required":["dmsOwnershipRevision"]},{"required":["dmsGeneration"]},{"required":["dmsGrantId"]}]}}]}],"description":"Exactly one of quantity or BUY-only quoteOrderQty is required. All authority fields are authenticated. Unknown fields, duplicate names and unsigned secondary sources are rejected. expireTime floors to seconds; dispatchDeadline retains milliseconds and may not exceed it. DMS intent is reserved and always refused until the full admission guard chain exists.","oneOf":[{"not":{"required":["quoteOrderQty"]},"required":["quantity"]},{"not":{"required":["quantity"]},"required":["quoteOrderQty"]}],"properties":{"contract":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]},"action":{"type":"string","description":"Signed operation discriminator; V1 does not bind HTTP method or path","enum":["PLACE"]},"timestamp":{"type":"integer","format":"int64","description":"Fresh authentication time; may refresh on an exact retry","maximum":253402300799999,"minimum":1},"recvWindow":{"type":"integer","format":"int64","description":"Authentication freshness window, not placement dispatch authority","maximum":253402300799999,"minimum":1},"signature":{"type":"string","description":"Base64 Ed25519 signature of the ordered decoded parameters excluding signature"},"symbol":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"},"side":{"type":"string","enum":["BUY","SELL"]},"quantity":{"type":"string","description":"Positive base quantity; mutually exclusive with quoteOrderQty","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"quoteOrderQty":{"type":"string","description":"Positive quote budget; BUY only, preserves venue rounding","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"price":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"expireTime":{"type":"integer","format":"int64","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","maximum":253402300799999,"minimum":1},"postOnly":{"type":"boolean","default":false},"dispatchDeadline":{"type":"integer","format":"int64","description":"Immutable command-admission deadline; strict now < cutoff, at most 60000ms ahead on new registration","maximum":253402300799999,"minimum":1},"expectedRequestBinding":{"type":"string","description":"Optional signed assertion of the complete canonical binding; mismatch is rejected before registration, reservation, admission or closure. Outside the economic hash.","pattern":"^[0-9a-f]{64}$"},"dmsSettlementDomain":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","enum":["1","3"]},"dmsPhysicalAccount":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"},"dmsOwnershipRevision":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"},"dmsGeneration":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"},"dmsGrantId":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"},"type":{"type":"string","enum":["LIMIT"]},"timeInForce":{"type":"string","enum":["GTD"]},"newClientOrderId":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"}},"required":["action","contract","dispatchDeadline","expireTime","newClientOrderId","price","side","signature","symbol","timeInForce","timestamp","type"]},"NewOrderAck":{"type":"object","description":"Acknowledgement returned when an order is accepted","properties":{"symbol":{"type":"string","description":"Trading pair symbol"},"orderId":{"type":"string","description":"Exchange-assigned order ID"},"clientOrderId":{"type":"string","description":"Client-supplied order ID used for idempotent placement retries (max 36 chars)","maxLength":36},"transactTime":{"type":"integer","format":"int64","description":"Acceptance time (ms since epoch)"},"acceptedExpireTime":{"type":"integer","format":"int64","description":"Original venue-normalized whole-second placement deadline for GTD orders (ms since epoch). Exact placement retries retain this deadline after renewal; order status reports the current effective deadline."}}},"OrdinaryPlacementResponse":{"type":"object","additionalProperties":false,"properties":{"contract":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]},"status":{"type":"string","enum":["PENDING","PLACED","CLOSED_NO_PLACEMENT"]},"subjectId":{"type":"string","format":"uuid"},"ownerId":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"accountId":{"type":"integer","format":"int64","minimum":0},"baseTokenId":{"type":"integer","format":"int64","minimum":0},"quoteTokenId":{"type":"integer","format":"int64","minimum":0},"symbolId":{"type":"integer","format":"int64","minimum":0},"requestBinding":{"type":"string","description":"SHA-256 of version domain and canonical scoped request JSON; see frozen fixtures","pattern":"^[0-9a-f]{64}$"},"request":{"$ref":"#/components/schemas/OrdinaryPlacementTerms"},"admittedAt":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1},"closedAt":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1},"placementEventId":{"type":"integer","format":"int64","minimum":1},"placement":{"$ref":"#/components/schemas/NewOrderAck","description":"Original accepted placement, including expiry before native renewal; no current-liveness or settlement claim"},"reservationState":{"type":"string","enum":["UNRESOLVED","NONE","ORDER_OWNED"]}},"required":["accountId","baseTokenId","contract","orderId","ownerId","quoteTokenId","request","requestBinding","reservationState","status","subjectId","symbolId"]},"OrdinaryPlacementTerms":{"type":"object","additionalProperties":false,"properties":{"symbol":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"},"side":{"type":"string","enum":["BUY","SELL"]},"clientOrderId":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"},"quantity":{"type":["null","string"],"description":"Positive base quantity; mutually exclusive with quoteOrderQty","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"quoteOrderQty":{"type":["null","string"],"description":"Positive quote budget; BUY only, preserves venue rounding","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"price":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"expireTime":{"type":"integer","format":"int64","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","maximum":253402300799999,"minimum":1},"postOnly":{"type":"boolean","default":false},"dispatchDeadline":{"type":"integer","format":"int64","description":"Immutable command-admission deadline; strict now < cutoff, at most 60000ms ahead on new registration","maximum":253402300799999,"minimum":1}},"required":["clientOrderId","dispatchDeadline","expireTime","postOnly","price","quantity","quoteOrderQty","side","symbol"]},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]}}},"paths":{"/api/v1/order":{"post":{"tags":["Orders"],"summary":"Place a legacy or protected ordinary order","description":"Places a new order for the authenticated account.\n\n## Security\n\nRequires both **XApiKey** (header) and **Ed25519Sig** (query) via the global security requirement.\nThe signature is computed over the request query string (including `timestamp` and any other parameters you send).\n\n## Parameter Rules\n\n- `LIMIT`: requires `quantity`, or `quoteOrderQty` for BUY orders, plus `price` and `timeInForce`.\n- `GTD`: requires absolute `expireTime` in epoch milliseconds. Lambdaplex floors it to a whole epoch second and returns `acceptedExpireTime`.\n- `GTC` is a compatibility alias for `GTD` with the venue's previous default expiry. The ACK returns the canonical `acceptedExpireTime`.\n- `POST_ONLY` is the legacy `GTC` alias plus `postOnly=true`; new clients may instead send `GTC` or `GTD` with `postOnly=true`.\n- `MARKET`: requires `quantity`, or `quoteOrderQty` for BUY orders.\n- A `BOT` may opt a small `MARKET` order, or a small plain base-sized `LIMIT` order with `timeInForce=IOC`, into network-cost-recovery pricing by signing `acceptedMaxTakerBps`. The server still tries the normal fee tier first and never charges above the signed ceiling. An earlier `/order/fee-quote` response is advisory and is not an authorization artifact.\n- A dust-priced `LIMIT IOC` never matches beyond `price`, never rests, and expires any unexecuted remainder immediately; a partial fill covers the network-cost target for the executed prefix only. `acceptedMaxTakerBps` on any other `LIMIT` time-in-force, with `quoteOrderQty`, with `postOnly`, or on a stop order is rejected with problem `code=DUST_ORDER_TYPE_NOT_SUPPORTED`. An IOC may report `EXPIRED` before fills from its matched prefix finish settling; follow the order status until settlement reports the final fills.\n- `STOP_MARKET`: requires `quantity`, or `quoteOrderQty` for BUY orders, plus `stopPrice` and `stopComparison`.\n- `STOP_LIMIT`: requires `quantity`, or `quoteOrderQty` for BUY orders, plus `price`, `stopPrice`, `stopComparison`, and either explicit `GTD` or a legacy `GTC`/`POST_ONLY` alias.\n- A successful `postOnly=true` ACK confirms durable order placement, not synchronous book admission. The serialized book command later either rests the full executable order without taking liquidity or declines it atomically; a decline is canceled asynchronously and appears on the user-data stream.\n\n## Examples (query-string style)\n\n- LIMIT BUY GTD: `symbol=PLEX-HBAR&side=BUY&type=LIMIT&timeInForce=GTD&expireTime=1724952866123&quantity=1.5&price=0.01234567&newClientOrderId=myorder-001&timestamp=1724952745123`\n- LIMIT BUY IOC: `symbol=PLEX-HBAR&side=BUY&type=LIMIT&timeInForce=IOC&quantity=1.5&price=0.01234567&newClientOrderId=myorder-004&timestamp=1724952745123`\n- LIMIT SELL FOK: `symbol=PLEX-HBAR&side=SELL&type=LIMIT&timeInForce=FOK&quantity=250.0&price=0.01234567&newClientOrderId=myorder-005&timestamp=1724952745123`\n- LIMIT BUY by quote budget FOK: `symbol=PLEX-HBAR&side=BUY&type=LIMIT&timeInForce=FOK&quoteOrderQty=100.00&price=0.01234567&newClientOrderId=myorder-006&timestamp=1724952745123`\n- LIMIT SELL POST_ONLY GTD: `symbol=PLEX-HBAR&side=SELL&type=LIMIT&timeInForce=GTD&expireTime=1724952866123&postOnly=true&quantity=250.0&price=0.01234567&newClientOrderId=myorder-007&timestamp=1724952745123`\n- MARKET SELL: `symbol=PLEX-HBAR&side=SELL&type=MARKET&quantity=250.0&newClientOrderId=myorder-002&timestamp=1724952745123`\n- SMALL MARKET BUY WITH FEE CEILING: `symbol=HBAR-USDC&side=BUY&type=MARKET&quoteOrderQty=1.00&newClientOrderId=myorder-dust-001&acceptedMaxTakerBps=506&timestamp=1724952745123`\n- SMALL LIMIT IOC BUY WITH FEE CEILING: `symbol=HBAR-USDC&side=BUY&type=LIMIT&timeInForce=IOC&quantity=25&price=0.2210&newClientOrderId=myorder-dust-002&acceptedMaxTakerBps=506&timestamp=1724952745123`\n- STOP_LIMIT BUY: `symbol=PLEX-HBAR&side=BUY&type=STOP_LIMIT&timeInForce=GTD&expireTime=1724952866123&quantity=100.0&price=0.01200000&stopPrice=0.01150000&newClientOrderId=myorder-003&timestamp=1724952745123&stopComparison=LE`\n\n\n## Protected ordinary placement\n\nORDINARY_PLACEMENT_V1 is opt-in: contract, action=PLACE and dispatchDeadline must all be supplied. Only explicit LIMIT/GTD, base quantity or BUY quoteOrderQty, optional postOnly are protected. All protection and DMS fields absent preserves the legacy request and NewOrderAck response. A legacy ACK is never fencing evidence. Query-only or one signed form; never mix sources. Economic fields are immutable across retries. New dispatch requires venueTime < dispatchDeadline; equality is too late. PENDING and all HTTP errors retain liability.\n\n**Weight:** 1\n\nThis endpoint also counts against your **Order Count** limit (verified API key;\nobservational unless `rest.orders-api-enforced` is true).\n","operationId":"postOrder","parameters":[{"name":"symbol","in":"query","description":" Required in the chosen query or signed-form source.","required":false,"schema":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"}},{"name":"side","in":"query","description":" Required in the chosen query or signed-form source.","required":false,"schema":{"type":"string","enum":["BUY","SELL"]}},{"name":"type","in":"query","description":" Required in the chosen query or signed-form source.","required":false,"schema":{"type":"string","enum":["LIMIT","MARKET","STOP_LIMIT","STOP_MARKET"]}},{"name":"timeInForce","in":"query","required":false,"schema":{"type":"string","enum":["GTD","GTC","POST_ONLY","IOC","FOK"]}},{"name":"expireTime","in":"query","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","required":false,"schema":{"type":"integer","format":"int64","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","maximum":253402300799999,"minimum":1}},{"name":"postOnly","in":"query","required":false,"schema":{"type":"boolean","default":false}},{"name":"quantity","in":"query","description":"Positive base quantity; mutually exclusive with quoteOrderQty","required":false,"schema":{"type":"string","description":"Positive base quantity; mutually exclusive with quoteOrderQty","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"}},{"name":"quoteOrderQty","in":"query","description":"Positive quote budget; BUY only, preserves venue rounding","required":false,"schema":{"type":"string","description":"Positive quote budget; BUY only, preserves venue rounding","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"}},{"name":"price","in":"query","description":"Exact positive plain decimal; never binary floating point","required":false,"schema":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"}},{"name":"newClientOrderId","in":"query","description":" Required in the chosen query or signed-form source.","required":false,"schema":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"}},{"name":"acceptedMaxTakerBps","in":"query","required":false,"schema":{"type":"integer","format":"int32","maximum":9999,"minimum":0}},{"name":"stopPrice","in":"query","description":"Exact positive plain decimal; never binary floating point","required":false,"schema":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"}},{"name":"stopComparison","in":"query","required":false,"schema":{"type":"string","enum":["GE","LE"]}},{"name":"contract","in":"query","required":false,"schema":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]}},{"name":"action","in":"query","description":"Signed operation discriminator; V1 does not bind HTTP method or path","required":false,"schema":{"type":"string","description":"Signed operation discriminator; V1 does not bind HTTP method or path","enum":["PLACE"]}},{"name":"timestamp","in":"query","description":" Required in the chosen query or signed-form source.","required":false,"schema":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1}},{"name":"recvWindow","in":"query","required":false,"schema":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1}},{"name":"signature","in":"query","description":" Required in the chosen query or signed-form source.","required":false,"schema":{"type":"string"}},{"name":"dispatchDeadline","in":"query","description":"Immutable command-admission deadline; strict now < cutoff, at most 60000ms ahead on new registration","required":false,"schema":{"type":"integer","format":"int64","description":"Immutable command-admission deadline; strict now < cutoff, at most 60000ms ahead on new registration","maximum":253402300799999,"minimum":1}},{"name":"expectedRequestBinding","in":"query","description":"Optional signed assertion of the complete canonical binding; mismatch is rejected before registration, reservation, admission or closure. Outside the economic hash.","required":false,"schema":{"type":"string","description":"Optional signed assertion of the complete canonical binding; mismatch is rejected before registration, reservation, admission or closure. Outside the economic hash.","pattern":"^[0-9a-f]{64}$"}},{"name":"dmsSettlementDomain","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","enum":["1","3"]}},{"name":"dmsPhysicalAccount","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"}},{"name":"dmsOwnershipRevision","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"}},{"name":"dmsGeneration","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted. Positive signed 64-bit decimal; physical account must match the selected settlement-domain band.","pattern":"^[1-9][0-9]{0,18}$"}},{"name":"dmsGrantId","in":"query","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","required":false,"schema":{"type":"string","description":"Reserved signed DMS intent: supply all five dms fields or none. Complete intent currently returns 422 UNSUPPORTED_PLACEMENT_PROFILE; no DMS placement is admitted.","pattern":"^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$"}}],"requestBody":{"description":"Alternative to query parameters: one complete signed form. The protected schema applies when contract/action/dispatchDeadline/expectedRequestBinding or any reserved dms field is used; otherwise use the legacy query fields as a form.","content":{"application/x-www-form-urlencoded":{"schema":{"anyOf":[{"$ref":"#/components/schemas/OrdinaryPlacementRequest"},{"type":"object","additionalProperties":false,"properties":{"symbol":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"},"side":{"type":"string","enum":["BUY","SELL"]},"quantity":{"type":"string","description":"Positive base quantity; mutually exclusive with quoteOrderQty","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"quoteOrderQty":{"type":"string","description":"Positive quote budget; BUY only, preserves venue rounding","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"price":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"expireTime":{"type":"integer","format":"int64","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","maximum":253402300799999,"minimum":1},"postOnly":{"type":"boolean","default":false},"newClientOrderId":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"},"type":{"type":"string","enum":["LIMIT","MARKET","STOP_LIMIT","STOP_MARKET"]},"timeInForce":{"type":"string","enum":["GTD","GTC","POST_ONLY","IOC","FOK"]},"stopPrice":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"stopComparison":{"type":"string","enum":["GE","LE"]},"acceptedMaxTakerBps":{"type":"integer","format":"int32","maximum":9999,"minimum":0},"timestamp":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1},"recvWindow":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1},"signature":{"type":"string"}},"required":["newClientOrderId","side","signature","symbol","timestamp","type"]}]}}},"required":false},"responses":{"200":{"description":"Legacy ACK or durable protected placement/closure; inspect contract before interpreting evidence","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/NewOrderAck"},{"$ref":"#/components/schemas/OrdinaryPlacementResponse"}]}}}},"202":{"description":"Protected operation unresolved; no release authorization","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrdinaryPlacementResponse"}}}},"400":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"408":{"description":"Request Timeout — upstream or placement timeout","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}},"application/json":{"schema":{"$ref":"#/components/schemas/NewOrderAck"}}}},"409":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Capacity or rate limit; no operation outcome","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"500":{"description":"Server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}},"application/json":{"schema":{"$ref":"#/components/schemas/NewOrderAck"}}}},"503":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Cancel an existing order

> Deletes an existing order for the authenticated account.\
> \
> \## Security\
> \
> Requires both \*\*XApiKey\*\* (header) and \*\*Ed25519Sig\*\* (query) via the global security requirement.\
> The signature is computed over the request query string (including \`timestamp\` and any other parameters you send).\
> \
> \
> \*\*Weight:\*\* 1\
> \
> This endpoint also counts against your \*\*Order Count\*\* limit (verified API key;\
> observational unless \`rest.orders-api-enforced\` is true).<br>

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"CancelOrderAck":{"type":"object","description":"Acknowledgement returned when an order is canceled","properties":{"symbol":{"type":"string","description":"Trading pair symbol"},"origClientOrderId":{"type":"string","description":"Original client-supplied order ID (if any, max 36 chars)","maxLength":36},"orderId":{"type":"string","description":"Exchange-assigned order ID"},"transactTime":{"type":"integer","format":"int64","description":"Cancel time (ms since epoch)"},"price":{"type":"number","description":"Price for LIMIT/*_LIMIT orders; null for MARKET/STOP orders"},"origQty":{"type":"number","description":"Original order quantity (base asset)"},"executedQty":{"type":"number","description":"Executed quantity (base asset)"},"cumulativeQuoteQty":{"type":"number","description":"Cumulative quote quantity (quote asset)"},"status":{"type":"string","description":"Canceled order status","enum":["OPEN","CANCELED","FILLED","PARTIALLY_FILLED","EXPIRED","FAILED","ACTIVE"]},"timeInForce":{"type":"string","description":"Time in force for LIMIT/*_LIMIT orders; null otherwise","enum":["GTC","IOC","FOK","POST_ONLY","GTD","GTC","GTD","IOC","FOK","POST_ONLY"]},"type":{"type":"string","description":"Order type","enum":["LIMIT","MARKET","STOP_LIMIT","STOP_MARKET"]},"side":{"type":"string","description":"Order side","enum":["BUY","SELL"]}}},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]}},"responses":{"RateLimited":{"description":"Too Many Requests - Rate limit exceeded.","headers":{"X-PLEX-USED-WEIGHT-API":{"description":"Rounded burst capacity minus remaining verified API-key tokens (when authenticated accounting ran)","schema":{}},"Retry-After":{"description":"Whole seconds to wait before retrying (ceiling of the computed delay)","schema":{}},"X-PLEX-ORDER-COUNT":{"description":"Rounded order burst capacity minus remaining verified API-key order tokens (when order accounting ran)","schema":{}},"X-PLEX-USED-WEIGHT-IP":{"description":"Rounded burst capacity minus remaining IP tokens; on rejection, describes the rejecting bucket","schema":{}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}},"paths":{"/api/v1/order":{"delete":{"tags":["Orders"],"summary":"Cancel an existing order","description":"Deletes an existing order for the authenticated account.\n\n## Security\n\nRequires both **XApiKey** (header) and **Ed25519Sig** (query) via the global security requirement.\nThe signature is computed over the request query string (including `timestamp` and any other parameters you send).\n\n\n**Weight:** 1\n\nThis endpoint also counts against your **Order Count** limit (verified API key;\nobservational unless `rest.orders-api-enforced` is true).\n","operationId":"deleteOrder","parameters":[{"name":"symbol","in":"query","description":"Trading pair symbol","required":true,"schema":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Z0-9_]+-[A-Z0-9_]+$"}},{"name":"orderId","in":"query","description":"Server-assigned order ID (if combined with `origClientOrderId`, must refer to same order)","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"origClientOrderId","in":"query","description":"Original client-assigned order ID (optional if `orderId` is set, max 36 chars)","required":false,"schema":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"}}],"responses":{"200":{"description":"Order canceled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelOrderAck"}}}},"400":{"description":"Bad Request — invalid parameters or an order that is already in a terminal state","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Unauthorized — missing/invalid API key or signature","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Forbidden — credentials valid but not allowed to cancel orders","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Not Found — order cannot be found for the authenticated account","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"408":{"description":"Request Timeout — upstream or placement timeout","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Conflict — order cancellation already pending","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"description":"Server error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Service Unavailable — trading intake paused, market economics unavailable, or transient database unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Discover the supported order-scoped fills contract

> Signed, read-only capability discovery. Match contract and finality exactly before selecting this recovery mode. This static read does not perform an authority barrier.\
> \
> \*\*Weight:\*\* 1

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"OrderFillsCapability":{"type":"object","description":"Read-only discovery of the exact order-scoped fills protocol; no authority barrier is performed","properties":{"contract":{"type":"string","enum":["ORDER_SCOPED_FILLS_V1"]},"finality":{"type":"string","enum":["SETTLEMENT_FINAL"]},"endpoint":{"type":"string"},"maxLimit":{"type":"integer","format":"int32"},"eventShardCount":{"type":"integer","format":"int32"},"requestWeight":{"type":"integer","format":"int32"}}},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]}},"responses":{"RateLimited":{"description":"Too Many Requests - Rate limit exceeded.","headers":{"X-PLEX-USED-WEIGHT-API":{"description":"Rounded burst capacity minus remaining verified API-key tokens (when authenticated accounting ran)","schema":{}},"Retry-After":{"description":"Whole seconds to wait before retrying (ceiling of the computed delay)","schema":{}},"X-PLEX-ORDER-COUNT":{"description":"Rounded order burst capacity minus remaining verified API-key order tokens (when order accounting ran)","schema":{}},"X-PLEX-USED-WEIGHT-IP":{"description":"Rounded burst capacity minus remaining IP tokens; on rejection, describes the rejecting bucket","schema":{}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}},"paths":{"/api/v2/order/fills/capability":{"get":{"tags":["Orders"],"summary":"Discover the supported order-scoped fills contract","description":"Signed, read-only capability discovery. Match contract and finality exactly before selecting this recovery mode. This static read does not perform an authority barrier.\n\n**Weight:** 1","operationId":"getOrderFillsCapabilityV2","responses":{"200":{"description":"Supported exact protocol","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderFillsCapability"}}}},"401":{"description":"Missing or invalid API credentials","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Service Unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Read one order and its settlement-final fills from a frozen frontier

> Signed like \`/api/v2/myTrades\` with the API key header and Signature V1 query parameters.\
> Supply symbol in its exact venue casing (for example, \`gib-USDC\`) and orderId and/or\
> origClientOrderId; both identities must agree. Symbols are not case-normalized. Client IDs\
> deterministically resolve through OrderIds.orderIdFromClientId(authenticatedUserId, clientId),\
> so an unacknowledged replacement can be named before an exchange ID is received.\
> \
> Initial requests omit both frontier vectors and capturedAt, with pageAfterCursorId zero.\
> The server captures a single committed primary event frontier T for ORDER and FILL, waits for\
> both projections, checks poison, reconstructs order state through T, and bounds fills by T.\
> Continuations echo both 64-entry comma-separated vectors and capturedAt unchanged and pass\
> nextPageAfterCursorId. They retain the initial cut and do not create a new absence proof.\
> A full page can be exhausted: hasMore is authoritative and nextPageAfterCursorId is then null.\
> \
> ABSENT is HTTP 200 with order null and no fills, after proving the fresh ORDER frontier;\
> another account's order is also ABSENT, while an owned order on a different symbol is 400.\
> Only a fresh initial ABSENT captured after a cancel-replace dispatch deadline proves no placement.\
> Consumers must require contract ORDER\_SCOPED\_FILLS\_V1 and finality SETTLEMENT\_FINAL exactly.\
> \
> Exact accounting requires an original placement newer than the persistent coverage boundary\
> recorded at first fenced startup. Older orders return 503 on initial and continuation reads,\
> even after historical claim healing; capability does not make historical orders eligible.\
> Proven historical ineligibility adds code ORDER\_FILLS\_HISTORY\_INELIGIBLE and retryable false\
> to the problem response. Other controller-originated 503 failures omit both fields. Classify\
> this permanent outcome by the code, never by the human-readable detail text.\
> \
> settledExecutedQty and settledCumulativeQuoteQty are totals across ALL pages at this cut;\
> pageSettledExecutedQty and pageSettledCumulativeQuoteQty exactly sum this page's fills.\
> pendingSettlementQty = order.executedQty - settledExecutedQty describes outstanding matched\
> quantity. A terminal order with pendingSettlementQty zero has no future fills forever.\
> terminal is a conservative recovery proof: it can become true on a later continuation when\
> release evidence becomes available; status, quantities, and fill membership remain frozen.\
> Self-trades return this order's single leg with selfTrade true and this order's side.\
> Inconsistent cuts fail closed with 503. Success and controller errors are non-cacheable.\
> \
> \
> \*\*Weight:\*\* 5\
> \
> This route also consumes one request from the shared correctness-critical\
> account/fill barrier pre-authentication IP bucket: \*\*100 requests/second\*\*\
> with a \*\*500 request burst\*\*. \`GET /api/v1/account/reconciliationSnapshot\`, \`GET /api/v1/account/balanceCut\`, \`GET /api/v2/myTrades\`, and \`GET /api/v2/order/fills\` use the same bucket,\
> so alternating between them does not create additional database-barrier capacity.<br>

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"OrderFillsPage":{"type":"object","description":"Order-scoped settlement-final fills and order status from one immutable event cut","properties":{"contract":{"type":"string","enum":["ORDER_SCOPED_FILLS_V1"]},"finality":{"type":"string","enum":["SETTLEMENT_FINAL"]},"symbol":{"type":"string"},"presence":{"type":"string","enum":["PRESENT","ABSENT"]},"frontier":{"$ref":"#/components/schemas/OrderFillsFrontier"},"order":{"$ref":"#/components/schemas/OrderFillsOrder"},"settledExecutedQty":{"type":"string","description":"Exact sum of base quantities across all pages in this frozen order scan"},"settledCumulativeQuoteQty":{"type":"string","description":"Exact sum of quote quantities across all pages in this frozen order scan"},"pendingSettlementQty":{"type":"string","description":"executedQty minus settledExecutedQty; non-negative matched quantity awaiting settlement"},"pageSettledExecutedQty":{"type":"string","description":"Exact sum of fills[].qty on this page"},"pageSettledCumulativeQuoteQty":{"type":"string","description":"Exact sum of fills[].quoteQty on this page"},"fills":{"type":"array","items":{"$ref":"#/components/schemas/OrderFill"}},"hasMore":{"type":"boolean"},"nextPageAfterCursorId":{"type":"integer","format":"int64","description":"Exclusive durable page cursor; null exactly when this frozen scan is exhausted"}}},"OrderFillsFrontier":{"type":"object","description":"Frozen primary event cut. Echo both 64-entry vectors and capturedAt on every continuation","properties":{"orderProjectionThroughEventIds":{"type":"array","description":"ORDER source-event bounds, in durable shard order","items":{"type":"integer","format":"int64","minimum":0},"maxItems":64,"minItems":64},"fillProjectionThroughEventIds":{"type":"array","description":"FILL source-event bounds, in durable shard order","items":{"type":"integer","format":"int64","minimum":0},"maxItems":64,"minItems":64},"capturedAt":{"type":"integer","format":"int64","description":"Server capture time in epoch milliseconds; preserved across continuation pages"}}},"OrderFillsOrder":{"type":"object","description":"Order state reconstructed at the same frozen cut as its settlement-final fills","properties":{"orderId":{"type":"string"},"clientOrderId":{"type":"string"},"side":{"type":"string","description":"Order side","enum":["BUY","SELL"]},"type":{"type":"string","description":"Supported order types. LIMIT supports GTC/GTD/IOC/FOK/POST_ONLY. STOP_LIMIT supports explicit GTD and the legacy GTC/POST_ONLY aliases.\nMARKET and STOP_MARKET require quantity and reject timeInForce.\nSTOP_LIMIT additionally requires price, stopPrice, and stopComparison.\nSTOP_MARKET additionally requires stopPrice and stopComparison.\n","enum":["LIMIT","MARKET","STOP_LIMIT","STOP_MARKET"]},"timeInForce":{"type":"string","description":"Applied to LIMIT and STOP_LIMIT orders. Explicit GTD requires expireTime. GTC aliases to GTD with the venue default expiry; POST_ONLY is that alias plus postOnly=true. IOC and FOK are immediate LIMIT policies.","enum":["GTC","IOC","FOK","POST_ONLY","GTD","GTC","GTD","IOC","FOK","POST_ONLY"]},"postOnly":{"type":"boolean"},"price":{"type":"string"},"origQty":{"type":"string"},"executedQty":{"type":"string","description":"Settlement-final quantity plus still-outstanding matched quantity at this cut"},"cumulativeQuoteQty":{"type":"string","description":"Settlement-final quote quantity plus still-outstanding matched quote quantity at this cut"},"status":{"type":"string","description":"Order status","enum":["OPEN","CANCELED","FILLED","PARTIALLY_FILLED","EXPIRED","FAILED","ACTIVE"]},"terminal":{"type":"boolean","description":"Conservative recovery proof that no further matches can be admitted; may strengthen on continuation as release evidence arrives. With pendingSettlementQty=0, fills are final forever"},"time":{"type":"integer","format":"int64"},"updateTime":{"type":"integer","format":"int64","description":"Time of the order's last event at this cut (ms since epoch). GET /api/v1/order gives the time of the order's last fill under the same name"},"expireTime":{"type":"integer","format":"int64","description":"Accepted matching expiry in epoch milliseconds; null where no matching expiry applies"}}},"OrderFill":{"type":"object","description":"One settlement-final fill attributed to this order's account leg","properties":{"cursorId":{"type":"integer","format":"int64","description":"Identical durable cursor identity to /api/v2/myTrades and orderUpdate"},"projectionShard":{"type":"integer","format":"int32","maximum":63,"minimum":0},"orderId":{"type":"string"},"price":{"type":"string"},"qty":{"type":"string"},"quoteQty":{"type":"string"},"commission":{"type":"string"},"commissionAsset":{"type":"string"},"time":{"type":"integer","format":"int64"},"isBuyer":{"type":"boolean"},"isMaker":{"type":"boolean"},"selfTrade":{"type":"boolean","description":"Both trade legs belong to this account; quantity and fees describe only this order's leg"},"settlementTransactionId":{"type":"string","description":"Same persisted successful-settlement transaction identity as /api/v2/myTrades. On-chain settlements use the Hedera transaction ID; play-money settlements use play-settlement:<UUID>, which is not on-chain evidence. Not a fill deduplication key."}}},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]}},"responses":{"RateLimited":{"description":"Too Many Requests - Rate limit exceeded.","headers":{"X-PLEX-USED-WEIGHT-API":{"description":"Rounded burst capacity minus remaining verified API-key tokens (when authenticated accounting ran)","schema":{}},"Retry-After":{"description":"Whole seconds to wait before retrying (ceiling of the computed delay)","schema":{}},"X-PLEX-ORDER-COUNT":{"description":"Rounded order burst capacity minus remaining verified API-key order tokens (when order accounting ran)","schema":{}},"X-PLEX-USED-WEIGHT-IP":{"description":"Rounded burst capacity minus remaining IP tokens; on rejection, describes the rejecting bucket","schema":{}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}},"paths":{"/api/v2/order/fills":{"get":{"tags":["Orders"],"summary":"Read one order and its settlement-final fills from a frozen frontier","description":"Signed like `/api/v2/myTrades` with the API key header and Signature V1 query parameters.\nSupply symbol in its exact venue casing (for example, `gib-USDC`) and orderId and/or\norigClientOrderId; both identities must agree. Symbols are not case-normalized. Client IDs\ndeterministically resolve through OrderIds.orderIdFromClientId(authenticatedUserId, clientId),\nso an unacknowledged replacement can be named before an exchange ID is received.\n\nInitial requests omit both frontier vectors and capturedAt, with pageAfterCursorId zero.\nThe server captures a single committed primary event frontier T for ORDER and FILL, waits for\nboth projections, checks poison, reconstructs order state through T, and bounds fills by T.\nContinuations echo both 64-entry comma-separated vectors and capturedAt unchanged and pass\nnextPageAfterCursorId. They retain the initial cut and do not create a new absence proof.\nA full page can be exhausted: hasMore is authoritative and nextPageAfterCursorId is then null.\n\nABSENT is HTTP 200 with order null and no fills, after proving the fresh ORDER frontier;\nanother account's order is also ABSENT, while an owned order on a different symbol is 400.\nOnly a fresh initial ABSENT captured after a cancel-replace dispatch deadline proves no placement.\nConsumers must require contract ORDER_SCOPED_FILLS_V1 and finality SETTLEMENT_FINAL exactly.\n\nExact accounting requires an original placement newer than the persistent coverage boundary\nrecorded at first fenced startup. Older orders return 503 on initial and continuation reads,\neven after historical claim healing; capability does not make historical orders eligible.\nProven historical ineligibility adds code ORDER_FILLS_HISTORY_INELIGIBLE and retryable false\nto the problem response. Other controller-originated 503 failures omit both fields. Classify\nthis permanent outcome by the code, never by the human-readable detail text.\n\nsettledExecutedQty and settledCumulativeQuoteQty are totals across ALL pages at this cut;\npageSettledExecutedQty and pageSettledCumulativeQuoteQty exactly sum this page's fills.\npendingSettlementQty = order.executedQty - settledExecutedQty describes outstanding matched\nquantity. A terminal order with pendingSettlementQty zero has no future fills forever.\nterminal is a conservative recovery proof: it can become true on a later continuation when\nrelease evidence becomes available; status, quantities, and fill membership remain frozen.\nSelf-trades return this order's single leg with selfTrade true and this order's side.\nInconsistent cuts fail closed with 503. Success and controller errors are non-cacheable.\n\n\n**Weight:** 5\n\nThis route also consumes one request from the shared correctness-critical\naccount/fill barrier pre-authentication IP bucket: **100 requests/second**\nwith a **500 request burst**. `GET /api/v1/account/reconciliationSnapshot`, `GET /api/v1/account/balanceCut`, `GET /api/v2/myTrades`, and `GET /api/v2/order/fills` use the same bucket,\nso alternating between them does not create additional database-barrier capacity.\n","operationId":"getOrderFillsV2","parameters":[{"name":"symbol","in":"query","description":"Trading pair in its exact venue casing, as returned by exchangeInfo","required":true,"schema":{"type":"string"}},{"name":"orderId","in":"query","required":false,"schema":{"type":"string"}},{"name":"origClientOrderId","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"string","maximum":500,"minimum":1}},{"name":"pageAfterCursorId","in":"query","required":false,"schema":{"type":"integer","format":"int64","default":0}},{"name":"orderProjectionThroughEventIds","in":"query","required":false,"schema":{"type":"string"}},{"name":"fillProjectionThroughEventIds","in":"query","required":false,"schema":{"type":"string"}},{"name":"capturedAt","in":"query","required":false,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Present order or frontier-proven absence","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderFillsPage"}}}},"400":{"description":"Invalid parameters, disagreeing identities, or symbol mismatch","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Missing or invalid API credentials","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"description":"Sanitized internal invariant failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"503":{"description":"Proven historical ineligibility (code ORDER_FILLS_HISTORY_INELIGIBLE, retryable false), or projection lag, poison, unhealthy projection, inconsistent cut, or primary unavailable (without those extensions)","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Query the exact durable renewal operation

> Signed V1 account-scoped renewalId. Returns the stored BOOK decision even while its ORDER mirror is pending; does not clear the pending slot or assert that the order remains live. GET returns HTTP 200 for every stored business outcome.\
> \
> \*\*Weight:\*\* 10\
> \
> Dedicated \`order\_renewal\` IP bucket: 20 requests/second, burst 4. New admission only: account bucket 2 requests/second, burst 4; exact durable retries bypass that admission bucket. New admission requires ENABLED protocol mode; BRIDGE and DRAIN retain exact retries and historical queries.

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"OrderRenewalResponse":{"type":"object","properties":{"renewalId":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["PENDING","RENEWED","REJECTED"]},"reason":{"type":"string"},"orderChangedByThisRenewal":{"type":"boolean"},"requestEventId":{"type":"integer","format":"int64"},"bookEventId":{"type":"integer","format":"int64"},"bookExecutionKey":{"type":"string"},"oldGeneration":{"type":"integer","format":"int64"},"newGeneration":{"type":"integer","format":"int64"},"oldExpireTime":{"type":"integer","format":"int64"},"acceptedExpireTime":{"type":"integer","format":"int64"},"acceptedSettlementExpireTime":{"type":"integer","format":"int64"},"observedGeneration":{"type":"integer","format":"int64"},"observedExpireTime":{"type":"integer","format":"int64"},"immutableTermsHash":{"type":"string"},"dispatchDeadline":{"type":"integer","format":"int64"},"decisionTime":{"type":"string","format":"date-time"}}},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]}},"responses":{"RateLimited":{"description":"Too Many Requests - Rate limit exceeded.","headers":{"X-PLEX-USED-WEIGHT-API":{"description":"Rounded burst capacity minus remaining verified API-key tokens (when authenticated accounting ran)","schema":{}},"Retry-After":{"description":"Whole seconds to wait before retrying (ceiling of the computed delay)","schema":{}},"X-PLEX-ORDER-COUNT":{"description":"Rounded order burst capacity minus remaining verified API-key order tokens (when order accounting ran)","schema":{}},"X-PLEX-USED-WEIGHT-IP":{"description":"Rounded burst capacity minus remaining IP tokens; on rejection, describes the rejecting bucket","schema":{}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}},"paths":{"/api/v1/order/renewal":{"get":{"tags":["Orders"],"summary":"Query the exact durable renewal operation","description":"Signed V1 account-scoped renewalId. Returns the stored BOOK decision even while its ORDER mirror is pending; does not clear the pending slot or assert that the order remains live. GET returns HTTP 200 for every stored business outcome.\n\n**Weight:** 10\n\nDedicated `order_renewal` IP bucket: 20 requests/second, burst 4. New admission only: account bucket 2 requests/second, burst 4; exact durable retries bypass that admission bucket. New admission requires ENABLED protocol mode; BRIDGE and DRAIN retain exact retries and historical queries.","operationId":"getOrderRenewal","parameters":[{"name":"renewalId","in":"query","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"timestamp","in":"query","required":true,"schema":{"type":"integer","format":"int64"}},{"name":"recvWindow","in":"query","schema":{"type":"integer","format":"int64"}},{"name":"signature","in":"query","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Exact historical renewal outcome","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderRenewalResponse"}}}},"404":{"description":"No owned renewal exists","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Durable recovery evidence unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Identify the supported ordinary placement contract

> Authenticated Signature V1 query: contract=ORDINARY\_PLACEMENT\_V1 and action=CAPABILITY. Optional signed symbol returns current authenticated scope and EXPECTED\_REQUEST\_BINDING\_V1 support. Discovery is read-only and never evidence that a particular operation is protected or closed.\
> \
> \*\*Weight:\*\* 2\
> \
> The ordinary placement family has a bounded pre-authentication IP bucket of 100 requests/second, burst 100. New durable identities (including resolve-before-create) additionally consume an authenticated subject bucket of 2/second, burst 10 and a process allocation bucket of 100/second, burst 100. Exact existing identities do not allocate again. Key rotation does not reset subject admission. HTTP errors never authorize release.

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"OrdinaryPlacementCapability":{"type":"object","properties":{"contract":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]},"enabled":{"type":"boolean"},"maxDispatchHorizonMillis":{"type":"integer","format":"int64","enum":[60000]},"supportedOrderShapes":{"type":"array","items":{"type":"string"}},"authentication":{"type":"string","enum":["SIGNATURE_V1_WITH_ACTION"]},"deadlineBoundary":{"type":"string"},"bindingAssertion":{"type":"string","enum":["EXPECTED_REQUEST_BINDING_V1"]},"scope":{"type":"object","description":"Present when discovery supplies symbol; current authenticated scope, never operation evidence","properties":{"symbol":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"},"subjectId":{"type":"string","format":"uuid"},"ownerId":{"type":"string","format":"uuid"},"accountId":{"type":"integer","format":"int64"},"baseTokenId":{"type":"integer","format":"int64"},"quoteTokenId":{"type":"integer","format":"int64"},"symbolId":{"type":"integer","format":"int64"}},"required":["accountId","baseTokenId","ownerId","quoteTokenId","subjectId","symbol","symbolId"]}},"required":["authentication","contract","deadlineBoundary","enabled","maxDispatchHorizonMillis","supportedOrderShapes"]},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]}}},"paths":{"/api/v1/order/placement/capability":{"get":{"tags":["Orders"],"summary":"Identify the supported ordinary placement contract","description":"Authenticated Signature V1 query: contract=ORDINARY_PLACEMENT_V1 and action=CAPABILITY. Optional signed symbol returns current authenticated scope and EXPECTED_REQUEST_BINDING_V1 support. Discovery is read-only and never evidence that a particular operation is protected or closed.\n\n**Weight:** 2\n\nThe ordinary placement family has a bounded pre-authentication IP bucket of 100 requests/second, burst 100. New durable identities (including resolve-before-create) additionally consume an authenticated subject bucket of 2/second, burst 10 and a process allocation bucket of 100/second, burst 100. Exact existing identities do not allocate again. Key rotation does not reset subject admission. HTTP errors never authorize release.","operationId":"getOrdinaryPlacementCapability","parameters":[{"name":"contract","in":"query","required":true,"schema":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]}},{"name":"action","in":"query","description":"Signed operation discriminator; V1 does not bind HTTP method or path","required":true,"schema":{"type":"string","description":"Signed operation discriminator; V1 does not bind HTTP method or path","enum":["CAPABILITY"]}},{"name":"timestamp","in":"query","description":"Fresh authentication time; may refresh on an exact retry","required":true,"schema":{"type":"integer","format":"int64","description":"Fresh authentication time; may refresh on an exact retry","maximum":253402300799999,"minimum":1}},{"name":"recvWindow","in":"query","description":"Authentication freshness window, not placement dispatch authority","required":false,"schema":{"type":"integer","format":"int64","description":"Authentication freshness window, not placement dispatch authority","maximum":253402300799999,"minimum":1}},{"name":"signature","in":"query","description":"Base64 Ed25519 signature of the ordered decoded parameters excluding signature","required":true,"schema":{"type":"string","description":"Base64 Ed25519 signature of the ordered decoded parameters excluding signature"}},{"name":"symbol","in":"query","description":"Optional exact wire symbol; returns authenticated scope for automatic binding","required":false,"schema":{"type":"string","description":"Optional exact wire symbol; returns authenticated scope for automatic binding","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"}}],"responses":{"200":{"description":"Supported contract discovery; never an operation proof","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrdinaryPlacementCapability"}}}},"400":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Capacity or rate limit; no operation outcome","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"503":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Read a durable ordinary placement operation

> Domain-read-only Signature V1 query: contract=ORDINARY\_PLACEMENT\_V1, action=LOOKUP, newClientOrderId. A missing operation returns 404 and creates no admission fence. Neither 404 nor any transport error authorizes release.\
> \
> \*\*Weight:\*\* 2\
> \
> The ordinary placement family has a bounded pre-authentication IP bucket of 100 requests/second, burst 100. New durable identities (including resolve-before-create) additionally consume an authenticated subject bucket of 2/second, burst 10 and a process allocation bucket of 100/second, burst 100. Exact existing identities do not allocate again. Key rotation does not reset subject admission. HTTP errors never authorize release.

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"OrdinaryPlacementResponse":{"type":"object","additionalProperties":false,"properties":{"contract":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]},"status":{"type":"string","enum":["PENDING","PLACED","CLOSED_NO_PLACEMENT"]},"subjectId":{"type":"string","format":"uuid"},"ownerId":{"type":"string","format":"uuid"},"orderId":{"type":"string","format":"uuid"},"accountId":{"type":"integer","format":"int64","minimum":0},"baseTokenId":{"type":"integer","format":"int64","minimum":0},"quoteTokenId":{"type":"integer","format":"int64","minimum":0},"symbolId":{"type":"integer","format":"int64","minimum":0},"requestBinding":{"type":"string","description":"SHA-256 of version domain and canonical scoped request JSON; see frozen fixtures","pattern":"^[0-9a-f]{64}$"},"request":{"$ref":"#/components/schemas/OrdinaryPlacementTerms"},"admittedAt":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1},"closedAt":{"type":"integer","format":"int64","maximum":253402300799999,"minimum":1},"placementEventId":{"type":"integer","format":"int64","minimum":1},"placement":{"$ref":"#/components/schemas/NewOrderAck","description":"Original accepted placement, including expiry before native renewal; no current-liveness or settlement claim"},"reservationState":{"type":"string","enum":["UNRESOLVED","NONE","ORDER_OWNED"]}},"required":["accountId","baseTokenId","contract","orderId","ownerId","quoteTokenId","request","requestBinding","reservationState","status","subjectId","symbolId"]},"OrdinaryPlacementTerms":{"type":"object","additionalProperties":false,"properties":{"symbol":{"type":"string","maxLength":33,"minLength":3,"pattern":"^[A-Za-z0-9_]+-[A-Za-z0-9_]+$"},"side":{"type":"string","enum":["BUY","SELL"]},"clientOrderId":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"},"quantity":{"type":["null","string"],"description":"Positive base quantity; mutually exclusive with quoteOrderQty","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"quoteOrderQty":{"type":["null","string"],"description":"Positive quote budget; BUY only, preserves venue rounding","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"price":{"type":"string","description":"Exact positive plain decimal; never binary floating point","pattern":"^(?:0|[1-9][0-9]{0,37})(?:\\.[0-9]{1,38})?$"},"expireTime":{"type":"integer","format":"int64","description":"Original matching expiry; normalized down to whole-second epoch milliseconds","maximum":253402300799999,"minimum":1},"postOnly":{"type":"boolean","default":false},"dispatchDeadline":{"type":"integer","format":"int64","description":"Immutable command-admission deadline; strict now < cutoff, at most 60000ms ahead on new registration","maximum":253402300799999,"minimum":1}},"required":["clientOrderId","dispatchDeadline","expireTime","postOnly","price","quantity","quoteOrderQty","side","symbol"]},"NewOrderAck":{"type":"object","description":"Acknowledgement returned when an order is accepted","properties":{"symbol":{"type":"string","description":"Trading pair symbol"},"orderId":{"type":"string","description":"Exchange-assigned order ID"},"clientOrderId":{"type":"string","description":"Client-supplied order ID used for idempotent placement retries (max 36 chars)","maxLength":36},"transactTime":{"type":"integer","format":"int64","description":"Acceptance time (ms since epoch)"},"acceptedExpireTime":{"type":"integer","format":"int64","description":"Original venue-normalized whole-second placement deadline for GTD orders (ms since epoch). Exact placement retries retain this deadline after renewal; order status reports the current effective deadline."}}},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]}}},"paths":{"/api/v1/order/placement":{"get":{"tags":["Orders"],"summary":"Read a durable ordinary placement operation","description":"Domain-read-only Signature V1 query: contract=ORDINARY_PLACEMENT_V1, action=LOOKUP, newClientOrderId. A missing operation returns 404 and creates no admission fence. Neither 404 nor any transport error authorizes release.\n\n**Weight:** 2\n\nThe ordinary placement family has a bounded pre-authentication IP bucket of 100 requests/second, burst 100. New durable identities (including resolve-before-create) additionally consume an authenticated subject bucket of 2/second, burst 10 and a process allocation bucket of 100/second, burst 100. Exact existing identities do not allocate again. Key rotation does not reset subject admission. HTTP errors never authorize release.","operationId":"getOrdinaryPlacement","parameters":[{"name":"contract","in":"query","required":true,"schema":{"type":"string","enum":["ORDINARY_PLACEMENT_V1"]}},{"name":"action","in":"query","description":"Signed operation discriminator; V1 does not bind HTTP method or path","required":true,"schema":{"type":"string","description":"Signed operation discriminator; V1 does not bind HTTP method or path","enum":["LOOKUP"]}},{"name":"timestamp","in":"query","description":"Fresh authentication time; may refresh on an exact retry","required":true,"schema":{"type":"integer","format":"int64","description":"Fresh authentication time; may refresh on an exact retry","maximum":253402300799999,"minimum":1}},{"name":"recvWindow","in":"query","description":"Authentication freshness window, not placement dispatch authority","required":false,"schema":{"type":"integer","format":"int64","description":"Authentication freshness window, not placement dispatch authority","maximum":253402300799999,"minimum":1}},{"name":"signature","in":"query","description":"Base64 Ed25519 signature of the ordered decoded parameters excluding signature","required":true,"schema":{"type":"string","description":"Base64 Ed25519 signature of the ordered decoded parameters excluding signature"}},{"name":"newClientOrderId","in":"query","required":true,"schema":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"}}],"responses":{"200":{"description":"Historical placement or durable no-placement evidence","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrdinaryPlacementResponse"}}}},"202":{"description":"Unresolved; retain placement liability","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrdinaryPlacementResponse"}}}},"400":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"401":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"403":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"404":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"409":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"422":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}},"429":{"description":"Capacity or rate limit; no operation outcome","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}},"503":{"description":"Request failure, never effect-wide no-placement or release authority","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```

## Preview the fee regime for a MARKET or plain LIMIT IOC order

> Returns an advisory fee preview for the authenticated API account. If acceptedMaxTakerBps is sent, it is part of the signed request and bounds the preview. Placement independently reprices the order and requires its own signed maximum taker BPS.\
> \
> \- \`type\` defaults to \`MARKET\`, preserving the existing contract (\`quantity\` or BUY-only \`quoteOrderQty\`; \`timeInForce\` and \`price\` are rejected).\
> \- \`type=LIMIT\` previews the exact intended plain \`LIMIT\` order and requires \`timeInForce=IOC\`, \`quantity\`, and \`price\`. Only liquidity executable at or better than \`price\` is considered, walked in price-time priority with the same self-trade, maker-leg, settlement-shape, rounding, and eligibility rules as IOC execution. Orders that clear the normal minimum are previewed at the normal fee; below it, the largest fee-feasible executable prefix under the ceiling is previewed as \`DUST\`.\
> \- Any other \`LIMIT\` time-in-force, \`quoteOrderQty\` with \`LIMIT\`, and stop order types are rejected with problem \`code=DUST\_ORDER\_TYPE\_NOT\_SUPPORTED\`. See the \`DUST\_ORDER\_POLICY\` exchange-info filter's \`supportedOrderShapes\`.\
> \- The response echoes \`type\`, and for \`LIMIT\` also \`timeInForce\` and \`price\`.\
> \- Dust-preview rate limits are shared across markets for the account. Exhaustion returns HTTP 429 with \`Retry-After\` seconds and problem \`stage=RATE\_LIMIT\`; wait before re-signing and retrying a preview.\
> \
> Example: \`symbol=HBAR-USDC\&side=BUY\&type=LIMIT\&timeInForce=IOC\&quantity=25\&price=0.2210\&acceptedMaxTakerBps=506\&timestamp=1724952745123\`\
> \
> \
> \*\*Weight:\*\* 1

```json
{"openapi":"3.1.0","info":{"title":"Lambdaplex API","version":"1.0"},"tags":[{"name":"Orders","description":"Order management"}],"servers":[{"url":"https://api.lambdaplex.io","description":"Generated server url"}],"security":[{"XApiKey":[],"Ed25519Sig":[]}],"components":{"securitySchemes":{"XApiKey":{"type":"apiKey","description":"API key identifier. For Ed25519 V2 operations, its exact header value is the second line of the canonical signing payload.","name":"X-API-KEY","in":"header"}},"schemas":{"MarketOrderFeeQuoteResponse":{"type":"object","properties":{"symbol":{"type":"string"},"filled":{"type":"number"},"exchanged":{"type":"number"},"vwap":{"type":"number"},"slippage":{"type":"number"},"feePreview":{"$ref":"#/components/schemas/FeePreview"},"type":{"type":"string"},"timeInForce":{"type":"string"},"price":{"type":"number"}}},"FeePreview":{"type":"object","properties":{"regime":{"type":"string"},"normalTakerBps":{"type":"integer","format":"int32"},"estimatedAppliedTakerBps":{"type":"integer","format":"int32"},"acceptedMaxTakerBpsRequired":{"type":"integer","format":"int32"},"estimatedTakerFee":{"$ref":"#/components/schemas/AssetAmount"},"estimatedTakerFeeUsd":{"type":"number"},"estimatedNetReceived":{"$ref":"#/components/schemas/AssetAmount"},"expiresAt":{"type":"string","format":"date-time"}}},"AssetAmount":{"type":"object","properties":{"asset":{"type":"string"},"amount":{"type":"number"}}},"RateLimitError":{"type":"object","description":"Error response returned when a request is rate limited (HTTP 429)","properties":{"code":{"type":"string","description":"Error code indicating rate limiting"},"status":{"type":"integer","format":"int32","description":"HTTP status code"},"scope":{"type":"string","description":"Scope of the rate limit: 'rest' for HTTP endpoints, 'ws' for WebSocket handshake","enum":["rest","ws"]},"bucket":{"type":"string","description":"Bucket that triggered the limit (e.g. 'rest_weight', 'orders', 'ws_handshake')"},"keyType":{"type":"string","description":"Key type that was rate limited: 'ip' or 'api'","enum":["ip","api"]},"retryAfterSec":{"type":"number","format":"double","description":"Seconds until enough tokens are available to retry this request"}},"required":["bucket","code","keyType","retryAfterSec","scope","status"]},"ProblemDetail":{"type":"object","properties":{"type":{"type":"string","format":"uri"},"title":{"type":"string"},"status":{"type":"integer","format":"int32"},"detail":{"type":"string"},"instance":{"type":"string","format":"uri"},"properties":{"type":"object","additionalProperties":{}}}}},"responses":{"RateLimited":{"description":"Too Many Requests - Rate limit exceeded.","headers":{"X-PLEX-USED-WEIGHT-API":{"description":"Rounded burst capacity minus remaining verified API-key tokens (when authenticated accounting ran)","schema":{}},"Retry-After":{"description":"Whole seconds to wait before retrying (ceiling of the computed delay)","schema":{}},"X-PLEX-ORDER-COUNT":{"description":"Rounded order burst capacity minus remaining verified API-key order tokens (when order accounting ran)","schema":{}},"X-PLEX-USED-WEIGHT-IP":{"description":"Rounded burst capacity minus remaining IP tokens; on rejection, describes the rejecting bucket","schema":{}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}},"paths":{"/api/v1/order/fee-quote":{"get":{"tags":["Orders"],"summary":"Preview the fee regime for a MARKET or plain LIMIT IOC order","description":"Returns an advisory fee preview for the authenticated API account. If acceptedMaxTakerBps is sent, it is part of the signed request and bounds the preview. Placement independently reprices the order and requires its own signed maximum taker BPS.\n\n- `type` defaults to `MARKET`, preserving the existing contract (`quantity` or BUY-only `quoteOrderQty`; `timeInForce` and `price` are rejected).\n- `type=LIMIT` previews the exact intended plain `LIMIT` order and requires `timeInForce=IOC`, `quantity`, and `price`. Only liquidity executable at or better than `price` is considered, walked in price-time priority with the same self-trade, maker-leg, settlement-shape, rounding, and eligibility rules as IOC execution. Orders that clear the normal minimum are previewed at the normal fee; below it, the largest fee-feasible executable prefix under the ceiling is previewed as `DUST`.\n- Any other `LIMIT` time-in-force, `quoteOrderQty` with `LIMIT`, and stop order types are rejected with problem `code=DUST_ORDER_TYPE_NOT_SUPPORTED`. See the `DUST_ORDER_POLICY` exchange-info filter's `supportedOrderShapes`.\n- The response echoes `type`, and for `LIMIT` also `timeInForce` and `price`.\n- Dust-preview rate limits are shared across markets for the account. Exhaustion returns HTTP 429 with `Retry-After` seconds and problem `stage=RATE_LIMIT`; wait before re-signing and retrying a preview.\n\nExample: `symbol=HBAR-USDC&side=BUY&type=LIMIT&timeInForce=IOC&quantity=25&price=0.2210&acceptedMaxTakerBps=506&timestamp=1724952745123`\n\n\n**Weight:** 1","operationId":"getOrderFeeQuote","parameters":[{"name":"symbol","in":"query","required":true,"schema":{"type":"string"}},{"name":"side","in":"query","required":true,"schema":{"type":"string","description":"Order side","enum":["BUY","SELL"]}},{"name":"type","in":"query","required":false,"schema":{"type":"string","description":"Supported order types. LIMIT supports GTC/GTD/IOC/FOK/POST_ONLY. STOP_LIMIT supports explicit GTD and the legacy GTC/POST_ONLY aliases.\nMARKET and STOP_MARKET require quantity and reject timeInForce.\nSTOP_LIMIT additionally requires price, stopPrice, and stopComparison.\nSTOP_MARKET additionally requires stopPrice and stopComparison.\n","enum":["LIMIT","MARKET","STOP_LIMIT","STOP_MARKET"]}},{"name":"timeInForce","in":"query","required":false,"schema":{"type":"string","description":"Applied to LIMIT and STOP_LIMIT orders. Explicit GTD requires expireTime. GTC aliases to GTD with the venue default expiry; POST_ONLY is that alias plus postOnly=true. IOC and FOK are immediate LIMIT policies.","enum":["GTC","IOC","FOK","POST_ONLY","GTD","GTC","GTD","IOC","FOK","POST_ONLY"]}},{"name":"quantity","in":"query","required":false,"schema":{"type":"number"}},{"name":"quoteOrderQty","in":"query","required":false,"schema":{"type":"number"}},{"name":"price","in":"query","required":false,"schema":{"type":"number"}},{"name":"acceptedMaxTakerBps","in":"query","required":false,"schema":{"type":"integer","format":"int32"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketOrderFeeQuoteResponse"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Service Unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/ProblemDetail"}}}}}}}}}
```
