> 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

## Place a new 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.\
> \- \`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\`\
> \- 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\`\
> \
> \
> \*\*Weight:\*\* 1\
> \
> This endpoint also counts against your \*\*Order Count\*\* limit (API key based).<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":{"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":"Venue-normalized whole-second match deadline for GTD orders (ms since epoch)"}}},"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":"Current used weight for your API key this minute (if authenticated)","schema":{}},"Retry-After":{"description":"Number of seconds to wait before retrying","schema":{}},"X-PLEX-ORDER-COUNT":{"description":"Current order count for your API key (for order endpoints)","schema":{}},"X-PLEX-USED-WEIGHT-IP":{"description":"Current used weight for your IP this minute","schema":{}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}},"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}},"paths":{"/api/v1/order":{"post":{"tags":["Orders"],"summary":"Place a new 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- `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- 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**Weight:** 1\n\nThis endpoint also counts against your **Order Count** limit (API key based).\n","operationId":"postOrder","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":"side","in":"query","required":true,"schema":{"type":"string","description":"Order side","enum":["BUY","SELL"]}},{"name":"type","in":"query","required":true,"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","description":"Required for LIMIT and STOP_LIMIT orders. GTD requires expireTime; GTC aliases to GTD with the legacy default expiry; POST_ONLY is that alias plus postOnly=true; IOC and FOK are plain-LIMIT immediate policies.","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":"expireTime","in":"query","description":"Absolute match deadline in epoch milliseconds. Required for GTD; venue floors it to a whole epoch second.","required":false,"schema":{"type":"integer","format":"int64"}},{"name":"postOnly","in":"query","description":"Orthogonal instruction that prevents a GTD limit order, including the GTC compatibility alias, from taking liquidity","required":false,"schema":{"type":"boolean","default":false}},{"name":"quantity","in":"query","description":"Base order quantity. Required unless quoteOrderQty is set for a BUY order","required":false,"schema":{"type":"string","minimum":0}},{"name":"quoteOrderQty","in":"query","description":"Quote-asset budget for BUY LIMIT, BUY MARKET, BUY STOP_LIMIT, and BUY STOP_MARKET orders.","required":false,"schema":{"type":"string","minimum":0}},{"name":"price","in":"query","description":"Price for LIMIT and STOP_LIMIT orders.","required":false,"schema":{"type":"string","minimum":0}},{"name":"newClientOrderId","in":"query","description":"Required client-assigned ID used for idempotent retries (must be unique per user, max 36 chars)","required":true,"schema":{"type":"string","maxLength":36,"minLength":1,"pattern":"^[A-Za-z0-9._-]{1,36}$"}},{"name":"acceptedMaxTakerBps","in":"query","description":"Explicit maximum taker fee in basis points accepted for this order","required":false,"schema":{"type":"string","maximum":9999,"minimum":0}},{"name":"stopPrice","in":"query","description":"Trigger price for STOP_MARKET and STOP_LIMIT orders. Compared against the order's active trigger source.","required":false,"schema":{"type":"string","minimum":0}},{"name":"stopComparison","in":"query","description":"Comparison operator for stop trigger (GE = trigger when source price >= stopPrice; LE = trigger when source price <= stopPrice). Offchain bot/agent stops use last trade; contract-settlement stops use oracle index price.","required":false,"schema":{"type":"string","enum":["GE","LE"]}}],"responses":{"200":{"description":"Order accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewOrderAck"}}}},"400":{"description":"Bad Request — invalid combination (e.g., LIMIT without price/timeInForce, or extra params for MARKET)","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 trade","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"}}}},"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 or market economics unavailable","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 (API key based).<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":"Current used weight for your API key this minute (if authenticated)","schema":{}},"Retry-After":{"description":"Number of seconds to wait before retrying","schema":{}},"X-PLEX-ORDER-COUNT":{"description":"Current order count for your API key (for order endpoints)","schema":{}},"X-PLEX-USED-WEIGHT-IP":{"description":"Current used weight for your IP this minute","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 (API key based).\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"}}}}}}}}}
```

## Preview the fee regime for a market order

> Returns an advisory fee preview. Placement independently prices the order under the user's accepted maximum taker BPS.\
> \
> \*\*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"}}},"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":"Current used weight for your API key this minute (if authenticated)","schema":{}},"Retry-After":{"description":"Number of seconds to wait before retrying","schema":{}},"X-PLEX-ORDER-COUNT":{"description":"Current order count for your API key (for order endpoints)","schema":{}},"X-PLEX-USED-WEIGHT-IP":{"description":"Current used weight for your IP this minute","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 order","description":"Returns an advisory fee preview. Placement independently prices the order under the user's accepted maximum taker BPS.\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":"quantity","in":"query","required":false,"schema":{"type":"number"}},{"name":"quoteOrderQty","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"}}}}}}}}}
```
