fixed: true uses a fixed rate and needs a refundAddress. To pay the receiver an exact amount, also set amountType: "receive". Read the final inAmount and outAmount from batch status, once the order has a depositAddress.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Houdini documentation","description":"Learn how Houdini works: private, non-custodial cross-chain swaps across 120+ chains. Guides for Swap, Send, Split and Request, and docs for the Partner API.","colors":{"primary":"#864DE2","light":"#864DE2","dark":"#6D19BB"},"logo":{"light":"https://mintcdn.com/houdini/1qxWMAnpbp51-Yh3/logo/wordmark-black.svg?fit=max\u0026auto=format\u0026n=1qxWMAnpbp51-Yh3\u0026q=85\u0026s=835e11b4170923b979bdf1ba4cb302b8","dark":"https://mintcdn.com/houdini/1qxWMAnpbp51-Yh3/logo/wordmark-white.svg?fit=max\u0026auto=format\u0026n=1qxWMAnpbp51-Yh3\u0026q=85\u0026s=93f5cefb108d85fa5bf5397fa325f004"},"favicon":"https://mintcdn.com/houdini/J_K5qV0WwrgjImSc/favicon.svg?fit=max\u0026auto=format\u0026n=J_K5qV0WwrgjImSc\u0026q=85\u0026s=590f308a0168b015c97bd34e59347cc6","appearance":{"default":"dark"},"background":{"decoration":"gradient","color":{"light":"#EBEBEB","dark":"#191919"}},"footer":{"socials":{"x":"https://x.com/HoudiniSwap","github":"https://github.com/HoudiniSwap"}},"fonts":{"family":"Inter"},"integrations":{"posthog":{"apiKey":"phc_w4HfQH4UqlUBDknwuvTDJMJLJ9CpshxIwzH3eZFa32c","apiHost":"https://api4.houdiniswap.com"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"houdini","hasAudioNarration":false,"actualSubdomain":"houdini","customDomains":["docs.houdiniswap.com"],"gitSource":{"type":"github","owner":"houdiniswap","repo":"docs-v2","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af3191b1580bcb166069333","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"API V2 Reference ","count":41},{"language":"default","tag":"Developer Hub","count":23},{"language":"default","tag":"Overview","count":16},{"language":"default","tag":"Split","count":9},{"language":"default","tag":"On-chain DEX or Bridge","count":9},{"language":"default","tag":"Partner Account","count":9},{"language":"default","tag":"Swap Flow Guides","count":8},{"language":"default","tag":"Private and Standard Swaps","count":5},{"language":"default","tag":"Core Concepts","count":5},{"language":"default","tag":"Bundler EVM","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"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/split/create-split","slug":"/api-reference/split/create-split","pageMetadata":{"title":"Create split","description":"Creates a group of swaps that share one `multiId`. Post the orders straight here — there is no quote step and no `quoteId`.\n\n- routes are chosen for you, per order\n- [Get split quotes](/api-reference/split/get-split-quotes) is optional, for showing rates first\n- each swap starts at status NEW and is prepared in the background\n- poll [Get batch status](/api-reference/split/get-batch-status) for deposit addresses\n- `fixed: true` uses a fixed rate and needs a `refundAddress`. To pay the receiver an exact amount, also set `amountType: \"receive\"`. Read the final `inAmount` and `outAmount` from batch status, once the order has a `depositAddress`.\n\nSee the [Split flow](/developer-hub/swap-flows/split) for the full sequence.","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /exchanges/multi","href":"/api-reference/split/create-split","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 a: \"a\",\n code: \"code\",\n li: \"li\",\n p: \"p\",\n ul: \"ul\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Creates a group of swaps that share one \", _jsx(_components.code, {\n children: \"multiId\"\n }), \". Post the orders straight here — there is no quote step and no \", _jsx(_components.code, {\n children: \"quoteId\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.ul, {\n children: [\"\\n\", _jsx(_components.li, {\n children: \"routes are chosen for you, per order\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.a, {\n href: \"/api-reference/split/get-split-quotes\",\n children: \"Get split quotes\"\n }), \" is optional, for showing rates first\"]\n }), \"\\n\", _jsx(_components.li, {\n children: \"each swap starts at status NEW and is prepared in the background\"\n }), \"\\n\", _jsxs(_components.li, {\n children: [\"poll \", _jsx(_components.a, {\n href: \"/api-reference/split/get-batch-status\",\n children: \"Get batch status\"\n }), \" for deposit addresses\"]\n }), \"\\n\", _jsxs(_components.li, {\n children: [_jsx(_components.code, {\n children: \"fixed: true\"\n }), \" uses a fixed rate and needs a \", _jsx(_components.code, {\n children: \"refundAddress\"\n }), \". To pay the receiver an exact amount, also set \", _jsx(_components.code, {\n children: \"amountType: \\\"receive\\\"\"\n }), \". Read the final \", _jsx(_components.code, {\n children: \"inAmount\"\n }), \" and \", _jsx(_components.code, {\n children: \"outAmount\"\n }), \" from batch status, once the order has a \", _jsx(_components.code, {\n children: \"depositAddress\"\n }), \".\"]\n }), \"\\n\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"See the \", _jsx(_components.a, {\n href: \"/developer-hub/swap-flows/split\",\n children: \"Split flow\"\n }), \" for the full sequence.\"]\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":"Create split","description":"Creates a group of swaps that share one `multiId`. Post the orders straight here — there is no quote step and no `quoteId`.\n\n- routes are chosen for you, per order\n- [Get split quotes](/api-reference/split/get-split-quotes) is optional, for showing rates first\n- each swap starts at status NEW and is prepared in the background\n- poll [Get batch status](/api-reference/split/get-batch-status) for deposit addresses\n- `fixed: true` uses a fixed rate and needs a `refundAddress`. To pay the receiver an exact amount, also set `amountType: \"receive\"`. Read the final `inAmount` and `outAmount` from batch status, once the order has a `depositAddress`.\n\nSee the [Split flow](/developer-hub/swap-flows/split) for the full sequence.","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /exchanges/multi","href":"/api-reference/split/create-split","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"CreateMultiExchange","responses":{"200":"1d40f5de-475c-482f-ba32-437c2f605ede","401":"b4d1bf92-be7f-4aea-96af-9347544ed077","402":"eac1fef7-f406-40d8-9bc4-915ef7370c21","403":"03a89f63-24b7-4e39-97de-6c9cbddd1fff","404":"26b49d15-fe8f-4ff9-b94a-bf01e53faa80","409":"eb5481cb-390b-4ee1-9143-fa8d6fced33a","422":"2a3743c8-428d-49ac-9274-24f51e2a4aeb","429":"14f15d8e-31c4-4c9b-8650-376d38e7c4b2","500":"670eb7e9-1676-419c-a6bd-f7c29485e96d","502":"9f176615-8f53-4a4b-940d-29a2af468db8","503":"51b16da7-9dab-4fbc-8a54-4525ee6c2933"},"description":"Creates a group of swaps that share one `multiId`. Post the orders straight here — there is no quote step and no `quoteId`.\n\n- routes are chosen for you, per order\n- [Get split quotes](/api-reference/split/get-split-quotes) is optional, for showing rates first\n- each swap starts at status NEW and is prepared in the background\n- poll [Get batch status](/api-reference/split/get-batch-status) for deposit addresses\n- `fixed: true` uses a fixed rate and needs a `refundAddress`. To pay the receiver an exact amount, also set `amountType: \"receive\"`. Read the final `inAmount` and `outAmount` from batch status, once the order has a `depositAddress`.\n\nSee the [Split flow](/developer-hub/swap-flows/split) for the full sequence.","summary":"Create split","tags":["Split"],"security":["4ea850bf-8aa7-4ce6-9934-802acdb179a3"],"parameters":[],"requestBody":"3aa8a880-afc7-474e-b352-fe890f0c6771","method":"post","type":"path","servers":["8dcc9605-3ae8-4724-b409-35be2c99d96f"],"path":"/exchanges/multi","baseUrlOptions":["https://api-partner.houdiniswap.com/v2"],"title":"Create split","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"orders":{"items":{"description":"A single order within a Split batch. Quotes are resolved internally — no quoteId required.","properties":{"from":{"type":"string","description":"Token you are swapping from — an `id` from [Get tokens](/api-reference/private-and-standard-swaps/get-tokens), e.g. `6689b73ec90e45f3b3e51566`.","example":"6689b73ec90e45f3b3e51566","minLength":24,"maxLength":24,"isRequired":true,"uniqueKey":"orders.items.[INDEX].from","typeLabel":"string"},"to":{"type":"string","description":"Token you are swapping to — an `id` from [Get tokens](/api-reference/private-and-standard-swaps/get-tokens), e.g. `6689b73ec90e45f3b3e51558`.","example":"6689b73ec90e45f3b3e51558","minLength":24,"maxLength":24,"isRequired":true,"uniqueKey":"orders.items.[INDEX].to","typeLabel":"string"},"amount":{"type":"number","format":"double","description":"Amount you send. With `amountType: \"receive\"`, the amount the receiver gets instead.","isRequired":true,"uniqueKey":"orders.items.[INDEX].amount","typeLabel":"number\u003cdouble>"},"addressTo":{"type":"string","description":"Destination wallet address","minLength":1,"maxLength":200,"isRequired":true,"uniqueKey":"orders.items.[INDEX].addressTo","typeLabel":"string"},"amountType":{"type":"string","enum":["send","receive"],"description":"What `amount` means. Use `receive` to pay an exact amount.\n\n- `send` (default): `amount` is what you deposit\n- `receive`: `amount` is what the receiver gets. The deposit is the order's `inAmount`: read it from [Get batch status](/api-reference/split/get-batch-status) once the order has a `depositAddress`. The create response only shows an estimate.\n- `receive` needs `fixed: true`, or the batch is rejected with `EXACT_OUT_REQUIRES_FIXED_RATE`","uniqueKey":"orders.items.[INDEX].amountType","typeLabel":"enum\u003cstring>"},"anonymous":{"type":"boolean","description":"Use anonymous (private) routing","uniqueKey":"orders.items.[INDEX].anonymous","typeLabel":"boolean"},"destinationTag":{"type":"string","description":"Memo/tag for `addressTo`, e.g. XRP destination tag, Stellar memo, TON comment. Send it when the destination token's chain has `memoNeeded: true` — see [Get chains](/api-reference/reference-data/get-chains).","maxLength":64,"uniqueKey":"orders.items.[INDEX].destinationTag","typeLabel":"string"},"useXmr":{"type":"boolean","description":"Use Monero (XMR) as the bridge token on a private swap. Unset picks from a rotating set of other tokens.","uniqueKey":"orders.items.[INDEX].useXmr","typeLabel":"boolean"},"walletInfo":{"type":"string","description":"Name of the wallet the user is swapping from, e.g. `MetaMask`, `Phantom`, `Trust Wallet`. Optional.","maxLength":256,"uniqueKey":"orders.items.[INDEX].walletInfo","typeLabel":"string"},"filters":{"properties":{"onlySwaps":{"items":{"type":"string","uniqueKey":"orders.items.[INDEX].filters.onlySwaps.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Only quote these providers. Omit to use all of them. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"orders.items.[INDEX].filters.onlySwaps","typeLabel":"string[]"},"rotatePayoutWallets":{"type":"boolean","description":"Rotate the payout path so your orders reuse the same routes less, for better privacy.\n\n- applies to orders, standard and private\n- in a Split, it also spreads the orders of one batch across different routes\n- ignored by quotes","uniqueKey":"orders.items.[INDEX].filters.rotatePayoutWallets","typeLabel":"boolean"},"rotateFallback":{"type":"boolean","description":"When strict rotation runs out of rotated routes, use a valid non-rotated route instead of failing. Default false. Needs `rotatePayoutWallets` — on its own it does nothing.","uniqueKey":"orders.items.[INDEX].filters.rotateFallback","typeLabel":"boolean"},"deviationThreshold":{"type":"number","format":"double","description":"How much worse a rotated route may be, as a percentage, before it is rejected. Default 5. Only used when `rotatePayoutWallets` is true.\n\nFor `amountType: \"receive\"` orders the payout is the same on every route, so this limits how much bigger the deposit may be instead.","minimum":0,"maximum":100,"uniqueKey":"orders.items.[INDEX].filters.deviationThreshold","typeLabel":"number\u003cdouble>"},"rotationLookback":{"type":"integer","format":"int32","description":"How many of your recent orders to look at when picking a different payout path. Default 10. Only used when `rotatePayoutWallets` is true.","minimum":1,"maximum":100,"uniqueKey":"orders.items.[INDEX].filters.rotationLookback","typeLabel":"integer\u003cint32>"},"inLeg":{"properties":{"include":{"items":{"type":"string","uniqueKey":"orders.items.[INDEX].filters.inLeg.include.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Only use these providers for this leg. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"orders.items.[INDEX].filters.inLeg.include","typeLabel":"string[]"},"exclude":{"items":{"type":"string","uniqueKey":"orders.items.[INDEX].filters.inLeg.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Never use these providers for this leg. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"orders.items.[INDEX].filters.inLeg.exclude","typeLabel":"string[]"}},"type":"object","additionalProperties":false,"description":"Provider filter for the in-leg of a private (2-hop) route. Omit it and `onlySwaps` applies to both legs. Ignored by standard and DEX, which are single-hop.","uniqueKey":"orders.items.[INDEX].filters.inLeg","typeLabel":"object"},"outLeg":{"properties":{"include":{"items":{"type":"string","uniqueKey":"orders.items.[INDEX].filters.outLeg.include.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Only use these providers for this leg. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"orders.items.[INDEX].filters.outLeg.include","typeLabel":"string[]"},"exclude":{"items":{"type":"string","uniqueKey":"orders.items.[INDEX].filters.outLeg.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Never use these providers for this leg. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"orders.items.[INDEX].filters.outLeg.exclude","typeLabel":"string[]"}},"type":"object","additionalProperties":false,"description":"Provider filter for the out-leg of a private (2-hop) route. Omit it and `onlySwaps` applies to both legs. Ignored by standard and DEX, which are single-hop.","uniqueKey":"orders.items.[INDEX].filters.outLeg","typeLabel":"object"}},"type":"object","additionalProperties":false,"description":"Deprecated provider filters alias. Use top-level MultiExchangeRequest.filters instead.","uniqueKey":"orders.items.[INDEX].filters","typeLabel":"object"},"fixed":{"type":"boolean","description":"Use a fixed rate for this order. You do not send a `quoteId`.\n\n- the rate is quoted when you create the order, and the exchange locks it when the order gets its `depositAddress`. If it expired before then, the order fails with `FIXED_RATE_QUOTE_EXPIRED`\n- with 2 or more orders, read the final `inAmount` and `outAmount` from [Get batch status](/api-reference/split/get-batch-status) once the order has a `depositAddress`. If its first route fails, a standard order can move to another fixed route with a slightly worse rate (by default at most 5%)\n- `refundAddress` is required\n- your account must have fixed-rate access, or you get `FIXED_RATE_NOT_ALLOWED`\n- fixed orders expire sooner than floating ones, so send the deposit as soon as the `depositAddress` is ready","uniqueKey":"orders.items.[INDEX].fixed","typeLabel":"boolean"},"refundAddress":{"type":"string","description":"Where funds are returned if the swap cannot complete.\n\n- **use a wallet the user controls, not an exchange deposit address**\n- must be on the source chain — the refund comes back as the token you deposited\n- required when `fixed` is true\n- optional otherwise","maxLength":200,"uniqueKey":"orders.items.[INDEX].refundAddress","typeLabel":"string"},"refundExtraId":{"type":"string","description":"Memo/tag for `refundAddress`, e.g. XRP destination tag, Stellar memo, TON comment. Send it when the source token's chain has `memoNeeded: true` — see [Get chains](/api-reference/reference-data/get-chains).","maxLength":64,"uniqueKey":"orders.items.[INDEX].refundExtraId","typeLabel":"string"},"intermediateRefundAddress":{"type":"string","description":"Where USDC is returned if this order's on-chain hop fails. Private orders to a token with no direct private route swap privately to USDC, then hop on-chain to the token; `refundAddress` still covers the deposit.\n\n- Optional. Falls back to the batch-level `intermediateRefundAddress`, then to `addressTo`. Send it to get refunds in a wallet other than the recipient.\n- No quote needed: a Solana address for Solana destinations, an EVM address for any other. Use a wallet you control on the refund chain; a contract wallet may not exist there.\n- Send one when `addressTo` is an EVM contract wallet, on a chain outside EVM and Solana, or an exchange deposit address. Without one, the first two cases don't take the hop, and neither does an order whose hop can't be priced at the time: the order is created without it and, since it has no direct route, will almost always fail on its own. An amount outside the hop's limits is reported in that order's own envelope. The rest of the batch is unaffected.\n- Used only by private, floating-rate orders that need the hop; ignored otherwise. The hop needs `privateOnchainLegEnabled` on your account.\n- The whole batch is rejected with `ONCHAIN_LEG_BUNDLE_REJECTED` (the message names the failing order, for example `orders[1]`) and no order is created if the address is invalid on the refund chain or sanctioned, or if the order needs the hop but can't take it (for example the hop has no route, `privateOnchainLegEnabled` is off, or the amount is outside the hop's limits). Only if the batch can't be checked at all, for example during a temporary pricing outage, is it rejected with `503 PRICE_QUOTES_NOT_RETRIEVED`, which can be retried. Checks that run as each order is created, such as the per-receiver open-order cap, can still fail one order after earlier orders in the batch were created; that order alone carries the error.\n- When more than one order in a batch takes the hop with a refund address you sent (here or at the batch level), their total is also capped. Above the cap the whole batch is rejected with `ONCHAIN_LEG_BUNDLE_OVER_LIMIT`, and no order is created. Orders that rely on the `addressTo` default don't fail the batch at the cap: if counting them would go over it, they are created without the hop instead, and will almost always fail on their own.","maxLength":200,"uniqueKey":"orders.items.[INDEX].intermediateRefundAddress","typeLabel":"string"},"markup":{"type":"number","format":"double","description":"Markup for this request, as a percentage — `0.5` means 0.5%.\n\n- range 0–4; overrides your account default for this trade\n- send `0` for no markup, or omit the field to use your account default\n- providers that cannot apply it are excluded from the results","example":0.5,"minimum":0,"maximum":4,"uniqueKey":"orders.items.[INDEX].markup","typeLabel":"number\u003cdouble>"}},"required":["from","to","amount","addressTo"],"type":"object","additionalProperties":false,"uniqueKey":"orders.items.[INDEX]","typeLabel":"object"},"type":"array","minItems":1,"maxItems":50,"isRequired":true,"uniqueKey":"orders","typeLabel":"object[]"},"filters":{"properties":{"onlySwaps":{"items":{"type":"string","uniqueKey":"filters.onlySwaps.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Only quote these providers. Omit to use all of them. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"filters.onlySwaps","typeLabel":"string[]"},"rotatePayoutWallets":{"type":"boolean","description":"Rotate the payout path so your orders reuse the same routes less, for better privacy.\n\n- applies to orders, standard and private\n- in a Split, it also spreads the orders of one batch across different routes\n- ignored by quotes","uniqueKey":"filters.rotatePayoutWallets","typeLabel":"boolean"},"rotateFallback":{"type":"boolean","description":"When strict rotation runs out of rotated routes, use a valid non-rotated route instead of failing. Default false. Needs `rotatePayoutWallets` — on its own it does nothing.","uniqueKey":"filters.rotateFallback","typeLabel":"boolean"},"deviationThreshold":{"type":"number","format":"double","description":"How much worse a rotated route may be, as a percentage, before it is rejected. Default 5. Only used when `rotatePayoutWallets` is true.\n\nFor `amountType: \"receive\"` orders the payout is the same on every route, so this limits how much bigger the deposit may be instead.","minimum":0,"maximum":100,"uniqueKey":"filters.deviationThreshold","typeLabel":"number\u003cdouble>"},"rotationLookback":{"type":"integer","format":"int32","description":"How many of your recent orders to look at when picking a different payout path. Default 10. Only used when `rotatePayoutWallets` is true.","minimum":1,"maximum":100,"uniqueKey":"filters.rotationLookback","typeLabel":"integer\u003cint32>"},"inLeg":{"properties":{"include":{"items":{"type":"string","uniqueKey":"filters.inLeg.include.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Only use these providers for this leg. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"filters.inLeg.include","typeLabel":"string[]"},"exclude":{"items":{"type":"string","uniqueKey":"filters.inLeg.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Never use these providers for this leg. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"filters.inLeg.exclude","typeLabel":"string[]"}},"type":"object","additionalProperties":false,"description":"Provider filter for the in-leg of a private (2-hop) route. Omit it and `onlySwaps` applies to both legs. Ignored by standard and DEX, which are single-hop.","uniqueKey":"filters.inLeg","typeLabel":"object"},"outLeg":{"properties":{"include":{"items":{"type":"string","uniqueKey":"filters.outLeg.include.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Only use these providers for this leg. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"filters.outLeg.include","typeLabel":"string[]"},"exclude":{"items":{"type":"string","uniqueKey":"filters.outLeg.exclude.items.[INDEX]","typeLabel":"string"},"type":"array","description":"Never use these providers for this leg. Values are `shortName` from [Get swap providers](/api-reference/reference-data/get-swap-providers).","uniqueKey":"filters.outLeg.exclude","typeLabel":"string[]"}},"type":"object","additionalProperties":false,"description":"Provider filter for the out-leg of a private (2-hop) route. Omit it and `onlySwaps` applies to both legs. Ignored by standard and DEX, which are single-hop.","uniqueKey":"filters.outLeg","typeLabel":"object"}},"type":"object","additionalProperties":false,"description":"Provider filters applied to every order in the batch","uniqueKey":"filters","typeLabel":"object"},"intermediateRefundAddress":{"type":"string","description":"Default `intermediateRefundAddress` for every order that doesn't send its own; see that field. Use it to collect all failed hops' USDC in one wallet.\n\n- It must fit every order: a batch mixing Solana and other destinations needs per-order addresses.\n- One shared address links those orders' recipients for anyone who knows it.","maxLength":200,"uniqueKey":"intermediateRefundAddress","typeLabel":"string"}},"required":["orders"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"orders":[{"from":"6689b73ec90e45f3b3e51566","to":"6689b73ec90e45f3b3e51558","amount":123,"addressTo":"\u003cstring>","anonymous":true,"destinationTag":"\u003cstring>","useXmr":true,"walletInfo":"\u003cstring>","filters":{"onlySwaps":["\u003cstring>"],"rotatePayoutWallets":true,"rotateFallback":true,"deviationThreshold":50,"rotationLookback":50,"inLeg":{"include":["\u003cstring>"],"exclude":["\u003cstring>"]},"outLeg":{"include":["\u003cstring>"],"exclude":["\u003cstring>"]}},"fixed":true,"refundAddress":"\u003cstring>","refundExtraId":"\u003cstring>","intermediateRefundAddress":"\u003cstring>","markup":0.5}],"filters":{"onlySwaps":["\u003cstring>"],"rotatePayoutWallets":true,"rotateFallback":true,"deviationThreshold":50,"rotationLookback":50,"inLeg":{"include":["\u003cstring>"],"exclude":["\u003cstring>"]},"outLeg":{"include":["\u003cstring>"],"exclude":["\u003cstring>"]}},"intermediateRefundAddress":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"1d40f5de-475c-482f-ba32-437c2f605ede":{"description":"Split created","content":{"application/json":{"schema":{"description":"Response for POST /exchanges/multi — per-item envelope, some may be errors","properties":{"multiId":{"type":"string","isRequired":true,"uniqueKey":"multiId","typeLabel":"string"},"orders":{"items":{"description":"One entry per requested swap: either the created order, or the error that stopped it","properties":{"order":{"properties":{"houdiniId":{"type":"string","description":"Public order id. Use it with Get order details.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.houdiniId","typeLabel":"string"},"expires":{"type":"string","format":"date-time","description":"Deposit deadline — send the funds by this time or the order expires. Not a rate lock.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.expires","typeLabel":"string\u003cdate-time>"},"displayStatus":{"description":"Human-readable state for your UI, derived from `status` and the leg statuses. Prefer this over `status`.","enum":["WAITING_FOR_DEPOSIT","DEPOSIT_DETECTED","EXCHANGE_IN_PROGRESS","SENDING_TO_INTERMEDIARY","REACHED_INTERMEDIARY","INITIATING_SECOND_EXCHANGE","SECOND_EXCHANGE_IN_PROGRESS","SENDING_TO_RECEIVER","SWAP_COMPLETED","EXPIRED","FAILED","REFUNDED","DELETED"],"type":"string","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.displayStatus","typeLabel":"enum\u003cstring>"},"status":{"description":"Numeric order state. For anything user-facing prefer `displayStatus`.\n\n- `-2` initializing\n- `-1` created\n- `0` waiting for your deposit\n- `1` confirming your deposit\n- `2` exchanging\n- `3` anonymizing — private swaps only\n- `4` finished\n- `5` expired\n- `6` failed\n- `7` refunded\n- `8` deleted","enum":[-2,-1,0,1,2,3,4,5,6,7,8],"type":"number","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.status","typeLabel":"enum\u003cnumber>"},"eta":{"type":"number","format":"double","description":"ETA time, depending on swap","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.eta","typeLabel":"number\u003cdouble>"},"inAmount":{"type":"number","format":"double","description":"Amount to deposit, in the input token.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inAmount","typeLabel":"number\u003cdouble>"},"inSymbol":{"type":"string","description":"Symbol of the input token, e.g. `BTC`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inSymbol","typeLabel":"string"},"outAmount":{"type":"number","format":"double","description":"Amount you receive, in the output token.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outAmount","typeLabel":"number\u003cdouble>"},"outSymbol":{"type":"string","description":"Symbol of the output token, e.g. `ETH`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outSymbol","typeLabel":"string"},"inAmountUsd":{"type":"number","format":"double","description":"USD value of the input amount at order creation time.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inAmountUsd","typeLabel":"number\u003cdouble>"},"outAmountUsd":{"type":"number","format":"double","description":"`outAmount` valued in USD.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outAmountUsd","typeLabel":"number\u003cdouble>"},"inToken":{"properties":{"icon":{"type":"string","description":"Token icon URL.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.icon","typeLabel":"string"},"id":{"type":"string","description":"The token id. Pass this as `from` / `to` when quoting.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.id","typeLabel":"string"},"chain":{"type":"string","description":"Chain short name, e.g. `ethereum`. Matches `shortName` on `chainData`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chain","typeLabel":"string"},"decimals":{"type":"integer","format":"int32","description":"On-chain decimals. Amounts in this API are decimals in the token's own units, so you only need this for on-chain work.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.decimals","typeLabel":"integer\u003cint32>"},"symbol":{"type":"string","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.symbol","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.name","typeLabel":"string"},"created":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.created","typeLabel":"string\u003cdate-time>"},"chainData":{"properties":{"icon":{"type":"string","description":"Chain icon URL.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.icon","typeLabel":"string"},"addressValidation":{"type":"string","description":"Regex a wallet address on this chain must match. Use it to validate `addressTo` before creating an exchange.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.addressValidation","typeLabel":"string"},"tokenAddressValidation":{"type":"string","description":"Regex a token contract address on this chain must match.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.tokenAddressValidation","typeLabel":"string"},"id":{"type":"string","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.id","typeLabel":"string"},"created":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.created","typeLabel":"string\u003cdate-time>"},"name":{"type":"string","description":"Readable chain name, e.g. `Bitcoin`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.name","typeLabel":"string"},"shortName":{"type":"string","description":"The chain's identifier. Pass this wherever an endpoint takes a chain, e.g. `ethereum`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.shortName","typeLabel":"string"},"explorerUrl":{"type":"string","description":"Template for a transaction link — substitute `{txHash}`, e.g. `https://blockchair.com/bitcoin/transaction/{txHash}`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.explorerUrl","typeLabel":"string"},"addressUrl":{"type":"string","description":"Template for an address link — substitute `{address}`, e.g. `https://blockchair.com/bitcoin/address/{address}`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.addressUrl","typeLabel":"string"},"priority":{"type":"number","format":"double","description":"Display order, lower sorts first.\n* `0` is the highest priority and `99999` the lowest.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.priority","typeLabel":"number\u003cdouble>"},"kind":{"type":"string","description":"Chain family, e.g. `evm`, `sol`, `bitcoin`, `xmr`, `ltc`. Determines the address format and which on-chain steps a DEX swap needs.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.kind","typeLabel":"string"},"enabled":{"type":"boolean","description":"False when the chain is temporarily not routing swaps.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.enabled","typeLabel":"boolean"},"shortNameV1":{"type":"string","description":"The chain's name in the v1 API. Use `shortName` instead.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.shortNameV1","typeLabel":"string"},"modified":{"type":"string","format":"date-time","uniqueKey":"orders.items.[INDEX].order.inToken.chainData.modified","typeLabel":"string\u003cdate-time>"},"memoNeeded":{"oneOf":[{"type":"boolean","description":"True when an address on this chain needs a memo or destination tag, e.g. XRP or TON. Send it as `destinationTag` for the payout address, or `refundExtraId` for the refund address.","uniqueKey":"orders.items.[INDEX].order.inToken.chainData.memoNeeded.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when an address on this chain needs a memo or destination tag, e.g. XRP or TON. Send it as `destinationTag` for the payout address, or `refundExtraId` for the refund address.","uniqueKey":"orders.items.[INDEX].order.inToken.chainData.memoNeeded.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.memoNeeded","typeLabel":"boolean | null"},"hashUrl":{"type":"string","description":"Explorer link for a transaction hash, when it differs from `explorerUrl`.","uniqueKey":"orders.items.[INDEX].order.inToken.chainData.hashUrl","typeLabel":"string"},"chainId":{"oneOf":[{"type":"number","format":"double","description":"EVM chain id, e.g. `1` for Ethereum. Null on non-EVM chains.","uniqueKey":"orders.items.[INDEX].order.inToken.chainData.chainId.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"EVM chain id, e.g. `1` for Ethereum. Null on non-EVM chains.","uniqueKey":"orders.items.[INDEX].order.inToken.chainData.chainId.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.chainData.chainId","typeLabel":"number\u003cdouble> | null"}},"required":["icon","addressValidation","tokenAddressValidation","id","created","name","shortName","explorerUrl","addressUrl","priority","kind","enabled","shortNameV1"],"type":"object","additionalProperties":false,"description":"The chain this token lives on.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.chainData","typeLabel":"object"},"enabled":{"type":"boolean","description":"False when the token is temporarily not swappable.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.enabled","typeLabel":"boolean"},"address":{"oneOf":[{"type":"string","description":"Contract address. Null for a chain's native coin — see `mainnet`.","uniqueKey":"orders.items.[INDEX].order.inToken.address.oneOf.0","typeLabel":"string"},{"type":"null","description":"Contract address. Null for a chain's native coin — see `mainnet`.","uniqueKey":"orders.items.[INDEX].order.inToken.address.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.address","typeLabel":"string | null"},"modified":{"type":"string","format":"date-time","uniqueKey":"orders.items.[INDEX].order.inToken.modified","typeLabel":"string\u003cdate-time>"},"description":{"oneOf":[{"type":"string","description":"Token description from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Token description from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.description","typeLabel":"string | null"},"mainnet":{"type":"boolean","description":"True for the chain's native coin (e.g. ETH on Ethereum), false for an issued token (e.g. USDT). Not related to mainnet vs testnet.","uniqueKey":"orders.items.[INDEX].order.inToken.mainnet","typeLabel":"boolean"},"unverified":{"type":"boolean","description":"True when we have not reviewed this token yet — check `securityScan` before using it.","uniqueKey":"orders.items.[INDEX].order.inToken.unverified","typeLabel":"boolean"},"hasDex":{"type":"boolean","description":"True when the token can be swapped on DEX routes.","uniqueKey":"orders.items.[INDEX].order.inToken.hasDex","typeLabel":"boolean"},"hasCex":{"type":"boolean","description":"True when the token can be swapped on private and standard routes.","uniqueKey":"orders.items.[INDEX].order.inToken.hasCex","typeLabel":"boolean"},"hasBundler":{"type":"boolean","description":"True when the bundler can fund this token — paying for a whole Split group with one transaction instead of a deposit per order. Available on Solana, and on supported EVM chains.","uniqueKey":"orders.items.[INDEX].order.inToken.hasBundler","typeLabel":"boolean"},"hasSelfPrivate":{"type":"boolean","description":"True when the token supports self-to-self private swaps — send it and receive the same token at another address, with no on-chain link.","uniqueKey":"orders.items.[INDEX].order.inToken.hasSelfPrivate","typeLabel":"boolean"},"cexTokenId":{"type":"string","description":"The token's identifier on centralized exchanges.","default":"","uniqueKey":"orders.items.[INDEX].order.inToken.cexTokenId","typeLabel":"string"},"rank":{"oneOf":[{"type":"number","format":"double","description":"CoinGecko market-cap rank. Null when unranked.","uniqueKey":"orders.items.[INDEX].order.inToken.rank.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"CoinGecko market-cap rank. Null when unranked.","uniqueKey":"orders.items.[INDEX].order.inToken.rank.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.rank","typeLabel":"number\u003cdouble> | null"},"cgId":{"oneOf":[{"type":"string","description":"CoinGecko id for this token.","uniqueKey":"orders.items.[INDEX].order.inToken.cgId.oneOf.0","typeLabel":"string"},{"type":"null","description":"CoinGecko id for this token.","uniqueKey":"orders.items.[INDEX].order.inToken.cgId.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.cgId","typeLabel":"string | null"},"marketCapChange24h":{"type":"number","format":"double","description":"24h market cap change percentage from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.marketCapChange24h","typeLabel":"number\u003cdouble>"},"circulatingSupply":{"type":"number","format":"double","description":"Token circulating supply from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.circulatingSupply","typeLabel":"number\u003cdouble>"},"price":{"oneOf":[{"type":"number","format":"double","description":"Current price in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.price.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"Current price in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.price.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.price","typeLabel":"number\u003cdouble> | null"},"marketCap":{"oneOf":[{"type":"number","format":"double","description":"Market cap in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.marketCap.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"Market cap in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.marketCap.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.marketCap","typeLabel":"number\u003cdouble> | null"},"volume":{"oneOf":[{"type":"number","format":"double","description":"24h trading volume in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.volume.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"24h trading volume in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.volume.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.volume","typeLabel":"number\u003cdouble> | null"},"fdv":{"oneOf":[{"type":"number","format":"double","description":"Fully diluted valuation in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.fdv.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"Fully diluted valuation in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.inToken.fdv.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.fdv","typeLabel":"number\u003cdouble> | null"},"change":{"oneOf":[{"type":"number","format":"double","description":"24h price change, as a percentage.","uniqueKey":"orders.items.[INDEX].order.inToken.change.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"24h price change, as a percentage.","uniqueKey":"orders.items.[INDEX].order.inToken.change.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.change","typeLabel":"number\u003cdouble> | null"},"priority":{"oneOf":[{"type":"number","format":"double","description":"Display order — lower sorts first. Unrelated to `rank`.","uniqueKey":"orders.items.[INDEX].order.inToken.priority.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"Display order — lower sorts first. Unrelated to `rank`.","uniqueKey":"orders.items.[INDEX].order.inToken.priority.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inToken.priority","typeLabel":"number\u003cdouble> | null"},"warningMessage":{"type":"string","description":"Warning to show the user before swapping this token.","uniqueKey":"orders.items.[INDEX].order.inToken.warningMessage","typeLabel":"string"},"securityScan":{"properties":{"scannedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.scannedAt","typeLabel":"string\u003cdate-time>"},"expiresAt":{"type":"string","format":"date-time","description":"When this verdict goes stale and the token should be re-scanned.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.expiresAt","typeLabel":"string\u003cdate-time>"},"provider":{"type":"string","description":"Screening provider that produced this verdict.","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.provider","typeLabel":"string"},"resultType":{"description":"Security verdict for a token. Branch on this rather than on `features`.\n\n- `Benign` — no issues found\n- `Warning` — show a warning before swapping\n- `Malicious` — do not swap\n- `Unscanned` — could not be screened. Screening is fail-open, so this never blocks a swap on its own.","enum":["Benign","Warning","Malicious","Unscanned"],"type":"string","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.resultType","typeLabel":"enum\u003cstring>"},"providerResultType":{"type":"string","description":"The provider's own `result_type` string, kept unmapped so a verdict we don't model yet is still visible to support instead of being erased.","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.providerResultType","typeLabel":"string"},"maliciousScore":{"type":"number","format":"double","description":"Provider `malicious_score`, 0..1. Arrives as a string; stored as a number.","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.maliciousScore","typeLabel":"number\u003cdouble>"},"features":{"items":{"description":"One finding from the security scan, for display only. The list of possible findings changes over time, so branch on `resultType` instead.","properties":{"featureId":{"type":"string","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.features.items.[INDEX].featureId","typeLabel":"string"},"type":{"type":"string","description":"Provider severity for this feature: Malicious | Warning | Benign | Info.","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.features.items.[INDEX].type","typeLabel":"string"},"description":{"type":"string","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.features.items.[INDEX].description","typeLabel":"string"}},"type":"object","additionalProperties":false,"uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.features.items.[INDEX]","typeLabel":"object"},"type":"array","default":[],"uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.features","typeLabel":"object[]"},"unscannedReason":{"description":"Why a token ended up `UNSCANNED`. Diagnostic only — never a branching input.","enum":["NOT_CONFIGURED","UNSUPPORTED_CHAIN","NATIVE_TOKEN","RATE_LIMITED","TIMEOUT","PROVIDER_ERROR","NO_RESULT","SCAN_PENDING","NOT_A_TOKEN","UNKNOWN_RESULT_TYPE"],"type":"string","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.unscannedReason","typeLabel":"enum\u003cstring>"},"unscannedDetail":{"type":"string","description":"Free-text detail behind `unscannedReason` (provider message, status…).","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan.unscannedDetail","typeLabel":"string"}},"required":["scannedAt","expiresAt"],"type":"object","additionalProperties":false,"description":"Latest security verdict for this token. Absent until the token has been used in a swap at least once.","uniqueKey":"orders.items.[INDEX].order.inToken.securityScan","typeLabel":"object"}},"required":["icon","id","chain","decimals","symbol","name","created","chainData","enabled"],"type":"object","additionalProperties":false,"description":"Token you sent.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inToken","typeLabel":"object"},"outToken":{"properties":{"icon":{"type":"string","description":"Token icon URL.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.icon","typeLabel":"string"},"id":{"type":"string","description":"The token id. Pass this as `from` / `to` when quoting.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.id","typeLabel":"string"},"chain":{"type":"string","description":"Chain short name, e.g. `ethereum`. Matches `shortName` on `chainData`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chain","typeLabel":"string"},"decimals":{"type":"integer","format":"int32","description":"On-chain decimals. Amounts in this API are decimals in the token's own units, so you only need this for on-chain work.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.decimals","typeLabel":"integer\u003cint32>"},"symbol":{"type":"string","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.symbol","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.name","typeLabel":"string"},"created":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.created","typeLabel":"string\u003cdate-time>"},"chainData":{"properties":{"icon":{"type":"string","description":"Chain icon URL.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.icon","typeLabel":"string"},"addressValidation":{"type":"string","description":"Regex a wallet address on this chain must match. Use it to validate `addressTo` before creating an exchange.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.addressValidation","typeLabel":"string"},"tokenAddressValidation":{"type":"string","description":"Regex a token contract address on this chain must match.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.tokenAddressValidation","typeLabel":"string"},"id":{"type":"string","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.id","typeLabel":"string"},"created":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.created","typeLabel":"string\u003cdate-time>"},"name":{"type":"string","description":"Readable chain name, e.g. `Bitcoin`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.name","typeLabel":"string"},"shortName":{"type":"string","description":"The chain's identifier. Pass this wherever an endpoint takes a chain, e.g. `ethereum`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.shortName","typeLabel":"string"},"explorerUrl":{"type":"string","description":"Template for a transaction link — substitute `{txHash}`, e.g. `https://blockchair.com/bitcoin/transaction/{txHash}`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.explorerUrl","typeLabel":"string"},"addressUrl":{"type":"string","description":"Template for an address link — substitute `{address}`, e.g. `https://blockchair.com/bitcoin/address/{address}`.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.addressUrl","typeLabel":"string"},"priority":{"type":"number","format":"double","description":"Display order, lower sorts first.\n* `0` is the highest priority and `99999` the lowest.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.priority","typeLabel":"number\u003cdouble>"},"kind":{"type":"string","description":"Chain family, e.g. `evm`, `sol`, `bitcoin`, `xmr`, `ltc`. Determines the address format and which on-chain steps a DEX swap needs.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.kind","typeLabel":"string"},"enabled":{"type":"boolean","description":"False when the chain is temporarily not routing swaps.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.enabled","typeLabel":"boolean"},"shortNameV1":{"type":"string","description":"The chain's name in the v1 API. Use `shortName` instead.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.shortNameV1","typeLabel":"string"},"modified":{"type":"string","format":"date-time","uniqueKey":"orders.items.[INDEX].order.outToken.chainData.modified","typeLabel":"string\u003cdate-time>"},"memoNeeded":{"oneOf":[{"type":"boolean","description":"True when an address on this chain needs a memo or destination tag, e.g. XRP or TON. Send it as `destinationTag` for the payout address, or `refundExtraId` for the refund address.","uniqueKey":"orders.items.[INDEX].order.outToken.chainData.memoNeeded.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"True when an address on this chain needs a memo or destination tag, e.g. XRP or TON. Send it as `destinationTag` for the payout address, or `refundExtraId` for the refund address.","uniqueKey":"orders.items.[INDEX].order.outToken.chainData.memoNeeded.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.memoNeeded","typeLabel":"boolean | null"},"hashUrl":{"type":"string","description":"Explorer link for a transaction hash, when it differs from `explorerUrl`.","uniqueKey":"orders.items.[INDEX].order.outToken.chainData.hashUrl","typeLabel":"string"},"chainId":{"oneOf":[{"type":"number","format":"double","description":"EVM chain id, e.g. `1` for Ethereum. Null on non-EVM chains.","uniqueKey":"orders.items.[INDEX].order.outToken.chainData.chainId.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"EVM chain id, e.g. `1` for Ethereum. Null on non-EVM chains.","uniqueKey":"orders.items.[INDEX].order.outToken.chainData.chainId.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.chainData.chainId","typeLabel":"number\u003cdouble> | null"}},"required":["icon","addressValidation","tokenAddressValidation","id","created","name","shortName","explorerUrl","addressUrl","priority","kind","enabled","shortNameV1"],"type":"object","additionalProperties":false,"description":"The chain this token lives on.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.chainData","typeLabel":"object"},"enabled":{"type":"boolean","description":"False when the token is temporarily not swappable.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.enabled","typeLabel":"boolean"},"address":{"oneOf":[{"type":"string","description":"Contract address. Null for a chain's native coin — see `mainnet`.","uniqueKey":"orders.items.[INDEX].order.outToken.address.oneOf.0","typeLabel":"string"},{"type":"null","description":"Contract address. Null for a chain's native coin — see `mainnet`.","uniqueKey":"orders.items.[INDEX].order.outToken.address.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.address","typeLabel":"string | null"},"modified":{"type":"string","format":"date-time","uniqueKey":"orders.items.[INDEX].order.outToken.modified","typeLabel":"string\u003cdate-time>"},"description":{"oneOf":[{"type":"string","description":"Token description from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.description.oneOf.0","typeLabel":"string"},{"type":"null","description":"Token description from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.description.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.description","typeLabel":"string | null"},"mainnet":{"type":"boolean","description":"True for the chain's native coin (e.g. ETH on Ethereum), false for an issued token (e.g. USDT). Not related to mainnet vs testnet.","uniqueKey":"orders.items.[INDEX].order.outToken.mainnet","typeLabel":"boolean"},"unverified":{"type":"boolean","description":"True when we have not reviewed this token yet — check `securityScan` before using it.","uniqueKey":"orders.items.[INDEX].order.outToken.unverified","typeLabel":"boolean"},"hasDex":{"type":"boolean","description":"True when the token can be swapped on DEX routes.","uniqueKey":"orders.items.[INDEX].order.outToken.hasDex","typeLabel":"boolean"},"hasCex":{"type":"boolean","description":"True when the token can be swapped on private and standard routes.","uniqueKey":"orders.items.[INDEX].order.outToken.hasCex","typeLabel":"boolean"},"hasBundler":{"type":"boolean","description":"True when the bundler can fund this token — paying for a whole Split group with one transaction instead of a deposit per order. Available on Solana, and on supported EVM chains.","uniqueKey":"orders.items.[INDEX].order.outToken.hasBundler","typeLabel":"boolean"},"hasSelfPrivate":{"type":"boolean","description":"True when the token supports self-to-self private swaps — send it and receive the same token at another address, with no on-chain link.","uniqueKey":"orders.items.[INDEX].order.outToken.hasSelfPrivate","typeLabel":"boolean"},"cexTokenId":{"type":"string","description":"The token's identifier on centralized exchanges.","default":"","uniqueKey":"orders.items.[INDEX].order.outToken.cexTokenId","typeLabel":"string"},"rank":{"oneOf":[{"type":"number","format":"double","description":"CoinGecko market-cap rank. Null when unranked.","uniqueKey":"orders.items.[INDEX].order.outToken.rank.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"CoinGecko market-cap rank. Null when unranked.","uniqueKey":"orders.items.[INDEX].order.outToken.rank.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.rank","typeLabel":"number\u003cdouble> | null"},"cgId":{"oneOf":[{"type":"string","description":"CoinGecko id for this token.","uniqueKey":"orders.items.[INDEX].order.outToken.cgId.oneOf.0","typeLabel":"string"},{"type":"null","description":"CoinGecko id for this token.","uniqueKey":"orders.items.[INDEX].order.outToken.cgId.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.cgId","typeLabel":"string | null"},"marketCapChange24h":{"type":"number","format":"double","description":"24h market cap change percentage from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.marketCapChange24h","typeLabel":"number\u003cdouble>"},"circulatingSupply":{"type":"number","format":"double","description":"Token circulating supply from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.circulatingSupply","typeLabel":"number\u003cdouble>"},"price":{"oneOf":[{"type":"number","format":"double","description":"Current price in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.price.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"Current price in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.price.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.price","typeLabel":"number\u003cdouble> | null"},"marketCap":{"oneOf":[{"type":"number","format":"double","description":"Market cap in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.marketCap.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"Market cap in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.marketCap.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.marketCap","typeLabel":"number\u003cdouble> | null"},"volume":{"oneOf":[{"type":"number","format":"double","description":"24h trading volume in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.volume.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"24h trading volume in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.volume.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.volume","typeLabel":"number\u003cdouble> | null"},"fdv":{"oneOf":[{"type":"number","format":"double","description":"Fully diluted valuation in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.fdv.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"Fully diluted valuation in USD, from CoinGecko.","uniqueKey":"orders.items.[INDEX].order.outToken.fdv.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.fdv","typeLabel":"number\u003cdouble> | null"},"change":{"oneOf":[{"type":"number","format":"double","description":"24h price change, as a percentage.","uniqueKey":"orders.items.[INDEX].order.outToken.change.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"24h price change, as a percentage.","uniqueKey":"orders.items.[INDEX].order.outToken.change.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.change","typeLabel":"number\u003cdouble> | null"},"priority":{"oneOf":[{"type":"number","format":"double","description":"Display order — lower sorts first. Unrelated to `rank`.","uniqueKey":"orders.items.[INDEX].order.outToken.priority.oneOf.0","typeLabel":"number\u003cdouble>"},{"type":"null","format":"double","description":"Display order — lower sorts first. Unrelated to `rank`.","uniqueKey":"orders.items.[INDEX].order.outToken.priority.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outToken.priority","typeLabel":"number\u003cdouble> | null"},"warningMessage":{"type":"string","description":"Warning to show the user before swapping this token.","uniqueKey":"orders.items.[INDEX].order.outToken.warningMessage","typeLabel":"string"},"securityScan":{"properties":{"scannedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.scannedAt","typeLabel":"string\u003cdate-time>"},"expiresAt":{"type":"string","format":"date-time","description":"When this verdict goes stale and the token should be re-scanned.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.expiresAt","typeLabel":"string\u003cdate-time>"},"provider":{"type":"string","description":"Screening provider that produced this verdict.","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.provider","typeLabel":"string"},"resultType":{"description":"Security verdict for a token. Branch on this rather than on `features`.\n\n- `Benign` — no issues found\n- `Warning` — show a warning before swapping\n- `Malicious` — do not swap\n- `Unscanned` — could not be screened. Screening is fail-open, so this never blocks a swap on its own.","enum":["Benign","Warning","Malicious","Unscanned"],"type":"string","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.resultType","typeLabel":"enum\u003cstring>"},"providerResultType":{"type":"string","description":"The provider's own `result_type` string, kept unmapped so a verdict we don't model yet is still visible to support instead of being erased.","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.providerResultType","typeLabel":"string"},"maliciousScore":{"type":"number","format":"double","description":"Provider `malicious_score`, 0..1. Arrives as a string; stored as a number.","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.maliciousScore","typeLabel":"number\u003cdouble>"},"features":{"items":{"description":"One finding from the security scan, for display only. The list of possible findings changes over time, so branch on `resultType` instead.","properties":{"featureId":{"type":"string","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.features.items.[INDEX].featureId","typeLabel":"string"},"type":{"type":"string","description":"Provider severity for this feature: Malicious | Warning | Benign | Info.","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.features.items.[INDEX].type","typeLabel":"string"},"description":{"type":"string","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.features.items.[INDEX].description","typeLabel":"string"}},"type":"object","additionalProperties":false,"uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.features.items.[INDEX]","typeLabel":"object"},"type":"array","default":[],"uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.features","typeLabel":"object[]"},"unscannedReason":{"description":"Why a token ended up `UNSCANNED`. Diagnostic only — never a branching input.","enum":["NOT_CONFIGURED","UNSUPPORTED_CHAIN","NATIVE_TOKEN","RATE_LIMITED","TIMEOUT","PROVIDER_ERROR","NO_RESULT","SCAN_PENDING","NOT_A_TOKEN","UNKNOWN_RESULT_TYPE"],"type":"string","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.unscannedReason","typeLabel":"enum\u003cstring>"},"unscannedDetail":{"type":"string","description":"Free-text detail behind `unscannedReason` (provider message, status…).","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan.unscannedDetail","typeLabel":"string"}},"required":["scannedAt","expiresAt"],"type":"object","additionalProperties":false,"description":"Latest security verdict for this token. Absent until the token has been used in a swap at least once.","uniqueKey":"orders.items.[INDEX].order.outToken.securityScan","typeLabel":"object"}},"required":["icon","id","chain","decimals","symbol","name","created","chainData","enabled"],"type":"object","additionalProperties":false,"description":"Token you received.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.outToken","typeLabel":"object"},"receiverAddress":{"type":"string","description":"Wallet the payout is sent to.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.receiverAddress","typeLabel":"string"},"anonymous":{"type":"boolean","description":"True when this order took the private two-leg route.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.anonymous","typeLabel":"boolean"},"isDex":{"type":"boolean","description":"True when the order executed on a DEX route.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.isDex","typeLabel":"boolean"},"actionRequired":{"type":"boolean","description":"True when the order failed but your deposit had already arrived — contact support to recover the funds.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.actionRequired","typeLabel":"boolean"},"inStatus":{"description":"Progress of the incoming leg — your deposit reaching the provider. For reference and debugging; drive your UI from `displayStatus` instead.\n\n- `0` created\n- `1` waiting for the deposit\n- `2` deposit seen, waiting for confirmations\n- `3` exchanging\n- `4` sending funds on\n- `5` finished\n- `6` failed\n- `7` refunded\n- `8` on hold for a compliance check\n- `9` expired — no deposit arrived in time\n- `10` finished through a fallback payout","enum":[0,1,2,3,4,5,6,7,8,9,10],"type":"number","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inStatus","typeLabel":"enum\u003cnumber>"},"created":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.created","typeLabel":"string\u003cdate-time>"},"inCreated":{"type":"string","format":"date-time","description":"When the incoming leg was created.","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.inCreated","typeLabel":"string\u003cdate-time>"},"notified":{"type":"boolean","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.notified","typeLabel":"boolean"},"id":{"type":"string","isRequired":true,"uniqueKey":"orders.items.[INDEX].order.id","typeLabel":"string"},"depositTag":{"type":"string","description":"Memo/tag that must be sent with the deposit, on chains that use one (XRP, TON, Stellar, …).\n\nShow it to your user next to `depositAddress` — a deposit sent without it may not be credited.","uniqueKey":"orders.items.[INDEX].order.depositTag","typeLabel":"string"},"refundAddress":{"type":"string","description":"Refund address recorded for this order.","uniqueKey":"orders.items.[INDEX].order.refundAddress","typeLabel":"string"},"intermediateRefundAddress":{"type":"string","description":"The `intermediateRefundAddress` sent at [Create exchange](/api-reference/private-and-standard-swaps/create-exchange): where the intermediate hop's funds are returned if that hop cannot complete. Separate from `refundAddress`, which covers the deposit leg.\n\nPresent only on orders whose route settles through an on-chain hop — those quoted with `requiresIntermediateRefundAddress: true`.","uniqueKey":"orders.items.[INDEX].order.intermediateRefundAddress","typeLabel":"string"},"fixed":{"type":"boolean","description":"True when the order settled at a locked rate.","uniqueKey":"orders.items.[INDEX].order.fixed","typeLabel":"boolean"},"express":{"type":"boolean","description":"True when this swap ran on a route expected to settle faster than usual. Absent when it did not.","uniqueKey":"orders.items.[INDEX].order.express","typeLabel":"boolean"},"nonRefundable":{"type":"boolean","description":"True when the deposit can no longer be refunded.","uniqueKey":"orders.items.[INDEX].order.nonRefundable","typeLabel":"boolean"},"rerouted":{"type":"boolean","description":"True when the route that executed is not the one that was quoted, because the quoted route failed and a fallback was used. The amounts may differ from the quote — compare `inAmount` against `quotedInAmount` and `outAmount` against `quotedOutAmount`.","uniqueKey":"orders.items.[INDEX].order.rerouted","typeLabel":"boolean"},"quotedInAmount":{"type":"number","format":"double","description":"The deposit amount originally quoted, present only when the order was rerouted. `inAmount` is what the fallback route actually asks for; on an exact-out order this is the side that moves.","uniqueKey":"orders.items.[INDEX].order.quotedInAmount","typeLabel":"number\u003cdouble>"},"quotedOutAmount":{"type":"number","format":"double","description":"The payout originally quoted, present only when the order was rerouted. `outAmount` is what the fallback route will actually pay; on an exact-in order this is the side that moves.","uniqueKey":"orders.items.[INDEX].order.quotedOutAmount","typeLabel":"number\u003cdouble>"},"refundHash":{"type":"string","description":"Hash of the transaction that returned your funds. Absent unless the order refunded.","uniqueKey":"orders.items.[INDEX].order.refundHash","typeLabel":"string"},"refundChain":{"type":"string","description":"Chain the refund was returned on, e.g. \"bsc\". Refunds are returned on the input chain.","uniqueKey":"orders.items.[INDEX].order.refundChain","typeLabel":"string"},"refundAmount":{"type":"number","format":"double","description":"Amount returned to you, after the provider's refund fee. Absent when the exchange did not report one.","uniqueKey":"orders.items.[INDEX].order.refundAmount","typeLabel":"number\u003cdouble>"},"modified":{"type":"string","format":"date-time","uniqueKey":"orders.items.[INDEX].order.modified","typeLabel":"string\u003cdate-time>"},"metadata":{"description":"Extra data from the provider. The shape depends on the route.","uniqueKey":"orders.items.[INDEX].order.metadata","typeLabel":"any"},"receiverTag":{"oneOf":[{"type":"string","description":"Memo/tag required when receiving funds for assets that use one","uniqueKey":"orders.items.[INDEX].order.receiverTag.oneOf.0","typeLabel":"string"},{"type":"null","description":"Memo/tag required when receiving funds for assets that use one","uniqueKey":"orders.items.[INDEX].order.receiverTag.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.receiverTag","typeLabel":"string | null"},"swapName":{"type":"string","description":"Name of the exchange handling the deposit leg. Omitted on private orders, which withhold the provider, and on Split orders that have not yet been assigned one.","uniqueKey":"orders.items.[INDEX].order.swapName","typeLabel":"string"},"multiId":{"type":"string","description":"Split group ID. Present only on orders created as part of a batch.","uniqueKey":"orders.items.[INDEX].order.multiId","typeLabel":"string"},"outStatus":{"description":"Status of the payout leg. Present only on private orders — public orders settle in a single leg and never carry one. For reference and debugging; drive your UI from `displayStatus` instead.\n\n- `0` created\n- `1` waiting for the deposit\n- `2` deposit seen, waiting for confirmations\n- `3` exchanging\n- `4` sending funds on\n- `5` finished\n- `6` failed\n- `7` refunded\n- `8` on hold for a compliance check\n- `9` expired — no deposit arrived in time\n- `10` finished through a fallback payout","enum":[0,1,2,3,4,5,6,7,8,9,10],"type":"number","uniqueKey":"orders.items.[INDEX].order.outStatus","typeLabel":"enum\u003cnumber>"},"transactionHash":{"oneOf":[{"type":"string","description":"Hash of the transaction that delivered the result of the order. Use this field to show or link the payout — it works the same on standard and private orders.\n\n- Finished order: the payout to `receiverAddress`.\n- Refunded order: the transaction that returned your funds.\n- Otherwise: empty until the payout is sent.","uniqueKey":"orders.items.[INDEX].order.transactionHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"Hash of the transaction that delivered the result of the order. Use this field to show or link the payout — it works the same on standard and private orders.\n\n- Finished order: the payout to `receiverAddress`.\n- Refunded order: the transaction that returned your funds.\n- Otherwise: empty until the payout is sent.","uniqueKey":"orders.items.[INDEX].order.transactionHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.transactionHash","typeLabel":"string | null"},"hashUrl":{"type":"string","description":"Block explorer link for `transactionHash`. Empty until `transactionHash` is set, or when the chain has no explorer.","uniqueKey":"orders.items.[INDEX].order.hashUrl","typeLabel":"string"},"inHash":{"oneOf":[{"type":"string","description":"Hash of your deposit transaction. Empty until the deposit is seen.","uniqueKey":"orders.items.[INDEX].order.inHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"Hash of your deposit transaction. Empty until the deposit is seen.","uniqueKey":"orders.items.[INDEX].order.inHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inHash","typeLabel":"string | null"},"inTransactionInHash":{"oneOf":[{"type":"string","description":"Deprecated. Use `inHash`.\n\nHash of your deposit transaction. Empty until the deposit is seen.","deprecated":true,"uniqueKey":"orders.items.[INDEX].order.inTransactionInHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"Deprecated. Use `inHash`.\n\nHash of your deposit transaction. Empty until the deposit is seen.","deprecated":true,"uniqueKey":"orders.items.[INDEX].order.inTransactionInHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.inTransactionInHash","typeLabel":"string | null"},"outTransactionOutHash":{"oneOf":[{"type":"string","description":"Deprecated. Use `transactionHash`.\n\nPayout hash of the second leg of a private order. Empty on standard orders, and on private orders until that leg has paid out.","deprecated":true,"uniqueKey":"orders.items.[INDEX].order.outTransactionOutHash.oneOf.0","typeLabel":"string"},{"type":"null","description":"Deprecated. Use `transactionHash`.\n\nPayout hash of the second leg of a private order. Empty on standard orders, and on private orders until that leg has paid out.","deprecated":true,"uniqueKey":"orders.items.[INDEX].order.outTransactionOutHash.oneOf.1","typeLabel":"null"}],"uniqueKey":"orders.items.[INDEX].order.outTransactionOutHash","typeLabel":"string | null"},"orderFinishedReceived":{"type":"string","format":"date-time","description":"When the order reached a final state. Stamped only when an order finishes — orders that expire, fail or refund never receive one.","uniqueKey":"orders.items.[INDEX].order.orderFinishedReceived","typeLabel":"string\u003cdate-time>"},"depositAddress":{"type":"string","description":"The deposit address where the user must send funds. Omitted on Split orders whose per-order setup did not complete.","uniqueKey":"orders.items.[INDEX].order.depositAddress","typeLabel":"string"}},"required":["houdiniId","expires","displayStatus","status","eta","inAmount","inSymbol","outAmount","outSymbol","inAmountUsd","outAmountUsd","inToken","outToken","receiverAddress","anonymous","isDex","actionRequired","inStatus","created","inCreated","notified","id"],"type":"object","additionalProperties":false,"uniqueKey":"orders.items.[INDEX].order","typeLabel":"object"},"error":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"orders.items.[INDEX].error.message","typeLabel":"string"},"code":{"oneOf":[{"type":"string","uniqueKey":"orders.items.[INDEX].error.code.oneOf.0","typeLabel":"string"},{"type":"number","format":"double","uniqueKey":"orders.items.[INDEX].error.code.oneOf.1","typeLabel":"number\u003cdouble>"}],"uniqueKey":"orders.items.[INDEX].error.code","typeLabel":"string | number\u003cdouble>"}},"required":["message"],"type":"object","additionalProperties":false,"uniqueKey":"orders.items.[INDEX].error","typeLabel":"object"}},"type":"object","additionalProperties":false,"uniqueKey":"orders.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"orders","typeLabel":"object[]"}},"required":["multiId","orders"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example 1":{"title":"Example 1","value":{"multiId":"8ppABEC1HZGrSr1PGbUnCN","orders":[{"order":{"created":"2026-09-24T09:45:09.594Z","houdiniId":"nkuYKXXrfzabgG4u3nZhpq","receiverAddress":"0x9f1f9a5c0f1d9a5c0f1d9a5c0f1d9a5c0f1d9a5c","status":-1,"anonymous":false,"expires":"2026-09-24T10:15:09.594Z","fixed":false,"inFixed":false,"inAmount":0.3,"inSymbol":"SOL","outSymbol":"ETH","multiId":"8ppABEC1HZGrSr1PGbUnCN","isDex":false,"id":"6ab4f12584e2f105f5a2fbbf","hashUrl":"","statusLabel":"NEW","displayStatus":"WAITING_FOR_DEPOSIT"}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"b4d1bf92-be7f-4aea-96af-9347544ed077":{"description":"Credentials missing, malformed, or rejected — all return `INVALID_API_CREDENTIALS`. Sending only `partner-id` returns `PARTNER_ID_NOT_SUPPORTED`.","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the failure. Branch on this, not on `message` — messages are free to change.\n\nThe value depends on the HTTP status. The common ones:\n\n- `400` — `BAD_REQUEST`\n- `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`\n- `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`\n- `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`\n- `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`\n- `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`, `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems\n- `429` — `RATE_LIMIT_EXCEEDED`\n- `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`, `SERVICE_UNAVAILABLE`\n\nNew codes are added over time, so treat this as an open set: match the ones you handle and fall back to the HTTP status for the rest.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Unique id for this request. Quote it when contacting support — it is how we find the failure in our logs.","uniqueKey":"requestId","typeLabel":"string"}},"required":["message","code"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"eac1fef7-f406-40d8-9bc4-915ef7370c21":{"description":"Payment required — x402 protocol. The body is empty; what to pay is in the `payment-required` header. Not returned when you send an `Authorization` header.","content":{"application/json":{"schema":{"description":"Body of a `402 Payment required`. Empty — `{}` — for API clients; a request that looks like a browser gets an HTML paywall page instead.\n\nThis is the x402 payment protocol, not the normal error format, so there is no `code` or `message` to branch on. What to pay is always in the `payment-required` response header, in both cases: base64-encoded JSON whose `accepts[]` entries each carry the `network`, the `asset` to pay in, the `amount`, and the `payTo` address, alongside `maxTimeoutSeconds` and the x402 `scheme`.\n\nSending `Authorization` skips the payment flow, so a 402 only reaches callers paying per request. An `apiKey` query param also skips it but is not a credential — those requests fail with `401 INVALID_API_CREDENTIALS`.","properties":{},"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"headers":{"payment-required":{"schema":{"type":"string"},"required":true}},"exampleType":"generated"},"03a89f63-24b7-4e39-97de-6c9cbddd1fff":{"description":"Access Denied","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the failure. Branch on this, not on `message` — messages are free to change.\n\nThe value depends on the HTTP status. The common ones:\n\n- `400` — `BAD_REQUEST`\n- `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`\n- `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`\n- `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`\n- `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`\n- `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`, `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems\n- `429` — `RATE_LIMIT_EXCEEDED`\n- `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`, `SERVICE_UNAVAILABLE`\n\nNew codes are added over time, so treat this as an open set: match the ones you handle and fall back to the HTTP status for the rest.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Unique id for this request. Quote it when contacting support — it is how we find the failure in our logs.","uniqueKey":"requestId","typeLabel":"string"}},"required":["message","code"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"26b49d15-fe8f-4ff9-b94a-bf01e53faa80":{"description":"Token not found or disabled","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the failure. Branch on this, not on `message` — messages are free to change.\n\nThe value depends on the HTTP status. The common ones:\n\n- `400` — `BAD_REQUEST`\n- `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`\n- `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`\n- `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`\n- `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`\n- `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`, `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems\n- `429` — `RATE_LIMIT_EXCEEDED`\n- `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`, `SERVICE_UNAVAILABLE`\n\nNew codes are added over time, so treat this as an open set: match the ones you handle and fall back to the HTTP status for the rest.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Unique id for this request. Quote it when contacting support — it is how we find the failure in our logs.","uniqueKey":"requestId","typeLabel":"string"}},"required":["message","code"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"eb5481cb-390b-4ee1-9143-fa8d6fced33a":{"description":"Every order failed and the first failure was a deposit address still held by another order (`STATIC_DEPOSIT_IN_USE`). Retry after the number of seconds in the `Retry-After` header.","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the failure. Branch on this, not on `message` — messages are free to change.\n\nThe value depends on the HTTP status. The common ones:\n\n- `400` — `BAD_REQUEST`\n- `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`\n- `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`\n- `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`\n- `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`\n- `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`, `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems\n- `429` — `RATE_LIMIT_EXCEEDED`\n- `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`, `SERVICE_UNAVAILABLE`\n\nNew codes are added over time, so treat this as an open set: match the ones you handle and fall back to the HTTP status for the rest.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Unique id for this request. Quote it when contacting support — it is how we find the failure in our logs.","uniqueKey":"requestId","typeLabel":"string"}},"required":["message","code"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"headers":{"Retry-After":{"schema":{"type":"string"},"required":true}},"exampleType":"generated"},"2a3743c8-428d-49ac-9274-24f51e2a4aeb":{"description":"Validation Failed","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the failure. Branch on this, not on `message` — messages are free to change.\n\nThe value depends on the HTTP status. The common ones:\n\n- `400` — `BAD_REQUEST`\n- `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`\n- `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`\n- `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`\n- `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`\n- `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`, `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems\n- `429` — `RATE_LIMIT_EXCEEDED`\n- `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`, `SERVICE_UNAVAILABLE`\n\nNew codes are added over time, so treat this as an open set: match the ones you handle and fall back to the HTTP status for the rest.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"fields":{"properties":{},"type":"object","additionalProperties":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"fields.additionalProperties.message","typeLabel":"string"},"value":{"oneOf":[{}],"uniqueKey":"fields.additionalProperties.value","typeLabel":"any"}},"required":["message"],"type":"object","uniqueKey":"fields.additionalProperties","typeLabel":"object"},"description":"The inputs that failed, keyed by field name — or by path for a nested field, e.g. `filters.rotatePayoutWallets`. Each entry has a `message` and, when you sent one, the `value`.\n\nNot every `422` names its input, so `fields` can be `{}`: branch on `code`, and use `fields` to highlight the input when one is named.","isRequired":true,"uniqueKey":"fields","typeLabel":"object"},"requestId":{"type":"string","description":"Unique id for this request. Quote it when contacting support — it is how we find the failure in our logs.","uniqueKey":"requestId","typeLabel":"string"}},"required":["message","code","fields"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","fields":{},"requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"14f15d8e-31c4-4c9b-8650-376d38e7c4b2":{"description":"Rate limit exceeded — back off and retry","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the failure. Branch on this, not on `message` — messages are free to change.\n\nThe value depends on the HTTP status. The common ones:\n\n- `400` — `BAD_REQUEST`\n- `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`\n- `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`\n- `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`\n- `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`\n- `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`, `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems\n- `429` — `RATE_LIMIT_EXCEEDED`\n- `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`, `SERVICE_UNAVAILABLE`\n\nNew codes are added over time, so treat this as an open set: match the ones you handle and fall back to the HTTP status for the rest.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Unique id for this request. Quote it when contacting support — it is how we find the failure in our logs.","uniqueKey":"requestId","typeLabel":"string"}},"required":["message","code"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"670eb7e9-1676-419c-a6bd-f7c29485e96d":{"description":"Internal Server Error","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the failure. Branch on this, not on `message` — messages are free to change.\n\nThe value depends on the HTTP status. The common ones:\n\n- `400` — `BAD_REQUEST`\n- `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`\n- `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`\n- `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`\n- `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`\n- `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`, `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems\n- `429` — `RATE_LIMIT_EXCEEDED`\n- `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`, `SERVICE_UNAVAILABLE`\n\nNew codes are added over time, so treat this as an open set: match the ones you handle and fall back to the HTTP status for the rest.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Unique id for this request. Quote it when contacting support — it is how we find the failure in our logs.","uniqueKey":"requestId","typeLabel":"string"}},"required":["message","code"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"9f176615-8f53-4a4b-940d-29a2af468db8":{"description":"Every order failed and the first failure was a provider rejection (`SWAP_PROVIDER_REJECTED_QUOTE`, `ANON_SWAP_PROVIDER_REJECTED_QUOTE`, `PROVIDER_EXCHANGE_FAILED`).","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the failure. Branch on this, not on `message` — messages are free to change.\n\nThe value depends on the HTTP status. The common ones:\n\n- `400` — `BAD_REQUEST`\n- `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`\n- `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`\n- `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`\n- `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`\n- `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`, `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems\n- `429` — `RATE_LIMIT_EXCEEDED`\n- `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`, `SERVICE_UNAVAILABLE`\n\nNew codes are added over time, so treat this as an open set: match the ones you handle and fall back to the HTTP status for the rest.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Unique id for this request. Quote it when contacting support — it is how we find the failure in our logs.","uniqueKey":"requestId","typeLabel":"string"}},"required":["message","code"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"51b16da7-9dab-4fbc-8a54-4525ee6c2933":{"description":"Every order failed and the first failure was that no provider could take the order right now (`PRICE_QUOTES_NOT_RETRIEVED`), or private swaps are disabled (`ANONYMOUS_DISABLED`). Retry shortly.","content":{"application/json":{"schema":{"properties":{"message":{"type":"string","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"code":{"type":"string","description":"Machine-readable reason for the failure. Branch on this, not on `message` — messages are free to change.\n\nThe value depends on the HTTP status. The common ones:\n\n- `400` — `BAD_REQUEST`\n- `401` — `INVALID_API_CREDENTIALS`, `PARTNER_ID_NOT_SUPPORTED`\n- `403` — `ACCESS_DENIED`, `FIXED_RATE_NOT_ALLOWED`\n- `404` — `NOT_FOUND`, `TOKEN_NOT_FOUND`, `TOKEN_DISABLED`\n- `409` — `ALREADY_SUBMITTED`, `STATIC_DEPOSIT_IN_USE`\n- `422` — `VALIDATION_ERROR`, `AMOUNT_TOO_LOW`, `INVALID_SWAP`, `FIXED_RATE_QUOTE_EXPIRED`, and most other request problems\n- `429` — `RATE_LIMIT_EXCEEDED`\n- `5xx` — `INTERNAL_SERVER_ERROR`, `PROVIDER_EXCHANGE_FAILED`, `SERVICE_UNAVAILABLE`\n\nNew codes are added over time, so treat this as an open set: match the ones you handle and fall back to the HTTP status for the rest.","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"requestId":{"type":"string","description":"Unique id for this request. Quote it when contacting support — it is how we find the failure in our logs.","uniqueKey":"requestId","typeLabel":"string"}},"required":["message","code"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"\u003cstring>","code":"\u003cstring>","requestId":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"4ea850bf-8aa7-4ce6-9934-802acdb179a3":{"apiKey":{"type":"apiKey","name":"Authorization","in":"header","description":"Send `Authorization: \u003cApiKey>:\u003cApiSecret>` — joined by a colon, raw. No `Bearer` prefix, no base64.\n\n[Get your credentials](https://docs.houdini.com/developer-hub/getting-started/authentication)","scopes":[],"schemeName":"apiKey"}}},"servers":{"8dcc9605-3ae8-4724-b409-35be2c99d96f":{"url":"https://api-partner.houdiniswap.com/v2"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","name":"Authorization","in":"header","description":"Send `Authorization: \u003cApiKey>:\u003cApiSecret>` — joined by a colon, raw. No `Bearer` prefix, no base64.\n\n[Get your credentials](https://docs.houdini.com/developer-hub/getting-started/authentication)","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Authorization","type":"string","description":"Send `Authorization: \u003cApiKey>:\u003cApiSecret>` — joined by a colon, raw. No `Bearer` prefix, no base64.\n\n[Get your credentials](https://docs.houdini.com/developer-hub/getting-started/authentication)","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"https://api-partner.houdiniswap.com/v2/openapi.json"},"subdomain":"houdini","siteName":"Houdini documentation","title":"Create split - Houdini documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-10T13:16:16.556Z","originalFileLocation":"api-reference/split/create-split.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=\"dark\"}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=\"Creates a group of swaps that share one multiId. Post the orders straight here — there is no quote step and no quoteId. - routes are chosen for you, per order - Get split quotes is optional, for showing rates first - each swap starts at status NEW and is prepared in the background - poll Get batch status for deposit addresses - fixed: true uses a fixed rate and needs a refundAddress. To pay the receiver an exact amount, also set amountType: \u0026quot;receive\u0026quot;. Read the final inAmount and outAmount from batch status, once the order has a depositAddress. See the Split flow for the full sequence.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Houdini documentation\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/houdini/yzTfSRPGdvC9032C/_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/houdini/yzTfSRPGdvC9032C/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/houdini/yzTfSRPGdvC9032C/_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/houdini/yzTfSRPGdvC9032C/_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/houdini/yzTfSRPGdvC9032C/_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/houdini/yzTfSRPGdvC9032C/_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/houdini/yzTfSRPGdvC9032C/_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/houdini/yzTfSRPGdvC9032C/_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/houdini/yzTfSRPGdvC9032C/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create split - Houdini documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Creates a group of swaps that share one multiId. Post the orders straight here — there is no quote step and no quoteId. - routes are chosen for you, per order - Get split quotes is optional, for showing rates first - each swap starts at status NEW and is prepared in the background - poll Get batch status for deposit addresses - fixed: true uses a fixed rate and needs a refundAddress. To pay the receiver an exact amount, also set amountType: \u0026quot;receive\u0026quot;. Read the final inAmount and outAmount from batch status, once the order has a depositAddress. See the Split flow for the full sequence.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Houdini documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.houdiniswap.com/api-reference/split/create-split\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://houdini.mintlify.site/_mintlify/api/og/v2?division=Split\u0026amp;title=Create+split\u0026amp;description=Creates+a+group+of+swaps+that+share+one+%60multiId%60.+Post+the+orders+straight+here+%E2%80%94+there+is+no+quote+step+and+no+%60quoteId%60.%0A%0A-+routes+are+chosen+for+you%2C+per+or\u0026amp;theme=2643e2ea85b69ef20e2a5e32\u0026amp;signature=5b9749ee97d4354ab333ac54ed19516ae9dbb6d39ed40a37122c897c7f491976\">\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=\"Create split - Houdini documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Creates a group of swaps that share one multiId. Post the orders straight here — there is no quote step and no quoteId. - routes are chosen for you, per order - Get split quotes is optional, for showing rates first - each swap starts at status NEW and is prepared in the background - poll Get batch status for deposit addresses - fixed: true uses a fixed rate and needs a refundAddress. To pay the receiver an exact amount, also set amountType: \u0026quot;receive\u0026quot;. Read the final inAmount and outAmount from batch status, once the order has a depositAddress. See the Split flow for the full sequence.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://houdini.mintlify.site/_mintlify/api/og/v2?division=Split\u0026amp;title=Create+split\u0026amp;description=Creates+a+group+of+swaps+that+share+one+%60multiId%60.+Post+the+orders+straight+here+%E2%80%94+there+is+no+quote+step+and+no+%60quoteId%60.%0A%0A-+routes+are+chosen+for+you%2C+per+or\u0026amp;theme=2643e2ea85b69ef20e2a5e32\u0026amp;signature=5b9749ee97d4354ab333ac54ed19516ae9dbb6d39ed40a37122c897c7f491976\">\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/houdini/yzTfSRPGdvC9032C/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Houdini documentation\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#864DE2\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.houdiniswap.com/api-reference/split/create-split\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/split/create-split.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.houdiniswap.com/#organization\",\"name\":\"Houdini documentation\",\"url\":\"https://docs.houdiniswap.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/houdini/1qxWMAnpbp51-Yh3/logo/wordmark-black.svg?fit=max\u0026auto=format\u0026n=1qxWMAnpbp51-Yh3\u0026q=85\u0026s=835e11b4170923b979bdf1ba4cb302b8\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.houdiniswap.com#website\",\"name\":\"Houdini documentation\",\"url\":\"https://docs.houdiniswap.com\",\"publisher\":{\"@id\":\"https://docs.houdiniswap.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.houdiniswap.com/api-reference/split/create-split#webpage\",\"url\":\"https://docs.houdiniswap.com/api-reference/split/create-split\",\"name\":\"Create split\",\"description\":\"Creates a group of swaps that share one multiId. Post the orders straight here — there is no quote step and no quoteId. - routes are chosen for you, per order - Get split quotes is optional, for showing rates first - each swap starts at status NEW and is prepared in the background - poll Get batch status for deposit addresses - fixed: true uses a fixed rate and needs a refundAddress. To pay the receiver an exact amount, also set amountType: \\\"receive\\\". Read the final inAmount and outAmount from batch status, once the order has a depositAddress. See the Split flow for the full sequence.\",\"dateModified\":\"2026-11-10T13:16:16.556Z\",\"isPartOf\":{\"@id\":\"https://docs.houdiniswap.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.houdiniswap.com/api-reference/split/create-split#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.houdiniswap.com/api-reference/split/create-split#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Split\",\"item\":\"https://docs.houdiniswap.com/api-reference/split/get-tokens\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create split\",\"item\":\"https://docs.houdiniswap.com/api-reference/split/create-split\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.houdiniswap.com/api-reference/split/create-split#apireference\",\"headline\":\"Create split\",\"name\":\"Create split\",\"description\":\"Creates a group of swaps that share one multiId. Post the orders straight here — there is no quote step and no quoteId. - routes are chosen for you, per order - Get split quotes is optional, for showing rates first - each swap starts at status NEW and is prepared in the background - poll Get batch status for deposit addresses - fixed: true uses a fixed rate and needs a refundAddress. To pay the receiver an exact amount, also set amountType: \\\"receive\\\". Read the final inAmount and outAmount from batch status, once the order has a depositAddress. See the Split flow for the full sequence.\",\"url\":\"https://docs.houdiniswap.com/api-reference/split/create-split\",\"mainEntityOfPage\":{\"@id\":\"https://docs.houdiniswap.com/api-reference/split/create-split#webpage\"},\"dateModified\":\"2026-11-10T13:16:16.556Z\",\"publisher\":{\"@id\":\"https://docs.houdiniswap.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.houdiniswap.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Houdini documentation\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Houdini documentation","nav":{"global":null,"tabs":[{"tab":"Overview","pages":[{"title":"Overview","href":"/overview/getting-started/what-is-houdini"}]},{"tab":"Guides","hidden":true,"pages":[{"title":"Guides","href":"/guides/how-to/private-swap"}]},{"tab":"Developer Hub","pages":[{"title":"Developer Hub","href":"/developer-hub/overview/what-you-can-build"}]},{"tab":"API V2 Reference ","icon":"folder-gear","groups":[{"group":"Private and Standard Swaps","pages":[{"title":"Get tokens","openapi":"GET /tokens","href":"/api-reference/private-and-standard-swaps/get-tokens"},{"title":"Get quotes","openapi":"GET /quotes","href":"/api-reference/private-and-standard-swaps/get-quotes"},{"title":"Get quotes by token address","openapi":"GET /quotes/byChainAddress","href":"/api-reference/private-and-standard-swaps/get-quotes-by-token-address"},{"title":"Create exchange","openapi":"POST /exchanges","href":"/api-reference/private-and-standard-swaps/create-exchange"},{"title":"Get order details","openapi":"GET /orders/{houdiniId}","href":"/api-reference/private-and-standard-swaps/get-order-details"}]},{"group":"Private Send","pages":[{"title":"Get tokens","openapi":"GET /tokens","href":"/api-reference/private-send/get-tokens"},{"title":"Get private send quote","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /quotes/private-send","href":"/api-reference/private-send/get-private-send-quote"},{"title":"Create private send order","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /exchanges/private-send","href":"/api-reference/private-send/create-private-send-order"},{"title":"Get order details","openapi":"GET /orders/{houdiniId}","href":"/api-reference/private-send/get-order-details"}]},{"group":"Split","pages":[{"title":"Get tokens","openapi":"GET /tokens","href":"/api-reference/split/get-tokens"},{"title":"Get split quotes","description":"Returns the available routes for each swap in a batch.\n\nOptional. [Create split](/api-reference/split/create-split) picks its own routes and takes no `quoteId`, so call this only when you want to show rates before committing.\n\n- standard and private CEX only — no DEX\n- `mode=single` quotes just the first swap, as a faster preview\n- set `fixed: true` on a swap to preview fixed rates for it\n- set `amountType: \"receive\"` (with `fixed: true`) to quote the deposit for an exact payout\n\nBeta — the response shape may still change.","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /quotes/multi","href":"/api-reference/split/get-split-quotes"},{"title":"Create split","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /exchanges/multi","href":"/api-reference/split/create-split"},{"title":"Get batch status","description":"Returns the status of all orders belonging to a Split group.","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /exchanges/multi/{multiId}","href":"/api-reference/split/get-batch-status"},{"group":"Bundler SOL","pages":[{"title":"Get batch transaction","openapi":"GET /exchanges/multi/{multiId}/tx","href":"/api-reference/bundler-sol/get-batch-transaction"}]},{"group":"Bundler EVM","pages":[{"title":"Build batch transaction","openapi":"POST /exchanges/multi/{multiId}/tx/build","href":"/api-reference/bundler-evm/build-batch-transaction"},{"title":"Submit signed transaction","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /exchanges/multi/{multiId}/tx","href":"/api-reference/bundler-evm/submit-signed-transaction"},{"title":"Retry failed orders","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /exchanges/multi/{multiId}/retry","href":"/api-reference/bundler-evm/retry-failed-orders"},{"title":"Recover stuck assets","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /exchanges/multi/recovery","href":"/api-reference/bundler-evm/recover-stuck-assets"}]}]},{"group":"On-chain DEX or Bridge","pages":[{"title":"Get tokens","openapi":"GET /tokens","href":"/api-reference/on-chain-dex-or-bridge/get-tokens"},{"title":"Get quotes","openapi":"GET /quotes","href":"/api-reference/on-chain-dex-or-bridge/get-quotes"},{"title":"Get quotes by token address","openapi":"GET /quotes/byChainAddress","href":"/api-reference/on-chain-dex-or-bridge/get-quotes-by-token-address"},{"title":"Create exchange","openapi":"POST /exchanges","href":"/api-reference/on-chain-dex-or-bridge/create-exchange"},{"title":"Get token approval data","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /dex/approve","href":"/api-reference/on-chain-dex-or-bridge/get-token-approval-data"},{"title":"Check token allowance","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /dex/allowance","href":"/api-reference/on-chain-dex-or-bridge/check-token-allowance"},{"title":"Get next chain signature","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /dex/chainSignatures","href":"/api-reference/on-chain-dex-or-bridge/get-next-chain-signature"},{"title":"Confirm DEX transaction","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json post /dex/confirmTx","href":"/api-reference/on-chain-dex-or-bridge/confirm-dex-transaction"},{"title":"Get order details","openapi":"GET /orders/{houdiniId}","href":"/api-reference/on-chain-dex-or-bridge/get-order-details"}]},{"group":"Reference Data","pages":[{"title":"Get token by ID","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /tokens/{id}","href":"/api-reference/reference-data/get-token-by-id"},{"title":"Get chains","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /chains","href":"/api-reference/reference-data/get-chains"},{"title":"Get swap providers","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /swaps","href":"/api-reference/reference-data/get-swap-providers"},{"title":"Get min and max amounts","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /minMax","href":"/api-reference/reference-data/get-min-and-max-amounts"}]},{"group":"Partner Account","pages":[{"title":"Get orders","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /orders","href":"/api-reference/partner-account/get-orders"},{"title":"Get partner profile","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /me","href":"/api-reference/partner-account/get-partner-profile"},{"title":"Get rate limits","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /rateLimits","href":"/api-reference/partner-account/get-rate-limits"},{"title":"Get commissions","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /commissions","href":"/api-reference/partner-account/get-commissions"},{"title":"Get commission summary","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /commissions/summary","href":"/api-reference/partner-account/get-commission-summary"},{"title":"Get withdrawals","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /withdrawals","href":"/api-reference/partner-account/get-withdrawals"},{"title":"Get volume stats","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /stats/volume","href":"/api-reference/partner-account/get-volume-stats"},{"title":"Get weekly volume","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /stats/weeklyVolume","href":"/api-reference/partner-account/get-weekly-volume"},{"title":"Get chart stats","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /stats/chart","href":"/api-reference/partner-account/get-chart-stats"}]},{"group":"System","pages":[{"title":"Get system health","deprecated":null,"version":null,"openapi":"https://api-partner.houdiniswap.com/v2/openapi.json get /status","href":"/api-reference/system/get-system-health"}]}]},{"tab":"API v1","hidden":true,"pages":[{"title":"API v1","href":"/migration/v1-to-v2"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/release-notes"}]},{"tab":"Support \u0026 FAQs","pages":[{"title":"Support \u0026 FAQs","href":"/support-and-faqs/faqs"}]}]},"basePath":"","title":"Create split - Houdini documentation","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C-hEh3I2.js","utils-CnF4QiUD.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-C7PVNbel.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-8ytevL2A.js","snippetPresets-BT1alx3v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BLXC0i_W.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CyLIGI9_.js","shallow-DC0lGVIW.js","getApiPlaygroundDisplay-CgDQ85tN.js","CodeSnippet-6-I-Gpv9.js","CodeSnippets-BAk1kDdu.js","Page-C945cI-W.js","getPastedJson-B276RuWN.js","icon-BqP8etTm.js","MethodPill-DM6sbxG1.js","DuplicateIcon-PyJglOaE.js","createIcon-CMeOMAc_.js","DynamicMarkdown-BoyYAA8K.js","SectionHeading-DAYv3gvZ.js","axios-vUo_bRtp.js","Markdown-BhTTmazV.js","clsx-CR-RHrVC.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CBUH0-zX.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BmARFYNC.js"]}