Replace multiple orders in one engine step with per-item results: every
original is cancelled first, then each replacement is placed in request
order. A
two-sided quote can therefore shift across its own resting prices in one
call, and a replacement may use funds freed by any original in the batch.
Failure semantics: an item that fails validation, or whose original
cannot be found, leaves the original resting. An item whose replacement
fails to PLACE (for example insufficient balance or self-trade
prevention) reports the error with its original already cancelled.
POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that
would cross is refused BEFORE the cancel pass, against the book as it
will stand once the batch’s own cancels are applied, so the item
normally reports the error with its original still resting. It is not a
guarantee — the pre-cancel check cannot see what pass 2 will insert or
consume, nor an original that fails to cancel, and the same original
listed twice is judged per occurrence — so confirm against open orders
rather than relying on the code alone.
A replacement the pair’s size rules refuse (below the minimum, above the
maximum, off the quantity step, or a total that does not exceed what
already filled) is also refused before the cancel, so its original keeps
its price and queue spot. It is not a guarantee either: the kept order’s
funds are not freed for the other items, one of which may then fail after
its own cancel, and another item’s replacement may cross and sweep it
under self-trade prevention.
Ed25519 session-key request signing. Every authenticated request carries three headers: X-Monaco-PublicKey (64-char lowercase-hex session public key), X-Monaco-Timestamp (Unix milliseconds, within 30s of server time), and X-Monaco-Signature (hex ed25519 signature). The signature is over METHOD\npath?query\ntimestamp_ms\nSHA256_hex(body), where the body hash is the SHA-256 of the empty byte string when there is no body. Obtain the session keypair from POST /api/v1/auth/challenge followed by POST /api/v1/auth/verify.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Monaco Protocol SDK v1.1.14","description":"High-performance spot and perpetuals trading infrastructure built on Sei. Complete documentation for builders integrating Monaco Protocol into their applications.","colors":{"primary":"#233329","light":"#3A5544","dark":"#1A2620"},"logo":{"light":"https://mintcdn.com/monaco/Puhxf4Whf6wQMalZ/logo.png?fit=max\u0026auto=format\u0026n=Puhxf4Whf6wQMalZ\u0026q=85\u0026s=6b0d46b12348c8cb28126629f97faae0","dark":"https://mintcdn.com/monaco/Puhxf4Whf6wQMalZ/logo-white.png?fit=max\u0026auto=format\u0026n=Puhxf4Whf6wQMalZ\u0026q=85\u0026s=2e00e628ed93f72b88edb25eb8d8725e"},"favicon":"https://mintcdn.com/monaco/Puhxf4Whf6wQMalZ/logoMark.png?fit=max\u0026auto=format\u0026n=Puhxf4Whf6wQMalZ\u0026q=85\u0026s=7cfd00a92f26b8cb3855b908c31629b8","api":{"playground":{"proxy":false},"examples":{"prefill":true}},"contextual":{"options":["copy","chatgpt","claude"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://0xmonaco.com"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"monaco","hasAudioNarration":false,"actualSubdomain":"monaco","customDomains":["docs.0xmonaco.com"],"gitSource":{"type":"github","owner":"monaco-research","repo":"monaco-core","deployBranch":"develop","contentDirectory":"docs/src","isPrivate":true,"mountPath":"","label":""},"feedback":{"issues":false,"edits":false,"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af5296f119781e823692a89","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"default","tag":"APIs","count":189},{"language":"default","tag":"REST API","count":166},{"language":"default","tag":"Libraries","count":27},{"language":"default","tag":"gRPC API","count":21},{"language":"default","tag":"Protobuf Reference","count":21},{"language":"default","tag":"Market","count":20},{"language":"default","tag":"TypeScript SDK","count":19},{"language":"default","tag":"Margin Accounts","count":19},{"language":"default","tag":"Orders","count":19},{"language":"default","tag":"Accounts","count":16}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/ordersservice/batch-replace-orders","slug":"/api-reference/ordersservice/batch-replace-orders","pageMetadata":{"title":"Batch replace orders","description":"Batch replace orders.\n\n Replace multiple orders in one engine step with per-item results: every\n original is cancelled first, then each replacement is placed in request\n order. A\n two-sided quote can therefore shift across its own resting prices in one\n call, and a replacement may use funds freed by any original in the batch.\n\n Failure semantics: an item that fails validation, or whose original\n cannot be found, leaves the original resting. An item whose replacement\n fails to PLACE (for example insufficient balance or self-trade\n prevention) reports the error with its original already cancelled.\n\n POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that\n would cross is refused BEFORE the cancel pass, against the book as it\n will stand once the batch's own cancels are applied, so the item\n normally reports the error with its original still resting. It is not a\n guarantee — the pre-cancel check cannot see what pass 2 will insert or\n consume, nor an original that fails to cancel, and the same original\n listed twice is judged per occurrence — so confirm against open orders\n rather than relying on the code alone.\n\n A replacement the pair's size rules refuse (below the minimum, above the\n maximum, off the quantity step, or a total that does not exceed what\n already filled) is also refused before the cancel, so its original keeps\n its price and queue spot. It is not a guarantee either: the kept order's\n funds are not freed for the other items, one of which may then fail after\n its own cancel, and another item's replacement may cross and sweep it\n under self-trade prevention.","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/batch-replace","href":"/api-reference/ordersservice/batch-replace-orders","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Batch replace orders.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Replace multiple orders in one engine step with per-item results: every\\noriginal is cancelled first, then each replacement is placed in request\\norder. A\\ntwo-sided quote can therefore shift across its own resting prices in one\\ncall, and a replacement may use funds freed by any original in the batch.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Failure semantics: an item that fails validation, or whose original\\ncannot be found, leaves the original resting. An item whose replacement\\nfails to PLACE (for example insufficient balance or self-trade\\nprevention) reports the error with its original already cancelled.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that\\nwould cross is refused BEFORE the cancel pass, against the book as it\\nwill stand once the batch’s own cancels are applied, so the item\\nnormally reports the error with its original still resting. It is not a\\nguarantee — the pre-cancel check cannot see what pass 2 will insert or\\nconsume, nor an original that fails to cancel, and the same original\\nlisted twice is judged per occurrence — so confirm against open orders\\nrather than relying on the code alone.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"A replacement the pair’s size rules refuse (below the minimum, above the\\nmaximum, off the quantity step, or a total that does not exceed what\\nalready filled) is also refused before the cancel, so its original keeps\\nits price and queue spot. It is not a guarantee either: the kept order’s\\nfunds are not freed for the other items, one of which may then fail after\\nits own cancel, and another item’s replacement may cross and sweep it\\nunder self-trade prevention.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Batch replace orders","description":"Batch replace orders.\n\n Replace multiple orders in one engine step with per-item results: every\n original is cancelled first, then each replacement is placed in request\n order. A\n two-sided quote can therefore shift across its own resting prices in one\n call, and a replacement may use funds freed by any original in the batch.\n\n Failure semantics: an item that fails validation, or whose original\n cannot be found, leaves the original resting. An item whose replacement\n fails to PLACE (for example insufficient balance or self-trade\n prevention) reports the error with its original already cancelled.\n\n POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that\n would cross is refused BEFORE the cancel pass, against the book as it\n will stand once the batch's own cancels are applied, so the item\n normally reports the error with its original still resting. It is not a\n guarantee — the pre-cancel check cannot see what pass 2 will insert or\n consume, nor an original that fails to cancel, and the same original\n listed twice is judged per occurrence — so confirm against open orders\n rather than relying on the code alone.\n\n A replacement the pair's size rules refuse (below the minimum, above the\n maximum, off the quantity step, or a total that does not exceed what\n already filled) is also refused before the cancel, so its original keeps\n its price and queue spot. It is not a guarantee either: the kept order's\n funds are not freed for the other items, one of which may then fail after\n its own cancel, and another item's replacement may cross and sweep it\n under self-trade prevention.","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/batch-replace","href":"/api-reference/ordersservice/batch-replace-orders","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["OrdersService","Orders"],"summary":"Batch replace orders","description":"Batch replace orders.\n\n Replace multiple orders in one engine step with per-item results: every\n original is cancelled first, then each replacement is placed in request\n order. A\n two-sided quote can therefore shift across its own resting prices in one\n call, and a replacement may use funds freed by any original in the batch.\n\n Failure semantics: an item that fails validation, or whose original\n cannot be found, leaves the original resting. An item whose replacement\n fails to PLACE (for example insufficient balance or self-trade\n prevention) reports the error with its original already cancelled.\n\n POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that\n would cross is refused BEFORE the cancel pass, against the book as it\n will stand once the batch's own cancels are applied, so the item\n normally reports the error with its original still resting. It is not a\n guarantee — the pre-cancel check cannot see what pass 2 will insert or\n consume, nor an original that fails to cancel, and the same original\n listed twice is judged per occurrence — so confirm against open orders\n rather than relying on the code alone.\n\n A replacement the pair's size rules refuse (below the minimum, above the\n maximum, off the quantity step, or a total that does not exceed what\n already filled) is also refused before the cancel, so its original keeps\n its price and queue spot. It is not a guarantee either: the kept order's\n funds are not freed for the other items, one of which may then fail after\n its own cancel, and another item's replacement may cross and sweep it\n under self-trade prevention.","operationId":"batch_replace_orders","requestBody":"c68d9eb1-c1fd-424a-bef8-c26112376d2a","responses":{"200":"239aba4d-5afe-4050-879c-22defb9fc4b4","400":"84289435-aead-4af1-a100-4fd75e741a5b","401":"50f49c49-2512-4098-becd-e96ec6b56ec0","429":"c0a68136-32be-4aa6-8f43-b8bf33b1fed7","500":"6d854a35-50bb-4b53-be59-05133b8754ee"},"security":["3f34bddc-6430-4184-b53a-c5465e267f5d","247d4f01-f4a8-4a25-9699-dd27de25aee6"],"method":"post","type":"path","servers":["76af5a68-1490-444f-9e1c-a0268868c659"],"path":"/api/v1/orders/batch-replace","baseUrlOptions":["https://apimonaco.xyz"],"title":"Batch replace orders","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated","prefillPlaygroundWithExample":true,"prefillPlaygroundExamples":[{"body.orders.items.0.orderId":"123e4567-e89b-12d3-a456-426614174000","body.orders.items.0.price.oneOf.0":"35500.00","body.orders.items.0.quantity.oneOf.0":"0.7","body.orders.items.0.useMasterBalance.oneOf.0":false,"body.orders.items.0.postOnly.oneOf.0":false,"body.orders.items.0.clientOrderId.oneOf.0":"quote-btc-1130-a","body.orders.items.0.selfTradePreventionMode.oneOf.0":"CANCEL_TAKER"}],"disableProxy":true},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"required":["orders"],"type":"object","properties":{"orders":{"maxItems":100,"minItems":1,"type":"array","items":{"required":["orderId"],"type":"object","properties":{"orderId":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string","description":"Order UUID to replace","format":"uuid","isRequired":true,"uniqueKey":"orders.items.[INDEX].orderId","typeLabel":"string\u003cuuid>"},"price":{"oneOf":[{"example":"35500.00","type":"string","description":"New limit price (if changing)","uniqueKey":"orders.items.[INDEX].price.oneOf.0","typeLabel":"string"},{"example":"35500.00","type":"null","description":"New limit price (if changing)","uniqueKey":"orders.items.[INDEX].price.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].price","typeLabel":"string | null"},"quantity":{"oneOf":[{"example":"0.7","type":"string","description":"New TOTAL quantity (if changing). On a partially filled order the replacement rests total minus filled, and collateral is locked for that remainder only (FIX cancel/replace convention: LeavesQty = OrderQty - CumQty). Must exceed the filled amount. Omitted, the replacement keeps the unfilled remainder. Margin reduce-only orders follow the same rule: the quantity is the order's total, and what the replacement rests (total minus filled) must not exceed the live position it reduces.","uniqueKey":"orders.items.[INDEX].quantity.oneOf.0","typeLabel":"string"},{"example":"0.7","type":"null","description":"New TOTAL quantity (if changing). On a partially filled order the replacement rests total minus filled, and collateral is locked for that remainder only (FIX cancel/replace convention: LeavesQty = OrderQty - CumQty). Must exceed the filled amount. Omitted, the replacement keeps the unfilled remainder. Margin reduce-only orders follow the same rule: the quantity is the order's total, and what the replacement rests (total minus filled) must not exceed the live position it reduces.","uniqueKey":"orders.items.[INDEX].quantity.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].quantity","typeLabel":"string | null"},"useMasterBalance":{"oneOf":[{"example":false,"type":"boolean","description":"Use master account balance for sub-account orders","uniqueKey":"orders.items.[INDEX].useMasterBalance.oneOf.0","typeLabel":"boolean"},{"example":false,"type":"null","description":"Use master account balance for sub-account orders","uniqueKey":"orders.items.[INDEX].useMasterBalance.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].useMasterBalance","typeLabel":"boolean | null"},"postOnly":{"oneOf":[{"example":false,"type":"boolean","description":"Post-only: reject instead of matching if this limit order would cross the book — rejected with HTTP 400 / gRPC INVALID_ARGUMENT carrying the structured error code POST_ONLY_WOULD_CROSS (REST error-envelope 'code' field; gRPC google.rpc.ErrorInfo reason; batch per-item error.code). Matching the 'post-only order would cross' message substring is a legacy fallback. LIMIT orders with GTC only; rejected on MARKET orders and IOC/FOK.","uniqueKey":"orders.items.[INDEX].postOnly.oneOf.0","typeLabel":"boolean"},{"example":false,"type":"null","description":"Post-only: reject instead of matching if this limit order would cross the book — rejected with HTTP 400 / gRPC INVALID_ARGUMENT carrying the structured error code POST_ONLY_WOULD_CROSS (REST error-envelope 'code' field; gRPC google.rpc.ErrorInfo reason; batch per-item error.code). Matching the 'post-only order would cross' message substring is a legacy fallback. LIMIT orders with GTC only; rejected on MARKET orders and IOC/FOK.","uniqueKey":"orders.items.[INDEX].postOnly.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].postOnly","typeLabel":"boolean | null"},"clientOrderId":{"oneOf":[{"example":"quote-btc-1130-a","type":"string","description":"Client-assigned correlation handle, echoed back on order reads (detail and list) and on order WebSocket events. At most 64 characters from [A-Za-z0-9._:-]; surrounding whitespace is trimmed before storage, and a blank or whitespace-only value is treated as absent. Uniqueness is enforced only among your orders that are RESTING on the book: an item reusing a value another of your resting orders still holds fails that item alone — the batch itself returns 2xx / OK and the offending item's result slot carries error.code CLIENT_ORDER_ID_CONFLICT; no transport-level 409 / ALREADY_EXISTS is raised. An order that never rests — MARKET, IOC/FOK, or a LIMIT that fills completely on arrival — does not take the handle, and the value is released the moment any order reaches a terminal state. It is therefore NOT an idempotency key, though on this replace path a retry cannot double-execute: the request names the original order id, and the sequencer revalidates that original in memory and on the book at sequence time, so once the first replacement succeeds the original is gone and a retry is rejected with ORDER_NOT_FOUND rather than placing a second order. That code is itself ambiguous — the original may instead have filled or been cancelled — so the risk here is acting on a stale view, not duplicate execution. Reconcile a lost response against the order WebSocket stream, which carries this value on the submit acknowledgement and on fills, including for orders that never rest; order history is replica-backed and can omit an order that did land. The stream is not replayable and has no sequence number to backfill from, and events are not persisted for redelivery, so one can be missed while your connection still looks healthy. A matching event is therefore positive proof the order was accepted, but silence is NEVER evidence it was not, and no client-observable condition makes it so. Absent positive evidence the outcome is unresolved: hold and escalate rather than resubmitting. A replace item carries no order type or time-in-force and its original must still be RESTING, so the IOC/FOK and MARKET post-acceptance rejection shapes are unreachable here. Failures split by WHEN they occur, and the difference decides whether your original survives. Before sequencing: every validation failure — a malformed value included — fails ITS ITEM alone with a structured error.code (INVALID_CLIENT_ORDER_ID for a malformed handle, the same code batch-create uses) and no mutation and no event, batch-create parity; the whole request 400s only for an empty or oversize batch. (Earlier releases rejected the whole batch for a malformed value here.) A pre-cancel gate then drops three more classes before anything is cancelled — a replacement the pair's size rules refuse, a handle conflict, and a post-only replacement that would cross the book as it will stand once this batch's originals are cancelled — so in the ordinary POST_ONLY_WOULD_CROSS case the item fails with its original still RESTING and untouched. After that the endpoint is CANCEL-FIRST: the original is cancelled in pass 1, so a residual placement failure then — a self-trade rejection, or a crossing that only became apparent in pass 2 — leaves the original CANCELLED and emits its cancellation events (terminal reason 'replaced') while the item reports the placement error and no replacement is placed. Never assume a failed item left your original resting; read results[] and the stream. Single ReplaceOrder differs: it is atomic, and a rejected replacement leaves the original untouched. Where no surface is conclusive, do not resubmit. A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the handle.","uniqueKey":"orders.items.[INDEX].clientOrderId.oneOf.0","typeLabel":"string"},{"example":"quote-btc-1130-a","type":"null","description":"Client-assigned correlation handle, echoed back on order reads (detail and list) and on order WebSocket events. At most 64 characters from [A-Za-z0-9._:-]; surrounding whitespace is trimmed before storage, and a blank or whitespace-only value is treated as absent. Uniqueness is enforced only among your orders that are RESTING on the book: an item reusing a value another of your resting orders still holds fails that item alone — the batch itself returns 2xx / OK and the offending item's result slot carries error.code CLIENT_ORDER_ID_CONFLICT; no transport-level 409 / ALREADY_EXISTS is raised. An order that never rests — MARKET, IOC/FOK, or a LIMIT that fills completely on arrival — does not take the handle, and the value is released the moment any order reaches a terminal state. It is therefore NOT an idempotency key, though on this replace path a retry cannot double-execute: the request names the original order id, and the sequencer revalidates that original in memory and on the book at sequence time, so once the first replacement succeeds the original is gone and a retry is rejected with ORDER_NOT_FOUND rather than placing a second order. That code is itself ambiguous — the original may instead have filled or been cancelled — so the risk here is acting on a stale view, not duplicate execution. Reconcile a lost response against the order WebSocket stream, which carries this value on the submit acknowledgement and on fills, including for orders that never rest; order history is replica-backed and can omit an order that did land. The stream is not replayable and has no sequence number to backfill from, and events are not persisted for redelivery, so one can be missed while your connection still looks healthy. A matching event is therefore positive proof the order was accepted, but silence is NEVER evidence it was not, and no client-observable condition makes it so. Absent positive evidence the outcome is unresolved: hold and escalate rather than resubmitting. A replace item carries no order type or time-in-force and its original must still be RESTING, so the IOC/FOK and MARKET post-acceptance rejection shapes are unreachable here. Failures split by WHEN they occur, and the difference decides whether your original survives. Before sequencing: every validation failure — a malformed value included — fails ITS ITEM alone with a structured error.code (INVALID_CLIENT_ORDER_ID for a malformed handle, the same code batch-create uses) and no mutation and no event, batch-create parity; the whole request 400s only for an empty or oversize batch. (Earlier releases rejected the whole batch for a malformed value here.) A pre-cancel gate then drops three more classes before anything is cancelled — a replacement the pair's size rules refuse, a handle conflict, and a post-only replacement that would cross the book as it will stand once this batch's originals are cancelled — so in the ordinary POST_ONLY_WOULD_CROSS case the item fails with its original still RESTING and untouched. After that the endpoint is CANCEL-FIRST: the original is cancelled in pass 1, so a residual placement failure then — a self-trade rejection, or a crossing that only became apparent in pass 2 — leaves the original CANCELLED and emits its cancellation events (terminal reason 'replaced') while the item reports the placement error and no replacement is placed. Never assume a failed item left your original resting; read results[] and the stream. Single ReplaceOrder differs: it is atomic, and a rejected replacement leaves the original untouched. Where no surface is conclusive, do not resubmit. A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the handle.","uniqueKey":"orders.items.[INDEX].clientOrderId.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].clientOrderId","typeLabel":"string | null"},"selfTradePreventionMode":{"oneOf":[{"example":"CANCEL_TAKER","enum":["CANCEL_MAKER","CANCEL_TAKER","CANCEL_BOTH","SKIP"],"type":"string","description":"Per-order self-trade-prevention override for the replacement: CANCEL_MAKER, CANCEL_TAKER, CANCEL_BOTH, or SKIP (see the create-order field for the full semantics). A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the override. Omitted, your wallet's configured default applies, else the platform default CANCEL_MAKER. An unknown value fails only this item, with error.code INVALID_SELF_TRADE_PREVENTION_MODE. The requested value is echoed back as selfTradePreventionMode on order reads, absent when omitted here.","uniqueKey":"orders.items.[INDEX].selfTradePreventionMode.oneOf.0","typeLabel":"enum\u003cstring>"},{"example":"CANCEL_TAKER","enum":["CANCEL_MAKER","CANCEL_TAKER","CANCEL_BOTH","SKIP"],"type":"null","description":"Per-order self-trade-prevention override for the replacement: CANCEL_MAKER, CANCEL_TAKER, CANCEL_BOTH, or SKIP (see the create-order field for the full semantics). A replacement is a new order with a new id, so it carries its own value and inherits nothing from the original — restate it to keep the override. Omitted, your wallet's configured default applies, else the platform default CANCEL_MAKER. An unknown value fails only this item, with error.code INVALID_SELF_TRADE_PREVENTION_MODE. The requested value is echoed back as selfTradePreventionMode on order reads, absent when omitted here.","uniqueKey":"orders.items.[INDEX].selfTradePreventionMode.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].selfTradePreventionMode","typeLabel":"enum\u003cstring> | null"}},"additionalProperties":false,"uniqueKey":"orders.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"orders","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"orders":[{"orderId":"123e4567-e89b-12d3-a456-426614174000","price":"35500.00","quantity":"0.7","useMasterBalance":false,"postOnly":false,"clientOrderId":"quote-btc-1130-a","selfTradePreventionMode":"CANCEL_TAKER"}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"239aba4d-5afe-4050-879c-22defb9fc4b4":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"totalRequested":{"oneOf":[{"example":3,"type":"integer","description":"Number of orders requested to replace","format":"int32","uniqueKey":"totalRequested.oneOf.0","typeLabel":"integer\u003cint32>"},{"example":3,"type":"null","description":"Number of orders requested to replace","format":"int32","uniqueKey":"totalRequested.oneOf.1","typeLabel":"null"}],"uniqueKey":"totalRequested","typeLabel":"integer\u003cint32> | null"},"totalSucceeded":{"oneOf":[{"example":3,"type":"integer","description":"Number of orders successfully replaced","format":"int32","uniqueKey":"totalSucceeded.oneOf.0","typeLabel":"integer\u003cint32>"},{"example":3,"type":"null","description":"Number of orders successfully replaced","format":"int32","uniqueKey":"totalSucceeded.oneOf.1","typeLabel":"null"}],"uniqueKey":"totalSucceeded","typeLabel":"integer\u003cint32> | null"},"totalFailed":{"oneOf":[{"example":0,"type":"integer","description":"Number of replacements that failed","format":"int32","uniqueKey":"totalFailed.oneOf.0","typeLabel":"integer\u003cint32>"},{"example":0,"type":"null","description":"Number of replacements that failed","format":"int32","uniqueKey":"totalFailed.oneOf.1","typeLabel":"null"}],"uniqueKey":"totalFailed","typeLabel":"integer\u003cint32> | null"},"results":{"oneOf":[{"type":"array","items":{"type":"object","properties":{"originalOrderId":{"oneOf":[{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string","description":"Original order UUID that was replaced","format":"uuid","uniqueKey":"results.oneOf.0.items.[INDEX].originalOrderId.oneOf.0","typeLabel":"string\u003cuuid>"},{"example":"123e4567-e89b-12d3-a456-426614174000","type":"null","description":"Original order UUID that was replaced","format":"uuid","uniqueKey":"results.oneOf.0.items.[INDEX].originalOrderId.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].originalOrderId","typeLabel":"string\u003cuuid> | null"},"newOrderId":{"oneOf":[{"example":"987e6543-e21b-12d3-a456-426614174000","type":"string","description":"New replacement order UUID (if successful)","format":"uuid","uniqueKey":"results.oneOf.0.items.[INDEX].newOrderId.oneOf.0","typeLabel":"string\u003cuuid>"},{"example":"987e6543-e21b-12d3-a456-426614174000","type":"null","description":"New replacement order UUID (if successful)","format":"uuid","uniqueKey":"results.oneOf.0.items.[INDEX].newOrderId.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].newOrderId","typeLabel":"string\u003cuuid> | null"},"updatedFields":{"type":"object","properties":{"price":{"oneOf":[{"example":"35500.00","type":"string","description":"The replacement's limit price: the requested price, or the original order's price when price was omitted.","uniqueKey":"results.oneOf.0.items.[INDEX].updatedFields.price.oneOf.0","typeLabel":"string"},{"example":"35500.00","type":"null","description":"The replacement's limit price: the requested price, or the original order's price when price was omitted.","uniqueKey":"results.oneOf.0.items.[INDEX].updatedFields.price.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].updatedFields.price","typeLabel":"string | null"},"quantity":{"oneOf":[{"example":"0.7","type":"string","description":"The replacement's total quantity: the requested quantity, or the original order's total when quantity was omitted. It is not the resting size: the replacement rests this total minus the already-filled amount, so a 100-lot with 60 filled reports 100 here and rests 40. Read the order's remainingQuantity for the resting size. Margin reduce-only replacements report their total the same way.","uniqueKey":"results.oneOf.0.items.[INDEX].updatedFields.quantity.oneOf.0","typeLabel":"string"},{"example":"0.7","type":"null","description":"The replacement's total quantity: the requested quantity, or the original order's total when quantity was omitted. It is not the resting size: the replacement rests this total minus the already-filled amount, so a 100-lot with 60 filled reports 100 here and rests 40. Read the order's remainingQuantity for the resting size. Margin reduce-only replacements report their total the same way.","uniqueKey":"results.oneOf.0.items.[INDEX].updatedFields.quantity.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].updatedFields.quantity","typeLabel":"string | null"}},"uniqueKey":"results.oneOf.0.items.[INDEX].updatedFields","typeLabel":"object"},"matchResult":{"type":"object","properties":{"tradesCount":{"oneOf":[{"example":2,"type":"integer","description":"Number of trades generated by this order","format":"int32","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.tradesCount.oneOf.0","typeLabel":"integer\u003cint32>"},{"example":2,"type":"null","description":"Number of trades generated by this order","format":"int32","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.tradesCount.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.tradesCount","typeLabel":"integer\u003cint32> | null"},"totalFilled":{"oneOf":[{"example":"0.2","type":"string","description":"Total quantity filled","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.totalFilled.oneOf.0","typeLabel":"string"},{"example":"0.2","type":"null","description":"Total quantity filled","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.totalFilled.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.totalFilled","typeLabel":"string | null"},"remainingQuantity":{"oneOf":[{"example":"0.3","type":"string","description":"Remaining unfilled quantity","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.remainingQuantity.oneOf.0","typeLabel":"string"},{"example":"0.3","type":"null","description":"Remaining unfilled quantity","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.remainingQuantity.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.remainingQuantity","typeLabel":"string | null"},"averageFillPrice":{"oneOf":[{"example":"35100.00","type":"string","description":"Volume-weighted average fill price","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.averageFillPrice.oneOf.0","typeLabel":"string"},{"example":"35100.00","type":"null","description":"Volume-weighted average fill price","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.averageFillPrice.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.averageFillPrice","typeLabel":"string | null"},"status":{"oneOf":[{"example":"PARTIALLY_FILLED","type":"string","description":"Resulting order status after matching","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.status.oneOf.0","typeLabel":"string"},{"example":"PARTIALLY_FILLED","type":"null","description":"Resulting order status after matching","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.status.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.status","typeLabel":"string | null"},"actualSlippageBps":{"oneOf":[{"example":15,"type":"integer","description":"Actual slippage incurred in basis points","format":"int32","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.actualSlippageBps.oneOf.0","typeLabel":"integer\u003cint32>"},{"example":15,"type":"null","description":"Actual slippage incurred in basis points","format":"int32","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.actualSlippageBps.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.actualSlippageBps","typeLabel":"integer\u003cint32> | null"},"maxSlippageBps":{"oneOf":[{"example":50,"type":"integer","description":"Maximum slippage tolerance that was set","format":"int32","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.maxSlippageBps.oneOf.0","typeLabel":"integer\u003cint32>"},{"example":50,"type":"null","description":"Maximum slippage tolerance that was set","format":"int32","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.maxSlippageBps.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.maxSlippageBps","typeLabel":"integer\u003cint32> | null"},"executionPriceRange":{"type":"object","properties":{"bestPrice":{"oneOf":[{"example":"2045.00","type":"string","description":"Best execution price achieved","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.executionPriceRange.bestPrice.oneOf.0","typeLabel":"string"},{"example":"2045.00","type":"null","description":"Best execution price achieved","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.executionPriceRange.bestPrice.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.executionPriceRange.bestPrice","typeLabel":"string | null"},"worstPrice":{"oneOf":[{"example":"2052.00","type":"string","description":"Worst execution price in the fill","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.executionPriceRange.worstPrice.oneOf.0","typeLabel":"string"},{"example":"2052.00","type":"null","description":"Worst execution price in the fill","uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.executionPriceRange.worstPrice.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.executionPriceRange.worstPrice","typeLabel":"string | null"}},"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult.executionPriceRange","typeLabel":"object"}},"uniqueKey":"results.oneOf.0.items.[INDEX].matchResult","typeLabel":"object"},"error":{"type":"object","properties":{"code":{"oneOf":[{"example":"ORDER_NOT_FOUND","type":"string","description":"Machine-readable error code","uniqueKey":"results.oneOf.0.items.[INDEX].error.code.oneOf.0","typeLabel":"string"},{"example":"ORDER_NOT_FOUND","type":"null","description":"Machine-readable error code","uniqueKey":"results.oneOf.0.items.[INDEX].error.code.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].error.code","typeLabel":"string | null"},"message":{"oneOf":[{"example":"Order not found or already filled","type":"string","description":"Human-readable error message","uniqueKey":"results.oneOf.0.items.[INDEX].error.message.oneOf.0","typeLabel":"string"},{"example":"Order not found or already filled","type":"null","description":"Human-readable error message","uniqueKey":"results.oneOf.0.items.[INDEX].error.message.oneOf.1","typeLabel":"null"}],"uniqueKey":"results.oneOf.0.items.[INDEX].error.message","typeLabel":"string | null"}},"uniqueKey":"results.oneOf.0.items.[INDEX].error","typeLabel":"object"}},"uniqueKey":"results.oneOf.0.items.[INDEX]","typeLabel":"object"},"uniqueKey":"results.oneOf.0","typeLabel":"object[]"},{"type":"null","items":{"type":"object","properties":{"originalOrderId":{"oneOf":[{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string","description":"Original order UUID that was replaced","format":"uuid"},{"example":"123e4567-e89b-12d3-a456-426614174000","type":"null","description":"Original order UUID that was replaced","format":"uuid"}]},"newOrderId":{"oneOf":[{"example":"987e6543-e21b-12d3-a456-426614174000","type":"string","description":"New replacement order UUID (if successful)","format":"uuid"},{"example":"987e6543-e21b-12d3-a456-426614174000","type":"null","description":"New replacement order UUID (if successful)","format":"uuid"}]},"updatedFields":{"type":"object","properties":{"price":{"oneOf":[{"example":"35500.00","type":"string","description":"The replacement's limit price: the requested price, or the original order's price when price was omitted."},{"example":"35500.00","type":"null","description":"The replacement's limit price: the requested price, or the original order's price when price was omitted."}]},"quantity":{"oneOf":[{"example":"0.7","type":"string","description":"The replacement's total quantity: the requested quantity, or the original order's total when quantity was omitted. It is not the resting size: the replacement rests this total minus the already-filled amount, so a 100-lot with 60 filled reports 100 here and rests 40. Read the order's remainingQuantity for the resting size. Margin reduce-only replacements report their total the same way."},{"example":"0.7","type":"null","description":"The replacement's total quantity: the requested quantity, or the original order's total when quantity was omitted. It is not the resting size: the replacement rests this total minus the already-filled amount, so a 100-lot with 60 filled reports 100 here and rests 40. Read the order's remainingQuantity for the resting size. Margin reduce-only replacements report their total the same way."}]}}},"matchResult":{"type":"object","properties":{"tradesCount":{"oneOf":[{"example":2,"type":"integer","description":"Number of trades generated by this order","format":"int32"},{"example":2,"type":"null","description":"Number of trades generated by this order","format":"int32"}]},"totalFilled":{"oneOf":[{"example":"0.2","type":"string","description":"Total quantity filled"},{"example":"0.2","type":"null","description":"Total quantity filled"}]},"remainingQuantity":{"oneOf":[{"example":"0.3","type":"string","description":"Remaining unfilled quantity"},{"example":"0.3","type":"null","description":"Remaining unfilled quantity"}]},"averageFillPrice":{"oneOf":[{"example":"35100.00","type":"string","description":"Volume-weighted average fill price"},{"example":"35100.00","type":"null","description":"Volume-weighted average fill price"}]},"status":{"oneOf":[{"example":"PARTIALLY_FILLED","type":"string","description":"Resulting order status after matching"},{"example":"PARTIALLY_FILLED","type":"null","description":"Resulting order status after matching"}]},"actualSlippageBps":{"oneOf":[{"example":15,"type":"integer","description":"Actual slippage incurred in basis points","format":"int32"},{"example":15,"type":"null","description":"Actual slippage incurred in basis points","format":"int32"}]},"maxSlippageBps":{"oneOf":[{"example":50,"type":"integer","description":"Maximum slippage tolerance that was set","format":"int32"},{"example":50,"type":"null","description":"Maximum slippage tolerance that was set","format":"int32"}]},"executionPriceRange":{"type":"object","properties":{"bestPrice":{"oneOf":[{"example":"2045.00","type":"string","description":"Best execution price achieved"},{"example":"2045.00","type":"null","description":"Best execution price achieved"}]},"worstPrice":{"oneOf":[{"example":"2052.00","type":"string","description":"Worst execution price in the fill"},{"example":"2052.00","type":"null","description":"Worst execution price in the fill"}]}}}}},"error":{"type":"object","properties":{"code":{"oneOf":[{"example":"ORDER_NOT_FOUND","type":"string","description":"Machine-readable error code"},{"example":"ORDER_NOT_FOUND","type":"null","description":"Machine-readable error code"}]},"message":{"oneOf":[{"example":"Order not found or already filled","type":"string","description":"Human-readable error message"},{"example":"Order not found or already filled","type":"null","description":"Human-readable error message"}]}}}}},"uniqueKey":"results.oneOf.1","typeLabel":"null"}],"uniqueKey":"results","typeLabel":"object[] | null"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"totalRequested":3,"totalSucceeded":3,"totalFailed":0,"results":[{"originalOrderId":"123e4567-e89b-12d3-a456-426614174000","newOrderId":"987e6543-e21b-12d3-a456-426614174000","updatedFields":{"price":"35500.00","quantity":"0.7"},"matchResult":{"tradesCount":2,"totalFilled":"0.2","remainingQuantity":"0.3","averageFillPrice":"35100.00","status":"PARTIALLY_FILLED","actualSlippageBps":15,"maxSlippageBps":50,"executionPriceRange":{"bestPrice":"2045.00","worstPrice":"2052.00"}},"error":{"code":"ORDER_NOT_FOUND","message":"Order not found or already filled"}}]}}},"exampleType":"generated"}},"exampleType":"generated"},"84289435-aead-4af1-a100-4fd75e741a5b":{"description":"Invalid request","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"50f49c49-2512-4098-becd-e96ec6b56ec0":{"description":"Authentication required","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"c0a68136-32be-4aa6-8f43-b8bf33b1fed7":{"description":"Order rate limit exceeded — each batch item counts against the per-account budget (and the account family's shared budget) and the whole request is rejected; retry after the interval in details.retryAfter","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"6d854a35-50bb-4b53-be59-05133b8754ee":{"description":"Internal server error","content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}}},"security":{"3f34bddc-6430-4184-b53a-c5465e267f5d":{"monacoSignature":{"type":"apiKey","description":"Ed25519 session-key request signing. Every authenticated request carries three headers: `X-Monaco-PublicKey` (64-char lowercase-hex session public key), `X-Monaco-Timestamp` (Unix milliseconds, within 30s of server time), and `X-Monaco-Signature` (hex ed25519 signature). The signature is over `METHOD\\npath?query\\ntimestamp_ms\\nSHA256_hex(body)`, where the body hash is the SHA-256 of the empty byte string when there is no body. Obtain the session keypair from `POST /api/v1/auth/challenge` followed by `POST /api/v1/auth/verify`.","name":"X-Monaco-Signature","in":"header","scopes":[],"schemeName":"monacoSignature"}},"247d4f01-f4a8-4a25-9699-dd27de25aee6":{"monacoHttpSignature":{"type":"apiKey","description":"RFC 9421 Ed25519 session-key request signatures. Send Signature-Input, Signature, and Content-Digest together; never combine them with X-Monaco-* credentials. The monaco signature covers @method, @path, @query, and content-digest in that order, with created (Unix seconds within 30s of server time), keyid (registered lowercase-hex session public key), and alg=ed25519 parameters. Content-Digest uses RFC 9530 sha-256 over the exact body bytes, including the empty body. Query coverage retains ordering and percent encoding. Timestamp freshness does not reject repeated identical requests; use endpoint idempotency where supported. Existing legacy signing remains supported during server-first migration; SDK RFC 9421 signing is opt-in. See https://docs.0xmonaco.com/reference/http-message-signatures for the complete profile and trust model.","name":"Signature","in":"header","scopes":[],"schemeName":"monacoHttpSignature"}}},"servers":{"76af5a68-1490-444f-9e1c-a0268868c659":{"url":"https://apimonaco.xyz","description":"Production (Sei mainnet)"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","description":"Ed25519 session-key request signing. Every authenticated request carries three headers: `X-Monaco-PublicKey` (64-char lowercase-hex session public key), `X-Monaco-Timestamp` (Unix milliseconds, within 30s of server time), and `X-Monaco-Signature` (hex ed25519 signature). The signature is over `METHOD\\npath?query\\ntimestamp_ms\\nSHA256_hex(body)`, where the body hash is the SHA-256 of the empty byte string when there is no body. Obtain the session keypair from `POST /api/v1/auth/challenge` followed by `POST /api/v1/auth/verify`.","name":"X-Monaco-Signature","in":"header","scopes":[],"schemeName":"monacoSignature"},"schema":{"title":"X-Monaco-Signature","type":"string","description":"Ed25519 session-key request signing. Every authenticated request carries three headers: `X-Monaco-PublicKey` (64-char lowercase-hex session public key), `X-Monaco-Timestamp` (Unix milliseconds, within 30s of server time), and `X-Monaco-Signature` (hex ed25519 signature). The signature is over `METHOD\\npath?query\\ntimestamp_ms\\nSHA256_hex(body)`, where the body hash is the SHA-256 of the empty byte string when there is no body. Obtain the session keypair from `POST /api/v1/auth/challenge` followed by `POST /api/v1/auth/verify`.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"monacoSignature","name":"X-Monaco-Signature"}],"title":"monacoSignature"},{"schemes":[{"scheme":{"type":"apiKey","description":"RFC 9421 Ed25519 session-key request signatures. Send Signature-Input, Signature, and Content-Digest together; never combine them with X-Monaco-* credentials. The monaco signature covers @method, @path, @query, and content-digest in that order, with created (Unix seconds within 30s of server time), keyid (registered lowercase-hex session public key), and alg=ed25519 parameters. Content-Digest uses RFC 9530 sha-256 over the exact body bytes, including the empty body. Query coverage retains ordering and percent encoding. Timestamp freshness does not reject repeated identical requests; use endpoint idempotency where supported. Existing legacy signing remains supported during server-first migration; SDK RFC 9421 signing is opt-in. See https://docs.0xmonaco.com/reference/http-message-signatures for the complete profile and trust model.","name":"Signature","in":"header","scopes":[],"schemeName":"monacoHttpSignature"},"schema":{"title":"Signature","type":"string","description":"RFC 9421 Ed25519 session-key request signatures. Send Signature-Input, Signature, and Content-Digest together; never combine them with X-Monaco-* credentials. The monaco signature covers @method, @path, @query, and content-digest in that order, with created (Unix seconds within 30s of server time), keyid (registered lowercase-hex session public key), and alg=ed25519 parameters. Content-Digest uses RFC 9530 sha-256 over the exact body bytes, including the empty body. Query coverage retains ordering and percent encoding. Timestamp freshness does not reject repeated identical requests; use endpoint idempotency where supported. Existing legacy signing remains supported during server-first migration; SDK RFC 9421 signing is opt-in. See https://docs.0xmonaco.com/reference/http-message-signatures for the complete profile and trust model.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"monacoHttpSignature","name":"Signature"}],"title":"monacoHttpSignature"}]},"originalFileLocation":"proto-openapi/api/openapi.yaml"},"subdomain":"monaco","siteName":"Monaco Protocol SDK v1.1.14","title":"Batch replace orders - Monaco Protocol SDK v1.1.14","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-12T00:28:14.543Z","originalFileLocation":"api-reference/ordersservice/batch-replace-orders.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Batch replace orders. Replace multiple orders in one engine step with per-item results: every original is cancelled first, then each replacement is placed in request order. A two-sided quote can therefore shift across its own resting prices in one call, and a replacement may use funds freed by any original in the batch. Failure semantics: an item that fails validation, or whose original cannot be found, leaves the original resting. An item whose replacement fails to PLACE (for example insufficient balance or self-trade prevention) reports the error with its original already cancelled. POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that would cross is refused BEFORE the cancel pass, against the book as it will stand once the batch\u0026#x27;s own cancels are applied, so the item normally reports the error with its original still resting. It is not a guarantee — the pre-cancel check cannot see what pass 2 will insert or consume, nor an original that fails to cancel, and the same original listed twice is judged per occurrence — so confirm against open orders rather than relying on the code alone. A replacement the pair\u0026#x27;s size rules refuse (below the minimum, above the maximum, off the quantity step, or a total that does not exceed what already filled) is also refused before the cancel, so its original keeps its price and queue spot. It is not a guarantee either: the kept order\u0026#x27;s funds are not freed for the other items, one of which may then fail after its own cancel, and another item\u0026#x27;s replacement may cross and sweep it under self-trade prevention.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Monaco Protocol SDK v1.1.14\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Batch replace orders - Monaco Protocol SDK v1.1.14\">\u003cmeta data-mint-head property=\"og:description\" content=\"Batch replace orders. Replace multiple orders in one engine step with per-item results: every original is cancelled first, then each replacement is placed in request order. A two-sided quote can therefore shift across its own resting prices in one call, and a replacement may use funds freed by any original in the batch. Failure semantics: an item that fails validation, or whose original cannot be found, leaves the original resting. An item whose replacement fails to PLACE (for example insufficient balance or self-trade prevention) reports the error with its original already cancelled. POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that would cross is refused BEFORE the cancel pass, against the book as it will stand once the batch\u0026#x27;s own cancels are applied, so the item normally reports the error with its original still resting. It is not a guarantee — the pre-cancel check cannot see what pass 2 will insert or consume, nor an original that fails to cancel, and the same original listed twice is judged per occurrence — so confirm against open orders rather than relying on the code alone. A replacement the pair\u0026#x27;s size rules refuse (below the minimum, above the maximum, off the quantity step, or a total that does not exceed what already filled) is also refused before the cancel, so its original keeps its price and queue spot. It is not a guarantee either: the kept order\u0026#x27;s funds are not freed for the other items, one of which may then fail after its own cancel, and another item\u0026#x27;s replacement may cross and sweep it under self-trade prevention.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Monaco Protocol SDK v1.1.14\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://monaco.mintlify.site/_mintlify/api/og/v2?division=Orders\u0026amp;title=Batch+replace+orders\u0026amp;description=Batch+replace+orders.%0A%0A+Replace+multiple+orders+in+one+engine+step+with+per-item+results%3A+every%0A+original+is+cancelled+first%2C+then+each+replacement+is+placed+in\u0026amp;theme=86c8539ecb88515b97c26589\u0026amp;signature=f949eef4fc407fee234ecbf7efc43f66e467efc225b6b23f3d34c2493619d18a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Batch replace orders - Monaco Protocol SDK v1.1.14\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Batch replace orders. Replace multiple orders in one engine step with per-item results: every original is cancelled first, then each replacement is placed in request order. A two-sided quote can therefore shift across its own resting prices in one call, and a replacement may use funds freed by any original in the batch. Failure semantics: an item that fails validation, or whose original cannot be found, leaves the original resting. An item whose replacement fails to PLACE (for example insufficient balance or self-trade prevention) reports the error with its original already cancelled. POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that would cross is refused BEFORE the cancel pass, against the book as it will stand once the batch\u0026#x27;s own cancels are applied, so the item normally reports the error with its original still resting. It is not a guarantee — the pre-cancel check cannot see what pass 2 will insert or consume, nor an original that fails to cancel, and the same original listed twice is judged per occurrence — so confirm against open orders rather than relying on the code alone. A replacement the pair\u0026#x27;s size rules refuse (below the minimum, above the maximum, off the quantity step, or a total that does not exceed what already filled) is also refused before the cancel, so its original keeps its price and queue spot. It is not a guarantee either: the kept order\u0026#x27;s funds are not freed for the other items, one of which may then fail after its own cancel, and another item\u0026#x27;s replacement may cross and sweep it under self-trade prevention.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://monaco.mintlify.site/_mintlify/api/og/v2?division=Orders\u0026amp;title=Batch+replace+orders\u0026amp;description=Batch+replace+orders.%0A%0A+Replace+multiple+orders+in+one+engine+step+with+per-item+results%3A+every%0A+original+is+cancelled+first%2C+then+each+replacement+is+placed+in\u0026amp;theme=86c8539ecb88515b97c26589\u0026amp;signature=f949eef4fc407fee234ecbf7efc43f66e467efc225b6b23f3d34c2493619d18a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/monaco/4wZNikyT1wBLArhB/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Monaco Protocol SDK v1.1.14\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#233329\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/ordersservice/batch-replace-orders.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.0xmonaco.com/#organization\",\"name\":\"Monaco Protocol SDK v1.1.14\",\"url\":\"https://docs.0xmonaco.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/monaco/Puhxf4Whf6wQMalZ/logo.png?fit=max\u0026auto=format\u0026n=Puhxf4Whf6wQMalZ\u0026q=85\u0026s=6b0d46b12348c8cb28126629f97faae0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.0xmonaco.com#website\",\"name\":\"Monaco Protocol SDK v1.1.14\",\"url\":\"https://docs.0xmonaco.com\",\"publisher\":{\"@id\":\"https://docs.0xmonaco.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders#webpage\",\"url\":\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders\",\"name\":\"Batch replace orders\",\"description\":\"Batch replace orders. Replace multiple orders in one engine step with per-item results: every original is cancelled first, then each replacement is placed in request order. A two-sided quote can therefore shift across its own resting prices in one call, and a replacement may use funds freed by any original in the batch. Failure semantics: an item that fails validation, or whose original cannot be found, leaves the original resting. An item whose replacement fails to PLACE (for example insufficient balance or self-trade prevention) reports the error with its original already cancelled. POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that would cross is refused BEFORE the cancel pass, against the book as it will stand once the batch's own cancels are applied, so the item normally reports the error with its original still resting. It is not a guarantee — the pre-cancel check cannot see what pass 2 will insert or consume, nor an original that fails to cancel, and the same original listed twice is judged per occurrence — so confirm against open orders rather than relying on the code alone. A replacement the pair's size rules refuse (below the minimum, above the maximum, off the quantity step, or a total that does not exceed what already filled) is also refused before the cancel, so its original keeps its price and queue spot. It is not a guarantee either: the kept order's funds are not freed for the other items, one of which may then fail after its own cancel, and another item's replacement may cross and sweep it under self-trade prevention.\",\"dateModified\":\"2026-11-12T00:28:14.543Z\",\"isPartOf\":{\"@id\":\"https://docs.0xmonaco.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"APIs\",\"item\":\"https://docs.0xmonaco.com/api-reference/healthservice/health-check\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"REST API\",\"item\":\"https://docs.0xmonaco.com/api-reference\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Orders\",\"item\":\"https://docs.0xmonaco.com/api-reference/ordersservice/get-user-orders\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Batch replace orders\",\"item\":\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders#apireference\",\"headline\":\"Batch replace orders\",\"name\":\"Batch replace orders\",\"description\":\"Batch replace orders. Replace multiple orders in one engine step with per-item results: every original is cancelled first, then each replacement is placed in request order. A two-sided quote can therefore shift across its own resting prices in one call, and a replacement may use funds freed by any original in the batch. Failure semantics: an item that fails validation, or whose original cannot be found, leaves the original resting. An item whose replacement fails to PLACE (for example insufficient balance or self-trade prevention) reports the error with its original already cancelled. POST_ONLY_WOULD_CROSS is the exception: a post-only replacement that would cross is refused BEFORE the cancel pass, against the book as it will stand once the batch's own cancels are applied, so the item normally reports the error with its original still resting. It is not a guarantee — the pre-cancel check cannot see what pass 2 will insert or consume, nor an original that fails to cancel, and the same original listed twice is judged per occurrence — so confirm against open orders rather than relying on the code alone. A replacement the pair's size rules refuse (below the minimum, above the maximum, off the quantity step, or a total that does not exceed what already filled) is also refused before the cancel, so its original keeps its price and queue spot. It is not a guarantee either: the kept order's funds are not freed for the other items, one of which may then fail after its own cancel, and another item's replacement may cross and sweep it under self-trade prevention.\",\"url\":\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders\",\"mainEntityOfPage\":{\"@id\":\"https://docs.0xmonaco.com/api-reference/ordersservice/batch-replace-orders#webpage\"},\"dateModified\":\"2026-11-12T00:28:14.543Z\",\"publisher\":{\"@id\":\"https://docs.0xmonaco.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.0xmonaco.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Monaco Protocol SDK v1.1.14\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Monaco Protocol SDK v1.1.14\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/ordersservice/batch-replace-orders.md","siteName":"Monaco Protocol SDK v1.1.14","nav":{"global":{"anchors":[{"anchor":"Website","icon":"globe","href":"https://0xmonaco.com"}]},"pages":[{"title":"Introduction","href":"/introduction"},{"title":"Markets","href":"/markets"},{"title":"AI \u0026 Agents","href":"/build-with-ai"},{"group":"Learn","pages":[{"title":"Accounts","href":"/accounts"},{"title":"Orders","href":"/trading-mechanics/spot"},{"title":"Margin","href":"/trading-mechanics/perps"},{"title":"Funding Rates","href":"/trading-mechanics/funding-rates"},{"title":"Liquidations \u0026 Auto-Deleveraging","href":"/trading-mechanics/liquidations"},{"title":"Fees","href":"/fees"},{"title":"Earn","href":"/earn"}]},{"group":"Build","pages":[{"title":"Quickstart","href":"/quickstart"},{"title":"Testnet","href":"/testnet"},{"title":"Wallets \u0026 Auth","href":"/developers/accounts/wallets"},{"title":"Balances, Deposits \u0026 Withdrawals","href":"/developers/vault"},{"title":"Perps Collateral","href":"/developers/perps-collateral"},{"title":"Market Data","href":"/developers/markets"},{"title":"Order Management","href":"/developers/trade"},{"title":"Rate Limits","href":"/developers/rate-limits"},{"title":"Positions","href":"/developers/positions"},{"title":"Market-Maker Runbook","href":"/developers/market-maker-runbook"},{"title":"RFQ (block trades)","href":"/developers/rfq"},{"title":"Delegated Agents","href":"/developers/delegated-agents"},{"title":"Invite Codes","href":"/developers/invite-codes"},{"title":"TraderCodes","href":"/developers/tradercodes"},{"title":"BuilderCodes","href":"/developers/buildercodes"}]},{"group":"Libraries","pages":[{"title":"MCP Server","href":"/sdk/mcp-server"},{"group":"TypeScript SDK","root":{"title":"TypeScript SDK","href":"/sdk/typescript/intro"},"expanded":false,"pages":[{"title":"Applications","href":"/sdk/typescript/applications"},{"title":"Authentication","href":"/sdk/typescript/auth"},{"title":"Error Handling","href":"/sdk/typescript/error-handling"},{"title":"Market Data","href":"/sdk/typescript/market"},{"title":"Market Pulse","href":"/sdk/typescript/pulse"},{"title":"Region Status","href":"/sdk/typescript/compliance"},{"title":"Analytics","href":"/sdk/typescript/analytics"},{"title":"Profile","href":"/sdk/typescript/profile"},{"title":"Portfolio Analytics","href":"/sdk/typescript/portfolio"},{"title":"Trading","href":"/sdk/typescript/trades"},{"title":"RFQ","href":"/sdk/typescript/rfq"},{"title":"Margin Accounts","href":"/sdk/typescript/margin-accounts"},{"title":"Positions","href":"/sdk/typescript/positions"},{"title":"Delegated Agents","href":"/sdk/typescript/delegated-agents"},{"title":"Vault","href":"/sdk/typescript/vault"},{"title":"TraderCodes","href":"/sdk/typescript/tradercodes"},{"title":"BuilderCodes","href":"/sdk/typescript/buildercodes"},{"title":"Managed Markets","href":"/sdk/typescript/managed-markets"},{"title":"WebSockets","href":"/sdk/typescript/websockets"}]},{"group":"React SDK","root":{"title":"React SDK","href":"/sdk/react/intro"},"expanded":false,"pages":[{"title":"Session \u0026 Profile Hooks","href":"/sdk/react/hooks/session"},{"title":"Market Data Hooks","href":"/sdk/react/hooks/market-data"},{"title":"Trading Hooks","href":"/sdk/react/hooks/trading"},{"title":"Balance \u0026 Vault Hooks","href":"/sdk/react/hooks/balances"},{"title":"TraderCodes Hooks","href":"/sdk/react/hooks/codes"}]},{"title":"Rust SDK","href":"/sdk/rust"},{"title":"Python, Go, C++ \u0026 More","href":"/sdk/python-quickstart"}]},{"group":"APIs","pages":[{"group":"REST API","root":{"title":"REST API","href":"/api-reference"},"expanded":false,"pages":[{"group":"Health","pages":[{"title":"Health check","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /health","href":"/api-reference/healthservice/health-check"}]},{"group":"Auth","pages":[{"title":"Create authentication challenge","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/auth/challenge","href":"/api-reference/authservice/create-authentication-challenge"},{"title":"Verify signature and authenticate","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/auth/verify","href":"/api-reference/authservice/verify-signature-and-authenticate"},{"title":"Mint one Mainnet invite code","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/invite-codes/requests","href":"/api-reference/authservice/mint-one-mainnet-invite-code"},{"title":"List my Mainnet invite codes","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/invite-codes","href":"/api-reference/authservice/list-my-mainnet-invite-codes"},{"title":"Refresh session expiry","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/auth/refresh","href":"/api-reference/authservice/refresh-session-expiry"},{"title":"Revoke current session","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/auth/revoke","href":"/api-reference/authservice/revoke-current-session"}]},{"group":"Accounts","pages":[{"title":"Get user profile","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/me","href":"/api-reference/accountsservice/get-user-profile"},{"title":"Get user balances","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/balances","href":"/api-reference/accountsservice/get-user-balances"},{"title":"Get user balance by asset","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/balances/{assetId}","href":"/api-reference/accountsservice/get-user-balance-by-asset"},{"title":"Get user movements","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/movements","href":"/api-reference/accountsservice/get-user-movements"},{"title":"Get user trade history","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/trades","href":"/api-reference/accountsservice/get-user-trade-history"},{"title":"Get portfolio stats","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/me/portfolio","href":"/api-reference/accountsservice/get-portfolio-stats"},{"title":"Get portfolio chart time series","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/me/portfolio/chart","href":"/api-reference/accountsservice/get-portfolio-chart-time-series"},{"title":"Get portfolio summary","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/me/portfolio/summary","href":"/api-reference/accountsservice/get-portfolio-summary"},{"title":"Get portfolio performance","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/me/portfolio/performance","href":"/api-reference/accountsservice/get-portfolio-performance"},{"title":"Get portfolio realized PnL","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/me/portfolio/realized-pnl","href":"/api-reference/accountsservice/get-portfolio-realized-pnl"},{"title":"Get portfolio assets","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/me/portfolio/assets","href":"/api-reference/accountsservice/get-portfolio-assets"},{"title":"Get portfolio margin","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/me/portfolio/margin","href":"/api-reference/accountsservice/get-portfolio-margin"},{"title":"List funding payments","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/funding-payments","href":"/api-reference/accountsservice/list-funding-payments"},{"title":"List sub-accounts with balances","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/sub-accounts","href":"/api-reference/accountsservice/list-sub-accounts-with-balances"},{"title":"Get your self-trade-prevention default","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/self-trade-prevention","href":"/api-reference/accountsservice/get-your-self-trade-prevention-default"},{"title":"Set your self-trade-prevention default","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml put /api/v1/accounts/self-trade-prevention","href":"/api-reference/accountsservice/set-your-self-trade-prevention-default"}]},{"group":"Account Limits","pages":[{"title":"Create sub-account limit","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/accounts/sub-accounts/limits","href":"/api-reference/accountsservice/create-sub-account-limit"},{"title":"Get sub-account limits","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/accounts/sub-accounts/{subAccountId}/limits","href":"/api-reference/accountsservice/get-sub-account-limits"},{"title":"Update sub-account limit","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml put /api/v1/accounts/sub-accounts/{subAccountId}/limits/{assetId}","href":"/api-reference/accountsservice/update-sub-account-limit"},{"title":"Delete sub-account limit","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml delete /api/v1/accounts/sub-accounts/{subAccountId}/limits/{assetId}","href":"/api-reference/accountsservice/delete-sub-account-limit"}]},{"group":"Applications","pages":[{"title":"Get application configuration","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/applications/config","href":"/api-reference/applicationsservice/get-application-configuration"},{"title":"Get application stats","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/applications/stats","href":"/api-reference/applicationsservice/get-application-stats"},{"title":"List application users","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/applications/users","href":"/api-reference/applicationsservice/list-application-users"},{"title":"List application balances","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/applications/balances","href":"/api-reference/applicationsservice/list-application-balances"},{"title":"List application margin accounts","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/applications/margin-accounts","href":"/api-reference/applicationsservice/list-application-margin-accounts"},{"title":"List application orders","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/applications/orders","href":"/api-reference/applicationsservice/list-application-orders"},{"title":"List application movements","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/applications/movements","href":"/api-reference/applicationsservice/list-application-movements"}]},{"group":"Market","pages":[{"title":"Trading Pairs","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs","href":"/api-reference/marketservice/trading-pairs"},{"title":"Trading Pair By ID","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}","href":"/api-reference/marketservice/trading-pair-by-id"},{"title":"Market Metadata","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/metadata","href":"/api-reference/marketservice/market-metadata"},{"title":"Get apiv1marketpairs perpconfig","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/perp/config","href":"/api-reference/marketservice/get-apiv1marketpairs-perpconfig"},{"title":"Get apiv1marketpairs perpsummary","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/perp/summary","href":"/api-reference/marketservice/get-apiv1marketpairs-perpsummary"},{"title":"Get apiv1marketpairs mark price","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/mark-price","href":"/api-reference/marketservice/get-apiv1marketpairs-mark-price"},{"title":"Get apiv1marketpairs index price","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/index-price","href":"/api-reference/marketservice/get-apiv1marketpairs-index-price"},{"title":"Get apiv1marketpairs funding","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/funding","href":"/api-reference/marketservice/get-apiv1marketpairs-funding"},{"title":"Get apiv1marketpairs fundinghistory","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/funding/history","href":"/api-reference/marketservice/get-apiv1marketpairs-fundinghistory"},{"title":"Get apiv1marketfundinghistory","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/funding/history","href":"/api-reference/marketservice/get-apiv1marketfundinghistory"},{"title":"Open Interest","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/open-interest","href":"/api-reference/marketservice/open-interest"},{"title":"Trader Metrics","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/trader-metrics","href":"/api-reference/marketservice/trader-metrics"},{"title":"Trade Flow","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/trade-flow","href":"/api-reference/marketservice/trade-flow"},{"title":"Liquidation Events","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/liquidation-events","href":"/api-reference/marketservice/liquidation-events"},{"title":"All Liquidation Events","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/liquidation-events","href":"/api-reference/marketservice/all-liquidation-events"},{"title":"Insurance Funds","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/insurance-funds","href":"/api-reference/marketservice/insurance-funds"},{"title":"Liquidation Metrics","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/{tradingPairId}/liquidation-metrics","href":"/api-reference/marketservice/liquidation-metrics"},{"title":"Candlestick Data","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/pairs/charts/candlestick/{tradingPairId}/{interval}","href":"/api-reference/marketservice/candlestick-data"},{"title":"Market Stats","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/stats","href":"/api-reference/marketservice/market-stats"},{"title":"Market Screener","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/market/screener","href":"/api-reference/marketservice/market-screener"}]},{"group":"Orderbook","pages":[{"title":"Orderbook Snapshot","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/orderbook/{tradingPairId}","href":"/api-reference/orderbookservice/orderbook-snapshot"}]},{"group":"Trades","pages":[{"title":"Trade Feed","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/trades","href":"/api-reference/tradesservice/trade-feed"},{"title":"Recent Trades","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/trades/{tradingPairId}","href":"/api-reference/tradesservice/recent-trades"},{"title":"Get Trade by ID","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/trades/by-id/{tradeId}","href":"/api-reference/tradesservice/get-trade-by-id"}]},{"group":"RFQ","pages":[{"title":"Get RFQ capabilities","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/rfq/capabilities","href":"/api-reference/rfqservice/get-rfq-capabilities"},{"title":"Request quotes","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/rfqs","href":"/api-reference/rfqservice/request-quotes"},{"title":"List your RFQs","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/rfqs","href":"/api-reference/rfqservice/list-your-rfqs"},{"title":"Get an RFQ","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/rfqs/{rfqId}","href":"/api-reference/rfqservice/get-an-rfq"},{"title":"Accept an RFQ","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/rfqs/{rfqId}/accept","href":"/api-reference/rfqservice/accept-an-rfq"},{"title":"Cancel an RFQ","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/rfqs/{rfqId}/cancel","href":"/api-reference/rfqservice/cancel-an-rfq"},{"title":"Quote an RFQ","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml put /api/v1/rfqs/{rfqId}/quote","href":"/api-reference/rfqservice/quote-an-rfq"},{"title":"Withdraw a quote","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml delete /api/v1/rfqs/{rfqId}/quote","href":"/api-reference/rfqservice/withdraw-a-quote"},{"title":"Answer last look","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/rfqs/{rfqId}/last-look","href":"/api-reference/rfqservice/answer-last-look"}]},{"group":"Fees","pages":[{"title":"Simulate fees for a potential order","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/fees/simulate","href":"/api-reference/feesservice/simulate-fees-for-a-potential-order"},{"title":"Get my fee tier and pair schedule","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/fees/tier","href":"/api-reference/feesservice/get-my-fee-tier-and-pair-schedule"},{"title":"Get a trading pair's fee tier schedule","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/fees/schedule","href":"/api-reference/feesservice/get-a-trading-pairs-fee-tier-schedule"}]},{"group":"Withdrawals","pages":[{"title":"Initiate withdrawal","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/withdrawals","href":"/api-reference/withdrawalsservice/initiate-withdrawal"},{"title":"List pending withdrawals","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/withdrawals","href":"/api-reference/withdrawalsservice/list-pending-withdrawals"},{"title":"Get withdrawal","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/withdrawals/{withdrawalIndex}","href":"/api-reference/withdrawalsservice/get-withdrawal"}]},{"group":"Analytics","pages":[{"title":"Protocol totals","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/protocol/totals","href":"/api-reference/analyticsservice/protocol-totals"},{"title":"Protocol series","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/protocol/series","href":"/api-reference/analyticsservice/protocol-series"},{"title":"Market volumes","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/markets/volume","href":"/api-reference/analyticsservice/market-volumes"},{"title":"Treasury net fees","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/treasury/net-fees","href":"/api-reference/analyticsservice/treasury-net-fees"},{"title":"Builders","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/builders","href":"/api-reference/analyticsservice/builders"},{"title":"Builder","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/builders/{builder}","href":"/api-reference/analyticsservice/builder"},{"title":"Builder totals","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/builders/{builder}/totals","href":"/api-reference/analyticsservice/builder-totals"},{"title":"Builder series","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/builders/{builder}/series","href":"/api-reference/analyticsservice/builder-series"},{"title":"Builder leaderboard","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/builder-leaderboard","href":"/api-reference/analyticsservice/builder-leaderboard"},{"title":"Wallet leaderboard","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/wallet-leaderboard","href":"/api-reference/analyticsservice/wallet-leaderboard"},{"title":"Wallet summary","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/wallets/{wallet}","href":"/api-reference/analyticsservice/wallet-summary"},{"title":"Wallet liquidations","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/wallets/{wallet}/liquidations","href":"/api-reference/analyticsservice/wallet-liquidations"},{"title":"Token custody","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/tokens","href":"/api-reference/analyticsservice/token-custody"},{"title":"Token custody detail","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/tokens/{token}","href":"/api-reference/analyticsservice/token-custody-detail"},{"title":"Vault deposits","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/deposits","href":"/api-reference/analyticsservice/vault-deposits"},{"title":"Vault withdrawals","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/analytics/withdrawals","href":"/api-reference/analyticsservice/vault-withdrawals"}]},{"group":"Pulse","pages":[{"title":"Get the market pulse news feed","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/pulse","href":"/api-reference/pulseservice/get-the-market-pulse-news-feed"}]},{"group":"Compliance","pages":[{"title":"Get the caller's region status","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/compliance/region","href":"/api-reference/complianceservice/get-the-callers-region-status"}]},{"group":"Sweeper","pages":[{"title":"Register a deposit address for monitoring","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/sweeper/register","href":"/api-reference/sweeperservice/register-a-deposit-address-for-monitoring"},{"title":"List the chains and assets the sweeper watches","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/sweeper/chains","href":"/api-reference/sweeperservice/list-the-chains-and-assets-the-sweeper-watches"},{"title":"List the caller's sweeper deposits, newest first","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/sweeper/deposits","href":"/api-reference/sweeperservice/list-the-callers-sweeper-deposits-newest-first"},{"title":"Get the status of the caller's deposit from Hyperliquid by its action nonce","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/sweeper/deposits/hypercore/{nonce}","href":"/api-reference/sweeperservice/get-the-status-of-the-callers-deposit-from-hyperliquid-by-its-action-nonce"},{"title":"Get the status of the caller's sweeper deposits in one transaction","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/sweeper/deposits/{txHash}","href":"/api-reference/sweeperservice/get-the-status-of-the-callers-sweeper-deposits-in-one-transaction"}]},{"group":"Managed Markets","pages":[{"title":"List caller managed market assignments","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/managed-markets/assignments","href":"/api-reference/managedmarketsservice/list-caller-managed-market-assignments"},{"title":"Claim or renew a fenced maker lease","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/managed-markets/{launchId}/lease","href":"/api-reference/managedmarketsservice/claim-or-renew-a-fenced-maker-lease"},{"title":"Refresh the server-bounded managed quote set","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/managed-markets/{launchId}/quotes","href":"/api-reference/managedmarketsservice/refresh-the-server-bounded-managed-quote-set"}]},{"group":"Orders","pages":[{"title":"Get user orders","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/orders","href":"/api-reference/ordersservice/get-user-orders"},{"title":"Create new order","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders","href":"/api-reference/ordersservice/create-new-order"},{"title":"Get order by ID","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/orders/{orderId}","href":"/api-reference/ordersservice/get-order-by-id"},{"title":"Replace existing order","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml put /api/v1/orders/{orderId}","href":"/api-reference/ordersservice/replace-existing-order"},{"title":"Cancel existing order","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/cancel","href":"/api-reference/ordersservice/cancel-existing-order"},{"title":"Batch cancel specific orders","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/batch-cancel","href":"/api-reference/ordersservice/batch-cancel-specific-orders"},{"title":"Batch create orders","description":"Batch create orders.\n\n Create multiple orders in a single batch. Each order is processed\n sequentially through the matching engine.","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/batch-create","href":"/api-reference/ordersservice/batch-create-orders"},{"title":"Batch replace orders","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/batch-replace","href":"/api-reference/ordersservice/batch-replace-orders"},{"title":"Cancel all orders","description":"Cancel all orders.\n\n Cancel all active orders for the authenticated user. To cancel orders\n for a specific trading pair, use /batch-cancel-all/{tradingPairId}.\n Also withdraws your RFQ quotes in RFQs still collecting\n (rfqQuotesWithdrawn); an RFQ already accepted is left alone.","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/batch-cancel-all","href":"/api-reference/ordersservice/cancel-all-orders"},{"title":"Cancel all orders for a trading pair","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/batch-cancel-all/{tradingPairId}","href":"/api-reference/ordersservice/cancel-all-orders-for-a-trading-pair"},{"title":"Cancel all orders after a timeout","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/cancel-all-after","href":"/api-reference/ordersservice/cancel-all-orders-after-a-timeout"},{"title":"Get apiv1ordersconditional","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/orders/conditional/{conditionalOrderId}","href":"/api-reference/ordersservice/get-apiv1ordersconditional"},{"title":"Get apiv1ordersconditional","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/orders/conditional/{conditionalOrderId}","href":"/api-reference/ordersservice/get-apiv1ordersconditional"},{"title":"Delete apiv1ordersconditional","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml delete /api/v1/orders/conditional/{conditionalOrderId}","href":"/api-reference/ordersservice/delete-apiv1ordersconditional"},{"title":"Create TWAP order","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/twap","href":"/api-reference/ordersservice/create-twap-order"},{"title":"List TWAP orders","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/orders/twap","href":"/api-reference/ordersservice/list-twap-orders"},{"title":"Get TWAP order by ID","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/orders/twap/{twapOrderId}","href":"/api-reference/ordersservice/get-twap-order-by-id"},{"title":"Get TWAP order TCA report","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/orders/twap/{twapOrderId}/tca","href":"/api-reference/ordersservice/get-twap-order-tca-report"},{"title":"List TWAP order slices","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/orders/twap/{twapOrderId}/slices","href":"/api-reference/ordersservice/list-twap-order-slices"},{"title":"Cancel TWAP order","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/orders/twap/{twapOrderId}/cancel","href":"/api-reference/ordersservice/cancel-twap-order"}]},{"group":"Margin Accounts","pages":[{"title":"Get apiv1marginaccounts","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/margin/accounts/{marginAccountId}","href":"/api-reference/marginaccountsservice/get-apiv1marginaccounts"},{"title":"Get apiv1marginaccounts","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/margin/accounts/{marginAccountId}","href":"/api-reference/marginaccountsservice/get-apiv1marginaccounts"},{"title":"Post apiv1marginaccounts collateraltransfer in","deprecated":true,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/accounts/{marginAccountId}/collateral/transfer-in","href":"/api-reference/marginaccountsservice/post-apiv1marginaccounts-collateraltransfer-in"},{"title":"Post apiv1marginaccounts collateraltransfer out","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/accounts/{marginAccountId}/collateral/transfer-out","href":"/api-reference/marginaccountsservice/post-apiv1marginaccounts-collateraltransfer-out"},{"title":"Get apiv1marginaccounts movements","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/margin/accounts/{marginAccountId}/movements","href":"/api-reference/marginaccountsservice/get-apiv1marginaccounts-movements"},{"title":"Get apiv1marginaccounts pnl","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/margin/accounts/{marginAccountId}/pnl","href":"/api-reference/marginaccountsservice/get-apiv1marginaccounts-pnl"},{"title":"Post apiv1marginaccounts simulate order risk","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/accounts/{marginAccountId}/simulate-order-risk","href":"/api-reference/marginaccountsservice/post-apiv1marginaccounts-simulate-order-risk"},{"title":"Get apiv1margincollateralavailable","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/margin/collateral/available","href":"/api-reference/marginaccountsservice/get-apiv1margincollateralavailable"},{"title":"Post apiv1margincollateraltransfer","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/collateral/transfer","href":"/api-reference/marginaccountsservice/post-apiv1margincollateraltransfer"},{"title":"Get apiv1marginparent margin account","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/margin/parent-margin-account","href":"/api-reference/marginaccountsservice/get-apiv1marginparent-margin-account"},{"title":"Post apiv1marginparent margin accountcollateraltransfer in","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/parent-margin-account/collateral/transfer-in","href":"/api-reference/marginaccountsservice/post-apiv1marginparent-margin-accountcollateraltransfer-in"},{"title":"Post apiv1marginparent margin accountcollateraltransfer out","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/parent-margin-account/collateral/transfer-out","href":"/api-reference/marginaccountsservice/post-apiv1marginparent-margin-accountcollateraltransfer-out"},{"title":"Get apiv1marginparent margin accountmovements","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/margin/parent-margin-account/movements","href":"/api-reference/marginaccountsservice/get-apiv1marginparent-margin-accountmovements"},{"title":"Post apiv1marginparent margin accountsimulate order risk","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/parent-margin-account/simulate-order-risk","href":"/api-reference/marginaccountsservice/post-apiv1marginparent-margin-accountsimulate-order-risk"},{"title":"Post apiv1marginrisk bucketscollateraltransfer in","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/risk-buckets/collateral/transfer-in","href":"/api-reference/marginaccountsservice/post-apiv1marginrisk-bucketscollateraltransfer-in"},{"title":"Post apiv1marginrisk bucketssimulate order risk","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/risk-buckets/simulate-order-risk","href":"/api-reference/marginaccountsservice/post-apiv1marginrisk-bucketssimulate-order-risk"},{"title":"Post apiv1marginsub accounts","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/sub-accounts","href":"/api-reference/marginaccountsservice/post-apiv1marginsub-accounts"},{"title":"Post apiv1marginsub accounts close","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/sub-accounts/{marginAccountId}/close","href":"/api-reference/marginaccountsservice/post-apiv1marginsub-accounts-close"},{"title":"Post apiv1marginsub accounts collateraltransfer in","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-in","href":"/api-reference/marginaccountsservice/post-apiv1marginsub-accounts-collateraltransfer-in"},{"title":"Post apiv1marginsub accounts collateraltransfer out","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/margin/sub-accounts/{marginAccountId}/collateral/transfer-out","href":"/api-reference/marginaccountsservice/post-apiv1marginsub-accounts-collateraltransfer-out"}]},{"group":"Positions","pages":[{"title":"Get apiv1positions","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/positions/{positionId}","href":"/api-reference/positionsservice/get-apiv1positions"},{"title":"Get apiv1positionshistory","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/positions/history","href":"/api-reference/positionsservice/get-apiv1positionshistory"},{"title":"Post apiv1positionsbatch close all","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/positions/batch-close-all","href":"/api-reference/positionsservice/post-apiv1positionsbatch-close-all"},{"title":"Get apiv1positions","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/positions/{positionId}","href":"/api-reference/positionsservice/get-apiv1positions"},{"title":"Post apiv1positions close","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/positions/{positionId}/close","href":"/api-reference/positionsservice/post-apiv1positions-close"},{"title":"Get position PnL history","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/positions/{positionId}/pnl/history","href":"/api-reference/positionsservice/get-position-pnl-history"},{"title":"Get apiv1positions risk","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/positions/{positionId}/risk","href":"/api-reference/positionsservice/get-apiv1positions-risk"},{"title":"Post apiv1positions tp sl","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/positions/{positionId}/tp-sl","href":"/api-reference/positionsservice/post-apiv1positions-tp-sl"}]},{"group":"Delegated Agents","pages":[{"title":"Upsert delegated agent","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/delegated-agents","href":"/api-reference/delegatedagentsservice/upsert-delegated-agent"},{"title":"List delegated agents","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/delegated-agents","href":"/api-reference/delegatedagentsservice/list-delegated-agents"},{"title":"List delegating owners","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/delegated-agents/owners","href":"/api-reference/delegatedagentsservice/list-delegating-owners"},{"title":"Revoke delegated agent","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml delete /api/v1/delegated-agents/{delegatedAgentId}","href":"/api-reference/delegatedagentsservice/revoke-delegated-agent"},{"title":"Create delegated session","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/delegated-agents/sessions","href":"/api-reference/delegatedagentsservice/create-delegated-session"}]},{"group":"TraderCodes","pages":[{"title":"Get your TraderCode","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/tradercodes/codes/me","href":"/api-reference/tradercodeservice/get-your-tradercode"},{"title":"Check custom TraderCode availability","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/tradercodes/codes/available","href":"/api-reference/tradercodeservice/check-custom-tradercode-availability"},{"title":"Look up a TraderCode","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/tradercodes/codes/{code}","href":"/api-reference/tradercodeservice/look-up-a-tradercode"},{"title":"Claim or edit your custom TraderCode","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml put /api/v1/tradercodes/codes/me/custom","href":"/api-reference/tradercodeservice/claim-or-edit-your-custom-tradercode"},{"title":"Clear your custom TraderCode","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml delete /api/v1/tradercodes/codes/me/custom","href":"/api-reference/tradercodeservice/clear-your-custom-tradercode"},{"title":"Get your referral position","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/tradercodes/referrals/me","href":"/api-reference/tradercodeservice/get-your-referral-position"},{"title":"Get your referral downline and earnings","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/tradercodes/referrals/me/downline","href":"/api-reference/tradercodeservice/get-your-referral-downline-and-earnings"},{"title":"Get one level of your referral tree","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/tradercodes/referrals/me/tree","href":"/api-reference/tradercodeservice/get-one-level-of-your-referral-tree"},{"title":"Get your rewards balance","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/tradercodes/rewards/balance","href":"/api-reference/tradercodeservice/get-your-rewards-balance"},{"title":"Transfer rewards into a trading balance","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/tradercodes/rewards/transfer","href":"/api-reference/tradercodeservice/transfer-rewards-into-a-trading-balance"}]},{"group":"BuilderCodes","pages":[{"title":"Get your BuilderCodes program configuration","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/buildercodes/config","href":"/api-reference/buildercoderewardsservice/get-your-buildercodes-program-configuration"},{"title":"Set your builder fees","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml put /api/v1/buildercodes/builder-fee","href":"/api-reference/buildercoderewardsservice/set-your-builder-fees"},{"title":"List your builder-fee changes","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/buildercodes/builder-fee/changes","href":"/api-reference/buildercoderewardsservice/list-your-builder-fee-changes"},{"title":"List your per-trade BuilderCodes earnings","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/buildercodes/payouts","href":"/api-reference/buildercoderewardsservice/list-your-per-trade-buildercodes-earnings"},{"title":"Summarize your BuilderCodes earnings","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/buildercodes/payouts/summary","href":"/api-reference/buildercoderewardsservice/summarize-your-buildercodes-earnings"},{"title":"Get your accrued BuilderCodes balance","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml get /api/v1/buildercodes/rewards/balance","href":"/api-reference/buildercoderewardsservice/get-your-accrued-buildercodes-balance"},{"title":"Claim accrued BuilderCodes payout balance","deprecated":null,"version":null,"openapi":"/proto-openapi/api/openapi.yaml post /api/v1/buildercodes/rewards/claim","href":"/api-reference/buildercoderewardsservice/claim-accrued-buildercodes-payout-balance"}]}]},{"title":"WebSocket API","href":"/reference/websockets"},{"title":"HTTP message signatures","href":"/reference/http-message-signatures"},{"group":"gRPC API","root":{"title":"gRPC API","href":"/reference/grpc"},"expanded":false,"pages":[{"group":"Protobuf Reference","root":{"title":"Protobuf Reference","href":"/grpc/protos"},"expanded":false,"pages":[{"group":"Core","pages":[{"title":"AuthService","href":"/grpc/protos/auth"},{"title":"AccountsService","href":"/grpc/protos/accounts"},{"title":"ApplicationsService","href":"/grpc/protos/applications"},{"title":"HealthService","href":"/grpc/protos/health"},{"title":"ComplianceService","href":"/grpc/protos/compliance"}]},{"group":"Trading","pages":[{"title":"MarketService","href":"/grpc/protos/market"},{"title":"AnalyticsService","href":"/grpc/protos/analytics"},{"title":"PulseService","href":"/grpc/protos/pulse"},{"title":"OrdersService","href":"/grpc/protos/orders"},{"title":"OrderbookService","href":"/grpc/protos/orderbook"},{"title":"TradesService","href":"/grpc/protos/trades"},{"title":"FeesService","href":"/grpc/protos/fees"},{"title":"RfqService","href":"/grpc/protos/rfq"}]},{"group":"Perps","pages":[{"title":"MarginAccountsService","href":"/grpc/protos/margin-accounts"},{"title":"PositionsService","href":"/grpc/protos/positions"}]},{"group":"Vault and Delegation","pages":[{"title":"WithdrawalsService","href":"/grpc/protos/withdrawals"},{"title":"SweeperService","href":"/grpc/protos/sweeper"},{"title":"DelegatedAgentsService","href":"/grpc/protos/delegated-agents"}]},{"group":"TraderCodes","pages":[{"title":"TraderCodeService","href":"/grpc/protos/tradercodes"}]},{"group":"BuilderCodes","pages":[{"title":"BuildercodeRewardsService","href":"/grpc/protos/buildercodes"}]},{"group":"Managed Markets","pages":[{"title":"ManagedMarketsService","href":"/grpc/protos/managed-markets"}]}]}]}]},{"group":"Resources","pages":[{"title":null,"href":"/changelog"},{"group":"Examples","expanded":false,"pages":[{"title":"Build a Trading App","href":"/examples/build-trading-app"},{"title":"End-to-End Examples","href":"/examples/end-to-end"}]}]}]},"basePath":"","title":"Batch replace orders - Monaco Protocol SDK v1.1.14","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}