Solana has more than one transaction format. Use txVersion to choose which one you get back. If you are not sure, leave it out and you get legacy.
txVersion
Deposits per transaction
Who can sign it
legacy (default)
up to 20 in SOL, 10 in a token
every Solana wallet and library
v0
up to 20 in SOL, 10 in a token
most wallets, and libraries that support versioned transactions
v1
up to 60 in SOL, 10 in a token
only some wallets so far. In code, @solana/kit 8.0 or later
Why use v1? Each transaction pays 3 times more SOL deposits, so the user signs fewer times. For example, 50 SOL deposits take 3 transactions with legacy but only 1 with v1. Token batches stay at 10 in every format: creating the receiving token accounts hits a Solana limit before the size limit does.When not to use v1: if the wallet or library that signs does not support it, signing fails. @solana/web3.js 1.x can read a v1 transaction but cannot sign it.To check support, see Solana’s Larger Transaction Sizes guide:
Libraries — the “Support for V1 Transactions” table lists the minimum version of each Solana library
Wallets — a wallet that can sign v1 lists 1 in its supportedTransactionVersions. Check it before you request txVersion=v1
The response’s txVersion field tells you which format you got.
legacy — decode with Transaction.from(Buffer.from(txData.data, "base64")) from @solana/web3.js
v0 — decode with VersionedTransaction.deserialize(Buffer.from(txData.data, "base64")) from @solana/web3.js
v1 — decode and sign with a library that supports v1, then send with encoding: "base64". A v1 transaction can be larger than 1232 bytes, and base58 encoding cannot carry it. See Solana’s Larger Transaction Sizes guide for examples
Transaction format to build. If you are not sure, leave it out.
legacy (default): works with every Solana wallet
v0: same capacity as legacy. Use it if your code expects a versioned transaction
v1: fits 3 times more SOL deposits in one transaction, so the user signs fewer times. Token batches stay the same size. Use it only if the wallet or library that signs supports v1. See Choosing a transaction format
Native coin the smart account holds right now, in wei. The account is owned by the sender wallet, so this balance stays under the user's control.
{"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/XK0rhkSzA66TLGwZ/images/newhoudinilogo.svg?fit=max\u0026auto=format\u0026n=XK0rhkSzA66TLGwZ\u0026q=85\u0026s=e7ce62c2ee9963c727689d1c1e30e048","dark":"https://mintcdn.com/houdini/XK0rhkSzA66TLGwZ/images/Group496.svg?fit=max\u0026auto=format\u0026n=XK0rhkSzA66TLGwZ\u0026q=85\u0026s=03e691bcd3c6b2b64e3db0526279e52d"},"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.houdini.com"],"gitSource":{"type":"github","owner":"houdiniswap","repo":"docs-v2","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6af461adbf7f51e9bf6bc4f7","clientVersion":"0.0.4102","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/bundler-sol/get-batch-transaction","slug":"/api-reference/bundler-sol/get-batch-transaction","pageMetadata":{"title":"Get batch transaction","description":"Returns the Solana transactions that pay every deposit address in the group.","openapi":"GET /exchanges/multi/{multiId}/tx","href":"/api-reference/bundler-sol/get-batch-transaction"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Returns the Solana transactions that pay every deposit address in the group.\"\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,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Table}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`every order must send the `,_jsx(_components.strong,{children:`same token`}),` — all native SOL, or all the same SPL token. Mixing SOL with an SPL token is rejected`]}),`\n`,_jsx(_components.li,{children:`sign the returned transactions and broadcast them yourself. Nothing to submit back`}),`\n`,_jsxs(_components.li,{children:[`large groups come back as several transactions, so handle every entry in `,_jsx(_components.code,{children:`transactions`})]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Find batchable tokens with `,_jsx(_components.a,{href:`/api-reference/split/get-tokens`,children:`Get tokens`}),` and `,_jsx(_components.code,{children:`hasBundler=true`}),`. See the `,_jsx(_components.a,{href:`/developer-hub/swap-flows/split`,children:`Split flow`}),` for the full sequence.`]}),`\n`,_jsx(Heading,{level:`2`,id:`choosing-a-transaction-format`,children:`Choosing a transaction format`}),`\n`,_jsxs(_components.p,{children:[`Solana has more than one transaction format. Use `,_jsx(_components.code,{children:`txVersion`}),` to choose which one you get back. If you are not sure, leave it out and you get `,_jsx(_components.code,{children:`legacy`}),`.`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:_jsx(_components.code,{children:`txVersion`})}),_jsx(_components.th,{children:`Deposits per transaction`}),_jsx(_components.th,{children:`Who can sign it`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`legacy`}),` (default)`]}),_jsx(_components.td,{children:`up to 20 in SOL, 10 in a token`}),_jsx(_components.td,{children:`every Solana wallet and library`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`v0`})}),_jsx(_components.td,{children:`up to 20 in SOL, 10 in a token`}),_jsx(_components.td,{children:`most wallets, and libraries that support versioned transactions`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,children:_jsx(_components.code,{children:`v1`})}),_jsx(_components.td,{children:`up to 60 in SOL, 10 in a token`}),_jsxs(_components.td,{children:[`only some wallets so far. In code, `,_jsx(_components.code,{children:`@solana/kit`}),` 8.0 or later`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`Why use `,_jsx(_components.code,{children:`v1`}),`?`]}),` Each transaction pays 3 times more SOL deposits, so the user signs fewer times. For example, 50 SOL deposits take 3 transactions with `,_jsx(_components.code,{children:`legacy`}),` but only 1 with `,_jsx(_components.code,{children:`v1`}),`. Token batches stay at 10 in every format: creating the receiving token accounts hits a Solana limit before the size limit does.`]}),`\n`,_jsxs(_components.p,{children:[_jsxs(_components.strong,{children:[`When not to use `,_jsx(_components.code,{children:`v1`}),`:`]}),` if the wallet or library that signs does not support it, signing fails. `,_jsx(_components.code,{children:`@solana/web3.js`}),` 1.x can read a `,_jsx(_components.code,{children:`v1`}),` transaction but cannot sign it.`]}),`\n`,_jsxs(_components.p,{children:[`To check support, see Solana’s `,_jsx(_components.a,{href:`https://solana.com/upgrades/larger-transaction-sizes`,children:`Larger Transaction Sizes`}),` guide:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Libraries`}),` — the “Support for V1 Transactions” table lists the minimum version of each Solana library`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Wallets`}),` — a wallet that can sign `,_jsx(_components.code,{children:`v1`}),` lists `,_jsx(_components.code,{children:`1`}),` in its `,_jsx(_components.code,{children:`supportedTransactionVersions`}),`. Check it before you request `,_jsx(_components.code,{children:`txVersion=v1`})]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`The response’s `,_jsx(_components.code,{children:`txVersion`}),` field tells you which format you got.`]}),`\n`,_jsx(Heading,{level:`3`,id:`signing-and-sending`,children:`Signing and sending`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`legacy`})}),` — decode with `,_jsx(_components.code,{children:`Transaction.from(Buffer.from(txData.data, \"base64\"))`}),` from `,_jsx(_components.code,{children:`@solana/web3.js`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`v0`})}),` — decode with `,_jsx(_components.code,{children:`VersionedTransaction.deserialize(Buffer.from(txData.data, \"base64\"))`}),` from `,_jsx(_components.code,{children:`@solana/web3.js`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`v1`})}),` — decode and sign with a library that supports `,_jsx(_components.code,{children:`v1`}),`, then send with `,_jsx(_components.code,{children:`encoding: \"base64\"`}),`. A `,_jsx(_components.code,{children:`v1`}),` transaction can be larger than 1232 bytes, and base58 encoding cannot carry it. See Solana’s `,_jsx(_components.a,{href:`https://solana.com/upgrades/larger-transaction-sizes`,children:`Larger Transaction Sizes`}),` guide for examples`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get batch transaction","description":"Returns the Solana transactions that pay every deposit address in the group.","openapi":"GET /exchanges/multi/{multiId}/tx","href":"/api-reference/bundler-sol/get-batch-transaction"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Choosing a transaction format","slug":"choosing-a-transaction-format","depth":2,"children":[{"title":"Signing and sending","slug":"signing-and-sending","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"operationId":"GetMultiExchangeTxData","responses":{"200":"b18add7b-233f-4d34-99bc-f502c363f721","401":"9f33f59d-750c-4d71-a94c-a92644d978a7","402":"11b4e2b2-34a9-4cd4-811c-2fdbc1a3ee77","403":"ee4a20f0-92b3-4c62-8529-23c6c7f75f9e","404":"1142b4c4-1e75-452b-a34a-0ed2e8907b7d","422":"4a082973-af61-4e6c-bfc5-93ac6c4eda1b","429":"d2a07c36-0d4f-4075-b079-fd0fed0ebf39","500":"c88ae8e8-7b0f-4f53-a83a-0901efe7721e"},"description":"Returns the Solana transactions that pay every deposit address in the group.","summary":"Get batch transaction","tags":["Bundler SOL"],"security":["3667f332-bb47-4a98-bf0f-83d40fddea99"],"parameters":["a910cad1-fdac-4f7e-92cf-88de34d6fe14","cd2cfe95-9371-4eb3-9e6a-be17faa5faa8","619dddfb-c0cd-4b96-a5d5-0d115dd74ee3","3fb1e8ac-8941-4204-b04c-b8c62bad18bf"],"method":"get","type":"path","servers":["8dcc9605-3ae8-4724-b409-35be2c99d96f"],"path":"/exchanges/multi/{multiId}/tx","baseUrlOptions":["https://api-partner.houdiniswap.com/v2"],"title":"Get batch transaction","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"a910cad1-fdac-4f7e-92cf-88de34d6fe14":{"description":"The Split group ID","in":"path","name":"multiId","required":true,"schema":{"type":"string","maxLength":64,"isRequired":true,"description":"The Split group ID","uniqueKey":"","typeLabel":"string"},"example":"mx8Qa1"},"cd2cfe95-9371-4eb3-9e6a-be17faa5faa8":{"description":"Wallet address that will sign and fund the transaction(s)","in":"query","name":"sender","required":true,"schema":{"type":"string","minLength":1,"isRequired":true,"description":"Wallet address that will sign and fund the transaction(s)","uniqueKey":"","typeLabel":"string"},"example":"8jZnXYnZB1MJQG6zBXyouzcycsaPTrZtPXPHDNifjYaC"},"619dddfb-c0cd-4b96-a5d5-0d115dd74ee3":{"in":"query","name":"houdiniIds","required":false,"schema":{"type":"string","isRequired":false,"uniqueKey":"","typeLabel":"string"}},"3fb1e8ac-8941-4204-b04c-b8c62bad18bf":{"description":"Transaction format to build. If you are not sure, leave it out.\n- `legacy` (default): works with every Solana wallet\n- `v0`: same capacity as `legacy`. Use it if your code expects a versioned transaction\n- `v1`: fits 3 times more SOL deposits in one transaction, so the user signs fewer times. Token batches stay the same size. Use it only if the wallet or library that signs supports v1. See [Choosing a transaction format](/api-reference/bundler-sol/get-batch-transaction#choosing-a-transaction-format)","in":"query","name":"txVersion","required":false,"schema":{"enum":["legacy","v0","v1"],"type":"string","isRequired":false,"description":"Transaction format to build. If you are not sure, leave it out.\n- `legacy` (default): works with every Solana wallet\n- `v0`: same capacity as `legacy`. Use it if your code expects a versioned transaction\n- `v1`: fits 3 times more SOL deposits in one transaction, so the user signs fewer times. Token batches stay the same size. Use it only if the wallet or library that signs supports v1. See [Choosing a transaction format](/api-reference/bundler-sol/get-batch-transaction#choosing-a-transaction-format)","uniqueKey":"","typeLabel":"enum\u003cstring>"}}},"responses":{"b18add7b-233f-4d34-99bc-f502c363f721":{"description":"Success","content":{"application/json":{"schema":{"properties":{"multiId":{"type":"string","description":"The group these transactions fund.","isRequired":true,"uniqueKey":"multiId","typeLabel":"string"},"chain":{"type":"string","description":"Chain kind of the from token (e.g. \"solana\", \"evm\")","isRequired":true,"uniqueKey":"chain","typeLabel":"string"},"transactions":{"items":{"properties":{"houdiniIds":{"items":{"type":"string","uniqueKey":"transactions.items.[INDEX].houdiniIds.items.[INDEX]","typeLabel":"string"},"type":"array","description":"HoudiniIds of the orders included in this batch","isRequired":true,"uniqueKey":"transactions.items.[INDEX].houdiniIds","typeLabel":"string[]"},"txData":{"oneOf":[{"type":"object","description":"Network-specific transaction data ready to broadcast","required":["userOpHash","to","data","value","chainId","tokenAmount"],"properties":{"userOpHash":{"type":"string","description":"The digest the user's wallet must sign, as 32 bytes of hex. Sign it as a message — `signMessage({ message: { raw: userOpHash } })` in viem, `signMessage(getBytes(userOpHash))` in ethers — then post the signature to [Submit signed transaction](/api-reference/bundler-evm/submit-signed-transaction).","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.0.userOpHash","typeLabel":"string"},"to":{"type":"string","description":"Where to send the funding transaction. It is **not** always the smart account:\n\n- ERC-20 source token — the token contract. The smart account is the recipient encoded inside `data`.\n- native source coin — the smart account itself.","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.0.to","typeLabel":"string"},"data":{"type":"string","description":"Calldata for the funding transaction. An ERC-20 `transfer` moving the tokens to the smart account, or `0x` when the source token is the chain's native coin.\n\nThe amount encoded here is the full balance the batch needs.","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.0.data","typeLabel":"string"},"value":{"type":"string","description":"Native coin to send with the transaction, in wei. Covers gas plus the swap amount when the source token is the native coin, and is `\"0\"` for ERC-20 sources.","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.0.value","typeLabel":"string"},"chainId":{"type":"number","format":"double","description":"EVM chain the batch runs on, e.g. `1` for Ethereum, `8453` for Base.","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.0.chainId","typeLabel":"number\u003cdouble>"},"tokenAmount":{"type":"string","description":"How much of the source token still has to reach the smart account, in the token's smallest unit. Already funded balance is deducted. `\"0\"` when the source token is the chain's native coin.","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.0.tokenAmount","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.0","typeLabel":"object"},{"type":"object","description":"Network-specific transaction data ready to broadcast","required":["data"],"properties":{"data":{"type":"string","description":"Serialized transaction bytes (base64)","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.1.data","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.1","typeLabel":"object"},{"type":"object","description":"Network-specific transaction data ready to broadcast","required":["userOp","userOpHash","chainId","entryPoint","to","smartAccountAddress","gasEstimate","data","value","tokenAmount"],"properties":{"userOp":{"description":"EntryPoint v0.7 unpacked UserOp. User pays gas from Smart Account balance — no paymaster.","properties":{"sender":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.sender","typeLabel":"string"},"nonce":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.nonce","typeLabel":"string"},"callData":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.callData","typeLabel":"string"},"callGasLimit":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.callGasLimit","typeLabel":"string"},"verificationGasLimit":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.verificationGasLimit","typeLabel":"string"},"preVerificationGas":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.preVerificationGas","typeLabel":"string"},"maxFeePerGas":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.maxFeePerGas","typeLabel":"string"},"maxPriorityFeePerGas":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.maxPriorityFeePerGas","typeLabel":"string"},"signature":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.signature","typeLabel":"string"},"factory":{"type":"string","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.factory","typeLabel":"string"},"factoryData":{"type":"string","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.factoryData","typeLabel":"string"},"paymaster":{"type":"string","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.paymaster","typeLabel":"string"},"paymasterData":{"type":"string","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.paymasterData","typeLabel":"string"},"paymasterVerificationGasLimit":{"type":"string","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.paymasterVerificationGasLimit","typeLabel":"string"},"paymasterPostOpGasLimit":{"type":"string","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp.paymasterPostOpGasLimit","typeLabel":"string"}},"required":["sender","nonce","callData","callGasLimit","verificationGasLimit","preVerificationGas","maxFeePerGas","maxPriorityFeePerGas","signature"],"type":"object","additionalProperties":false,"isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOp","typeLabel":"object"},"userOpHash":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.userOpHash","typeLabel":"string"},"chainId":{"type":"number","format":"double","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.chainId","typeLabel":"number\u003cdouble>"},"entryPoint":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.entryPoint","typeLabel":"string"},"to":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.to","typeLabel":"string"},"smartAccountAddress":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.smartAccountAddress","typeLabel":"string"},"gasEstimate":{"properties":{"gasCostWei":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate.gasCostWei","typeLabel":"string"},"gasCostNative":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate.gasCostNative","typeLabel":"string"},"nativeSymbol":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate.nativeSymbol","typeLabel":"string"},"totalTransferAmountWei":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate.totalTransferAmountWei","typeLabel":"string"},"requiredSmartAccountBalanceWei":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate.requiredSmartAccountBalanceWei","typeLabel":"string"},"gasCostToken":{"type":"string","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate.gasCostToken","typeLabel":"string"},"gasCostTokenDecimals":{"type":"number","format":"double","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate.gasCostTokenDecimals","typeLabel":"number\u003cdouble>"},"exchangeRate":{"type":"string","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate.exchangeRate","typeLabel":"string"},"paymasterStub":{"type":"boolean","uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate.paymasterStub","typeLabel":"boolean"}},"required":["gasCostWei","gasCostNative","nativeSymbol","totalTransferAmountWei","requiredSmartAccountBalanceWei"],"type":"object","additionalProperties":false,"isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.gasEstimate","typeLabel":"object"},"data":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.data","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.value","typeLabel":"string"},"tokenAmount":{"type":"string","isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2.tokenAmount","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"transactions.items.[INDEX].txData","typeLabel":"object"}},"required":["houdiniIds","txData"],"type":"object","additionalProperties":false,"uniqueKey":"transactions.items.[INDEX]","typeLabel":"object"},"type":"array","description":"One entry per batch. A group larger than the per-chain batch limit is divided across several.","isRequired":true,"uniqueKey":"transactions","typeLabel":"object[]"},"txVersion":{"enum":["legacy","v0","v1"],"type":"string","description":"Solana only. Format of every transaction in `transactions`. Matches the `txVersion` you requested, or `legacy` if you did not set one.","uniqueKey":"txVersion","typeLabel":"enum\u003cstring>"},"depositNeeded":{"type":"string","description":"Native coin the smart account still needs before you can submit, in wei. `\"0\"` means it is already funded.","uniqueKey":"depositNeeded","typeLabel":"string"},"saCurrentBalance":{"type":"string","description":"Native coin the smart account holds right now, in wei. The account is owned by the `sender` wallet, so this balance stays under the user's control.","uniqueKey":"saCurrentBalance","typeLabel":"string"}},"required":["multiId","chain","transactions"],"type":"object","additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example 1":{"title":"Example 1","value":{"multiId":"8ppABEC1HZGrSr1PGbUnCN","chain":"sol","txVersion":"legacy","transactions":[{"houdiniIds":["nkuYKXXrfzabgG4u3nZhpq","q2R66TDXHeHKb5kxEcAo9C"],"txData":{"data":"AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB..."}}]}}},"exampleType":"examples"}},"exampleType":"examples"},"9f33f59d-750c-4d71-a94c-a92644d978a7":{"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"},"11b4e2b2-34a9-4cd4-811c-2fdbc1a3ee77":{"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"},"ee4a20f0-92b3-4c62-8529-23c6c7f75f9e":{"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"},"1142b4c4-1e75-452b-a34a-0ed2e8907b7d":{"description":"Not found","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"},"4a082973-af61-4e6c-bfc5-93ac6c4eda1b":{"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"},"d2a07c36-0d4f-4075-b079-fd0fed0ebf39":{"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"},"c88ae8e8-7b0f-4f53-a83a-0901efe7721e":{"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"}},"security":{"3667f332-bb47-4a98-bf0f-83d40fddea99":{"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":"Get batch transaction - Houdini documentation","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-10T08:44:31.258Z","originalFileLocation":"api-reference/bundler-sol/get-batch-transaction.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=\"Returns the Solana transactions that pay every deposit address in the group.\">\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=\"Get batch transaction - Houdini documentation\">\u003cmeta data-mint-head property=\"og:description\" content=\"Returns the Solana transactions that pay every deposit address in the group.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Houdini documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.houdini.com/api-reference/bundler-sol/get-batch-transaction\">\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=Bundler+SOL\u0026amp;title=Get+batch+transaction\u0026amp;description=Returns+the+Solana+transactions+that+pay+every+deposit+address+in+the+group.\u0026amp;theme=86a65e009c286e14b5c98004\u0026amp;signature=1d0fefe083f1461bb1621a7bce18ef34926e100013f7f04f2d64f83a46162372\">\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=\"Get batch transaction - Houdini documentation\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Returns the Solana transactions that pay every deposit address in the group.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://houdini.mintlify.site/_mintlify/api/og/v2?division=Bundler+SOL\u0026amp;title=Get+batch+transaction\u0026amp;description=Returns+the+Solana+transactions+that+pay+every+deposit+address+in+the+group.\u0026amp;theme=86a65e009c286e14b5c98004\u0026amp;signature=1d0fefe083f1461bb1621a7bce18ef34926e100013f7f04f2d64f83a46162372\">\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.houdini.com/api-reference/bundler-sol/get-batch-transaction\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/bundler-sol/get-batch-transaction.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.houdini.com/#organization\",\"name\":\"Houdini documentation\",\"url\":\"https://docs.houdini.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/houdini/XK0rhkSzA66TLGwZ/images/newhoudinilogo.svg?fit=max\u0026auto=format\u0026n=XK0rhkSzA66TLGwZ\u0026q=85\u0026s=e7ce62c2ee9963c727689d1c1e30e048\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.houdini.com#website\",\"name\":\"Houdini documentation\",\"url\":\"https://docs.houdini.com\",\"publisher\":{\"@id\":\"https://docs.houdini.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.houdini.com/api-reference/bundler-sol/get-batch-transaction#webpage\",\"url\":\"https://docs.houdini.com/api-reference/bundler-sol/get-batch-transaction\",\"name\":\"Get batch transaction\",\"description\":\"Returns the Solana transactions that pay every deposit address in the group.\",\"dateModified\":\"2026-11-10T08:44:31.258Z\",\"isPartOf\":{\"@id\":\"https://docs.houdini.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.houdini.com/api-reference/bundler-sol/get-batch-transaction#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.houdini.com/api-reference/bundler-sol/get-batch-transaction#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Split\",\"item\":\"https://docs.houdini.com/api-reference/split/get-tokens\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Get batch transaction\",\"item\":\"https://docs.houdini.com/api-reference/bundler-sol/get-batch-transaction\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.houdini.com/api-reference/bundler-sol/get-batch-transaction#apireference\",\"headline\":\"Get batch transaction\",\"name\":\"Get batch transaction\",\"description\":\"Returns the Solana transactions that pay every deposit address in the group.\",\"url\":\"https://docs.houdini.com/api-reference/bundler-sol/get-batch-transaction\",\"mainEntityOfPage\":{\"@id\":\"https://docs.houdini.com/api-reference/bundler-sol/get-batch-transaction#webpage\"},\"dateModified\":\"2026-11-10T08:44:31.258Z\",\"publisher\":{\"@id\":\"https://docs.houdini.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.houdini.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Houdini documentation\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Houdini documentation\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/bundler-sol/get-batch-transaction.md","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","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","description":"Funds every order in a Split with one ERC-4337 UserOperation instead of paying each deposit address.","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":"Get batch transaction - Houdini documentation","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}