Combine multiple actions into a single atomic transaction.
Bundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together.
Example: Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction.
Fees: Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint.
Gas sponsorship: Set gas_sponsorship=true to receive EIP-712 typed data. Owner signs the typed data, then submit to /gas_sponsorship/prepare.
Request to execute multiple earn actions in a single atomic transaction.
Supported Action Types
V2_TRANSFER_FROM_EOA: Transfer tokens from the owner's EOA to the product account
using Permit2. Requires a signed Permit2 message.
V2_TRANSFER_TO_EOA: Transfer tokens from the product account back to the owner's EOA.
No signature required (product account owns the tokens).
V2_TRANSFER_TO_ADDRESS: Transfer ERC20 tokens from the product account to any
specified recipient address. No signature required (product account owns the tokens).
V2_SWAP: Swap tokens within the product account using 1inch aggregator.
V2_MANAGE: Deposit or withdraw from DeFi venues (Aave, Morpho, Vaults, etc.)
Using V2_TRANSFER_FROM_EOA (Deposit to Product Account)
To include a transfer from EOA in your bundle, follow these steps:
One-time setup: Approve Permit2 to spend the token by calling
POST /v2/gas_sponsorship/approve_transfer and executing the returned transaction.
Get Permit2 signature: Call POST /v2/earn/transfer with:
action: "DEPOSIT"
gas_sponsorship: true
spender: omit this field (defaults to product account address for bundle use)
This returns EIP-712 typed data. Sign it with the owner's wallet.
Include in bundle: Add a V2_TRANSFER_FROM_EOA action with the signature
and nonce/deadline from the typed data.
The bundle will atomically: pull tokens from EOA → execute subsequent actions.
Using V2_TRANSFER_TO_EOA (Withdraw to EOA)
To transfer tokens from the product account back to the owner's EOA, simply add
a V2_TRANSFER_TO_EOA action to your bundle. No signature is required since
the product account already owns the tokens.
Which route priced the bundle's V2_SWAP action(s): 'market' (a DEX aggregator, slippage-bounded) or 'firm' (a zero-slippage quote that fills exactly or reverts; the only route on HyperEVM). Null when the bundle carries no swap.
Deadline of the firm swap quote inside the bundle. The transaction (or the sponsor's broadcast of the signed typed data) must be included before it or the bundle reverts on-chain; rebuild after it passes. Null unless a swap action was firm-priced.
'async' when the bundle contains a MAPLE WITHDRAW: that action only requests the redemption from Maple's withdrawal queue, and the underlying asset arrives in the product account when Maple processes the queue (typically within minutes, at most 30 days). Its proceeds are not available to later actions in the same bundle. 'instant' otherwise.
When settlement is 'async', the endpoint that shows the pending redemption until it settles. Null otherwise.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Compass API Docs","colors":{"primary":"#0284c7","light":"#0e9fe9","dark":"#0284c7"},"logo":{"light":"https://mintcdn.com/compasslabs-f07467e0/x2NrFgZ7soJbH6sc/logo/light.svg?fit=max\u0026auto=format\u0026n=x2NrFgZ7soJbH6sc\u0026q=85\u0026s=80a04b06674000990914306c6a833cb9","dark":"https://mintcdn.com/compasslabs-f07467e0/x2NrFgZ7soJbH6sc/logo/dark.svg?fit=max\u0026auto=format\u0026n=x2NrFgZ7soJbH6sc\u0026q=85\u0026s=77e910ba12605c7f004ad72498f8076f"},"favicon":"https://mintcdn.com/compasslabs-f07467e0/x2NrFgZ7soJbH6sc/favicon.svg?fit=max\u0026auto=format\u0026n=x2NrFgZ7soJbH6sc\u0026q=85\u0026s=2025e9c84a2b6b167d319b28e1ecb8a0","appearance":{"default":"light","strict":true},"navbar":{"links":[{"href":"https://calendly.com/elisabeth-compasslabs/30min","label":"Book a demo"},{"href":"https://compasslabs.ai/login","label":"Login"}]},"footer":{"socials":{"x":"https://x.com/labs_compass","github":"https://github.com/CompassLabs","linkedin":"https://www.linkedin.com/company/compass-labs-ai","medium":"https://medium.com/@compasslabs","telegram":"https://discord.com/invite/ujetyJJPYr","discord":"https://discord.com/invite/ujetyJJPYr"},"links":[{"header":"Resources","items":[{"label":"Blog","href":"https://medium.com/@compasslabs"}]},{"header":"Legal","items":[{"label":"Terms \u0026 Conditions","href":"https://docs.compasslabs.ai/v1/support/terms-and-conditions"},{"label":"Privacy Policy","href":"https://docs.compasslabs.ai/v1/support/privacy-policy"}]}]},"styling":{"eyebrows":"section","codeblocks":"system","latex":false},"integrations":{"ga4":{"measurementId":"G-EQSZ3TK15C"},"gtm":{"tagId":"GTM-5NXMZG6D"}},"contextual":{"options":["chatgpt","claude"],"display":"header"},"navigation":{"global":{"tabs":[],"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"compasslabs-f07467e0","hasAudioNarration":false,"actualSubdomain":"compasslabs-f07467e0","customDomains":["docs.compasslabs.ai"],"gitSource":{"type":"github","owner":"compasslabs","repo":"mono","deployBranch":"production","contentDirectory":"api_docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae0a6ff7c6095c2ab5b81a9","collectionId":"7e667304-c32a-4059-a44a-da8b60cd1eb8","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae0a6ff7c6095c2ab5b81a9"},"feedback":{"issues":true,"edits":true,"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae0a6ff7c6095c2ab5b81a9","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"API Reference","count":298},{"language":"default","tag":"Documentation","count":30},{"language":"default","tag":"Aave V3","count":15},{"language":"default","tag":"Perpetual Trading","count":15},{"language":"default","tag":"Tokenized Assets","count":15},{"language":"default","tag":"Credit","count":14},{"language":"default","tag":"Earn","count":13},{"language":"default","tag":"Morpho","count":12},{"language":"default","tag":"Uniswap V3","count":10},{"language":"default","tag":"Transaction Bundler","count":9}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","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":"editor-v7-file-tree","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":"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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"byok-sep-25","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":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"button.css","content":"@keyframes jump{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}.jump-loop{animation:jump .5s ease infinite}#code-group,#content-area>div.flex.flex-col.gap-8>div.mt-6.flex.w-full.flex-col.space-y-4>div{background-color:#efefef33;box-shadow:0 4px 12px rgba(0,0,0,.08)}#code-group:hover,#content-area>div.flex.flex-col.gap-8>div.mt-6.flex.w-full.flex-col.space-y-4>div:hover{box-shadow:0 6px 18px rgba(0,0,0,.1)}"}],"page":{"pagePath":"v2/api-reference/earn/execute-multiple-earn-actions","slug":"/v2/api-reference/earn/execute-multiple-earn-actions","pageMetadata":{"title":"Execute multiple earn actions","description":"Combine multiple actions into a single atomic transaction.\n\nBundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together.\n\n**Example:** Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction.\n\n**Fees:** Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint.\n\n**Gas sponsorship:** Set `gas_sponsorship=true` to receive EIP-712 typed data. Owner signs the typed data, then submit to [/gas_sponsorship/prepare](https://docs.compasslabs.ai/v2/api-reference/gas-sponsorship/prepare-gas-sponsored-transaction).","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/earn/bundle","href":"/v2/api-reference/earn/execute-multiple-earn-actions","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 p: \"p\",\n strong: \"strong\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Combine multiple actions into a single atomic transaction.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Bundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Example:\"\n }), \" Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Fees:\"\n }), \" Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Gas sponsorship:\"\n }), \" Set \", _jsx(_components.code, {\n children: \"gas_sponsorship=true\"\n }), \" to receive EIP-712 typed data. Owner signs the typed data, then submit to \", _jsx(_components.a, {\n href: \"https://docs.compasslabs.ai/v2/api-reference/gas-sponsorship/prepare-gas-sponsored-transaction\",\n children: \"/gas_sponsorship/prepare\"\n }), \".\"]\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":{"codeStyling":"system","config":{},"pageMetadata":{"title":"Execute multiple earn actions","description":"Combine multiple actions into a single atomic transaction.\n\nBundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together.\n\n**Example:** Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction.\n\n**Fees:** Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint.\n\n**Gas sponsorship:** Set `gas_sponsorship=true` to receive EIP-712 typed data. Owner signs the typed data, then submit to [/gas_sponsorship/prepare](https://docs.compasslabs.ai/v2/api-reference/gas-sponsorship/prepare-gas-sponsored-transaction).","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/earn/bundle","href":"/v2/api-reference/earn/execute-multiple-earn-actions","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/compasslabs-f07467e0/27fd886bf35b6ed0/redeploy-trigger.js","/_mintlify/custom/compasslabs-f07467e0/5b350f94165e79a1/scripts/auth-btns.js","/_mintlify/custom/compasslabs-f07467e0/0c2ee6a003a69104/scripts/home-btn-link.js","/_mintlify/custom/compasslabs-f07467e0/17a3e2d25ff9b880/scripts/magic.js","/_mintlify/custom/compasslabs-f07467e0/2592024b81e4044f/scripts/modal.js","/_mintlify/custom/compasslabs-f07467e0/60b3db97b96f7d26/scripts/language-icon-fixer.js","/_mintlify/custom/compasslabs-f07467e0/60408501351ea2bb/scripts/disable-bundler-playground.js"],"openApiReferenceData":{"operation":{"tags":["Earn"],"summary":"Execute multiple earn actions","description":"Combine multiple actions into a single atomic transaction.\n\nBundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together.\n\n**Example:** Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction.\n\n**Fees:** Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint.\n\n**Gas sponsorship:** Set `gas_sponsorship=true` to receive EIP-712 typed data. Owner signs the typed data, then submit to [/gas_sponsorship/prepare](https://docs.compasslabs.ai/v2/api-reference/gas-sponsorship/prepare-gas-sponsored-transaction).","operationId":"v2_earn_bundle","requestBody":"544314c5-0472-4c3d-8f44-a0415d701f40","responses":{"200":"9379fecd-aa13-46c9-9dc6-ced0f46304b8","422":"fe9300b9-43cb-473e-961c-8c24eb29fa84"},"x-speakeasy-name-override":"earn_bundle","x-codeSamples":[{"lang":"python","label":"Python (SDK)","source":"from compass_api_sdk import CompassAPI, models\n\n\nwith CompassAPI(\n api_key_auth=\"\u003cYOUR_API_KEY_HERE>\",\n) as compass_api:\n\n res = compass_api.earn.earn_bundle(owner=\"0x06A9aF046187895AcFc7258450B15397CAc67400\", chain=models.V2BundleRequestChain.ETHEREUM, actions=[\n {\n \"body\": {\n \"action_type\": \"V2_TRANSFER_FROM_EOA\",\n \"token\": \"USDC\",\n \"amount\": \"100\",\n \"permit2_signature\": \"0x...\",\n \"permit2_nonce\": 1706000000,\n \"permit2_deadline\": 1706001800,\n },\n },\n {\n \"body\": {\n \"action_type\": \"V2_SWAP\",\n \"token_in\": \"USDC\",\n \"token_out\": \"AUSD\",\n \"amount_in\": \"100\",\n \"slippage\": \"0.5\",\n },\n },\n {\n \"body\": {\n \"action_type\": \"V2_MANAGE\",\n \"venue\": {\n \"type\": \"VAULT\",\n \"vault_address\": \"0x1B4cd53a1A8e5F50aB6320EF34E5fB4D3df7B6f6\",\n },\n \"action\": models.EarnManageParamsAction.DEPOSIT,\n \"amount\": \"100\",\n },\n },\n ], gas_sponsorship=False)\n\n # Handle response\n print(res)"},{"lang":"typescript","label":"Typescript (SDK)","source":"import { CompassApiSDK } from \"@compass-labs/api-sdk\";\n\nconst compassApiSDK = new CompassApiSDK({\n apiKeyAuth: \"\u003cYOUR_API_KEY_HERE>\",\n});\n\nasync function run() {\n const result = await compassApiSDK.earn.earnBundle({\n owner: \"0x06A9aF046187895AcFc7258450B15397CAc67400\",\n chain: \"ethereum\",\n actions: [\n {\n body: {\n actionType: \"V2_TRANSFER_FROM_EOA\",\n token: \"USDC\",\n amount: \"100\",\n permit2Signature: \"0x...\",\n permit2Nonce: 1706000000,\n permit2Deadline: 1706001800,\n },\n },\n {\n body: {\n actionType: \"V2_SWAP\",\n tokenIn: \"USDC\",\n tokenOut: \"AUSD\",\n amountIn: \"100\",\n slippage: \"0.5\",\n },\n },\n {\n body: {\n actionType: \"V2_MANAGE\",\n venue: {\n type: \"VAULT\",\n vaultAddress: \"0x1B4cd53a1A8e5F50aB6320EF34E5fB4D3df7B6f6\",\n },\n action: \"DEPOSIT\",\n amount: \"100\",\n },\n },\n ],\n gasSponsorship: false,\n });\n\n console.log(result);\n}\n\nrun();"}],"method":"post","type":"path","servers":["f38a9aa6-5bf5-4e43-8411-67293530b947"],"security":["eff03a3b-02d2-4605-ba22-1d398ee6cda2"],"path":"/v2/earn/bundle","baseUrlOptions":["https://api.compasslabs.ai"],"title":"Execute multiple earn actions","codeSamples":[{"label":"Python (SDK)","lang":"python","source":"from compass_api_sdk import CompassAPI, models\n\n\nwith CompassAPI(\n api_key_auth=\"\u003cYOUR_API_KEY_HERE>\",\n) as compass_api:\n\n res = compass_api.earn.earn_bundle(owner=\"0x06A9aF046187895AcFc7258450B15397CAc67400\", chain=models.V2BundleRequestChain.ETHEREUM, actions=[\n {\n \"body\": {\n \"action_type\": \"V2_TRANSFER_FROM_EOA\",\n \"token\": \"USDC\",\n \"amount\": \"100\",\n \"permit2_signature\": \"0x...\",\n \"permit2_nonce\": 1706000000,\n \"permit2_deadline\": 1706001800,\n },\n },\n {\n \"body\": {\n \"action_type\": \"V2_SWAP\",\n \"token_in\": \"USDC\",\n \"token_out\": \"AUSD\",\n \"amount_in\": \"100\",\n \"slippage\": \"0.5\",\n },\n },\n {\n \"body\": {\n \"action_type\": \"V2_MANAGE\",\n \"venue\": {\n \"type\": \"VAULT\",\n \"vault_address\": \"0x1B4cd53a1A8e5F50aB6320EF34E5fB4D3df7B6f6\",\n },\n \"action\": models.EarnManageParamsAction.DEPOSIT,\n \"amount\": \"100\",\n },\n },\n ], gas_sponsorship=False)\n\n # Handle response\n print(res)"},{"label":"Typescript (SDK)","lang":"typescript","source":"import { CompassApiSDK } from \"@compass-labs/api-sdk\";\n\nconst compassApiSDK = new CompassApiSDK({\n apiKeyAuth: \"\u003cYOUR_API_KEY_HERE>\",\n});\n\nasync function run() {\n const result = await compassApiSDK.earn.earnBundle({\n owner: \"0x06A9aF046187895AcFc7258450B15397CAc67400\",\n chain: \"ethereum\",\n actions: [\n {\n body: {\n actionType: \"V2_TRANSFER_FROM_EOA\",\n token: \"USDC\",\n amount: \"100\",\n permit2Signature: \"0x...\",\n permit2Nonce: 1706000000,\n permit2Deadline: 1706001800,\n },\n },\n {\n body: {\n actionType: \"V2_SWAP\",\n tokenIn: \"USDC\",\n tokenOut: \"AUSD\",\n amountIn: \"100\",\n slippage: \"0.5\",\n },\n },\n {\n body: {\n actionType: \"V2_MANAGE\",\n venue: {\n type: \"VAULT\",\n vaultAddress: \"0x1B4cd53a1A8e5F50aB6320EF34E5fB4D3df7B6f6\",\n },\n action: \"DEPOSIT\",\n amount: \"100\",\n },\n },\n ],\n gasSponsorship: false,\n });\n\n console.log(result);\n}\n\nrun();"}],"requiredOnlyExamples":false,"requestExampleType":"codeSamples","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"properties":{"owner":{"type":"string","title":"Owner","description":"The owner's wallet address that controls the Earn Account.","default":"0x06A9aF046187895AcFc7258450B15397CAc67400","examples":["0x06A9aF046187895AcFc7258450B15397CAc67400"],"isRequired":true,"uniqueKey":"owner","typeLabel":"string"},"chain":{"type":"string","enum":["arbitrum","base","bsc","ethereum","hyperevm","tempo"],"title":"Chain","description":"Target blockchain network where the bundled actions will execute.","default":"ethereum","examples":["ethereum"],"isRequired":true,"uniqueKey":"chain","typeLabel":"enum\u003cstring>"},"actions":{"items":{"properties":{"body":{"oneOf":[{"type":"object","title":"EarnSwapParams","description":"Parameters for swap operations (without context like owner/chain).\n\nUsed by multicall/bundle endpoint to specify swap actions.","required":["token_in","token_out","amount_in"],"properties":{"token_in":{"type":"string","title":"Token","description":"Token to sell (input). Provide a token symbol from a limited set (e.g., 'USDC') or any token address.","examples":["USDC","0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.0.token_in","typeLabel":"string"},"token_out":{"type":"string","title":"Token","description":"Token to buy (output). Provide a token symbol from a limited set (e.g., 'USDT') or any token address.","examples":["USDT","0xdAC17F958D2ee523a2206206994597C13D831ec7"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.0.token_out","typeLabel":"string"},"amount_in":{"oneOf":[{"type":"number","title":"Amount In","description":"Human-readable amount of `token_in` to swap (token units, not wei).","minimum":0,"example":1.5,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.0.amount_in.oneOf.0","typeLabel":"number"},{"type":"string","title":"Amount In","description":"Human-readable amount of `token_in` to swap (token units, not wei).","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","example":1.5,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.0.amount_in.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.0.amount_in","typeLabel":"number | string"},"action_type":{"type":"string","const":"V2_SWAP","title":"Action Type","description":"Action type identifier for swap operations.","default":"V2_SWAP","uniqueKey":"actions.items.[INDEX].body.oneOf.0.action_type","typeLabel":"string"},"slippage":{"oneOf":[{"type":"number","title":"Slippage","description":"Maximum slippage tolerance as a percentage (e.g., 0.5 = 0.5%).","default":"0.5","example":0.5,"uniqueKey":"actions.items.[INDEX].body.oneOf.0.slippage.oneOf.0","typeLabel":"number"},{"type":"string","title":"Slippage","description":"Maximum slippage tolerance as a percentage (e.g., 0.5 = 0.5%).","default":"0.5","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","example":0.5,"uniqueKey":"actions.items.[INDEX].body.oneOf.0.slippage.oneOf.1","typeLabel":"string"}],"uniqueKey":"actions.items.[INDEX].body.oneOf.0.slippage","typeLabel":"number | string"}},"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.0","typeLabel":"EarnSwapParams · object"},{"type":"object","title":"EarnManageParams","description":"Parameters for earn manage operations (deposit/withdraw to vault/Aave/Pendle\nPT/Maple).\n\nUsed by multicall/bundle endpoint to specify manage actions. EarnManageRequest\ninherits from this class.","required":["venue","action","amount"],"properties":{"venue":{"oneOf":[{"type":"object","title":"VaultVenue","description":"The earn venue.","required":["type","vault_address"],"properties":{"type":{"type":"string","const":"VAULT","title":"Type","description":"The venue type discriminator.","examples":["VAULT","AAVE","PENDLE_PT","MAPLE"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.0.type","typeLabel":"string"},"vault_address":{"type":"string","title":"Vault Address","description":"The vault address you are interacting with for this action.","examples":["0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.0.vault_address","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.0","typeLabel":"VaultVenue · object"},{"type":"object","title":"AaveVenue","description":"The earn venue.","required":["type","token"],"properties":{"type":{"type":"string","const":"AAVE","title":"Type","description":"The venue type discriminator.","examples":["VAULT","AAVE","PENDLE_PT","MAPLE"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.1.type","typeLabel":"string"},"token":{"type":"string","title":"Token","description":"The reserve token for the Aave pool you are interacting with.","examples":["USDC","0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.1.token","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.1","typeLabel":"AaveVenue · object"},{"type":"object","title":"PendlePTVenue","description":"Venue for Pendle Principal Token (PT) positions.","required":["type","market_address"],"properties":{"type":{"type":"string","const":"PENDLE_PT","title":"Type","description":"The venue type discriminator.","examples":["VAULT","AAVE","PENDLE_PT","MAPLE"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.2.type","typeLabel":"string"},"market_address":{"type":"string","title":"Market Address","description":"The Pendle market address identifying which PT to trade.","examples":["0x08a152834de126d2ef83d612ff36e4523fd0017f"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.2.market_address","typeLabel":"string"},"token":{"oneOf":[{"type":"string","title":"Token","description":"A token identifier - either a supported symbol (e.g., USDC, WETH) or a valid Ethereum address (0x...)","example":"USDC","uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.2.token.oneOf.0","typeLabel":"string"},{"type":"null","title":"Token","description":"The token to exchange for PT (only used for DEPOSIT/buy). For WITHDRAW/sell, this field must not be provided - withdrawals always return the underlying asset to ensure accurate yield fee calculation.","example":"USDC","uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.2.token.oneOf.1","typeLabel":"null"}],"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.2.token","typeLabel":"string | null"},"max_slippage_percent":{"type":"number","maximum":10,"minimum":0,"title":"Max Slippage Percent","description":"Maximum slippage allowed in percent (e.g., 1 means 1% slippage).","default":1,"examples":[0.5,1,2],"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.2.max_slippage_percent","typeLabel":"number"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.2","typeLabel":"PendlePTVenue · object"},{"type":"object","title":"MapleVenue","description":"Venue for Maple syrup pools (syrupUSDC, syrupUSDT) on Ethereum.\n\nDEPOSIT mints pool shares directly from Maple at the pool exchange rate (no\nswap, no slippage). The product account is authorized with Maple\nautomatically on its first deposit. WITHDRAW is asynchronous: it requests a\nredemption from Maple's withdrawal queue and the underlying asset arrives in\nthe product account when Maple processes the queue, typically within\nminutes and at most 30 days. To exit immediately at market price instead,\nsell the shares with `/v2/earn/swap`.","required":["type","pool_address"],"properties":{"type":{"type":"string","const":"MAPLE","title":"Type","description":"The venue type discriminator.","examples":["VAULT","AAVE","PENDLE_PT","MAPLE"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.3.type","typeLabel":"string"},"pool_address":{"type":"string","title":"Pool Address","description":"The Maple syrup pool, which is also the syrup token address (syrupUSDC or syrupUSDT). See `GET /v2/earn/maple_pools`.","examples":["0x80ac24aA929eaF5013f6436cdA2a7ba190f5Cc0b"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.3.pool_address","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue.oneOf.3","typeLabel":"MapleVenue · object"}],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.venue","typeLabel":"VaultVenue · object | AaveVenue · object | PendlePTVenue · object | MapleVenue · object"},"action":{"type":"string","enum":["DEPOSIT","WITHDRAW"],"title":"Action","description":"Whether you are depositing into or withdrawing from the given Earn `venue`.","isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.action","typeLabel":"enum\u003cstring>"},"amount":{"oneOf":[{"type":"number","title":"Amount","description":"Amount of the underlying asset to act on (deposit or withdraw). For VAULT, this is the vault's underlying token; for AAVE, this is the Aave reserve asset; for PENDLE_PT, this is the amount of `token` to spend (DEPOSIT) or PT to sell (WITHDRAW); for MAPLE, this is the pool's underlying asset (USDC for syrupUSDC, USDT for syrupUSDT). Provide as a decimal in token units (not wei); must be > 0.","minimum":0,"example":0.1,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.amount.oneOf.0","typeLabel":"number"},{"type":"string","title":"Amount","description":"Amount of the underlying asset to act on (deposit or withdraw). For VAULT, this is the vault's underlying token; for AAVE, this is the Aave reserve asset; for PENDLE_PT, this is the amount of `token` to spend (DEPOSIT) or PT to sell (WITHDRAW); for MAPLE, this is the pool's underlying asset (USDC for syrupUSDC, USDT for syrupUSDT). Provide as a decimal in token units (not wei); must be > 0.","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","example":0.1,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.amount.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.amount","typeLabel":"number | string"},"action_type":{"type":"string","const":"V2_MANAGE","title":"Action Type","description":"Action type identifier for manage operations.","default":"V2_MANAGE","uniqueKey":"actions.items.[INDEX].body.oneOf.1.action_type","typeLabel":"string"},"fee":{"oneOf":[{"type":"object","title":"Fee","description":"Optional fee configuration. If provided, a fee will be applied to the transaction amount and sent to the specified recipient address. The fee can be specified as a percentage of the transaction amount, as a fixed token amount, or as a percentage of realized profit (PERFORMANCE).","required":["recipient","amount"],"properties":{"recipient":{"type":"string","title":"Recipient","description":"The wallet address that will receive the fee.","examples":["0xb8340945eBc917D2Aa0368a5e4E79C849c461511"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.fee.oneOf.0.recipient","typeLabel":"string"},"amount":{"oneOf":[{"type":"number","title":"Amount","description":"The fee amount. If `denomination` is 'PERCENTAGE', this is a percentage of the transaction amount (e.g., 1.5 for 1.5%). If `denomination` is 'FIXED', this is a fixed amount in token units (e.g., 0.1 for 0.1 tokens). If `denomination` is 'PERFORMANCE', this is a percentage of realized profit calculated using FIFO cost basis (e.g., 10 for 10% of profit).","minimum":0,"example":1.5,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.fee.oneOf.0.amount.oneOf.0","typeLabel":"number"},{"type":"string","title":"Amount","description":"The fee amount. If `denomination` is 'PERCENTAGE', this is a percentage of the transaction amount (e.g., 1.5 for 1.5%). If `denomination` is 'FIXED', this is a fixed amount in token units (e.g., 0.1 for 0.1 tokens). If `denomination` is 'PERFORMANCE', this is a percentage of realized profit calculated using FIFO cost basis (e.g., 10 for 10% of profit).","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","example":1.5,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.fee.oneOf.0.amount.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.fee.oneOf.0.amount","typeLabel":"number | string"},"denomination":{"type":"string","enum":["PERCENTAGE","FIXED","PERFORMANCE"],"title":"Denomination","description":"The unit type for the fee amount. Use 'PERCENTAGE' for a percentage-based fee (e.g., 1.5 means 1.5% of the transaction amount), 'FIXED' for a fixed token amount (e.g., 0.1 means 0.1 tokens), or 'PERFORMANCE' for a fee based on realized profit using FIFO cost basis (e.g., 10 means 10% of profit).","default":"PERCENTAGE","examples":["PERCENTAGE","FIXED","PERFORMANCE"],"uniqueKey":"actions.items.[INDEX].body.oneOf.1.fee.oneOf.0.denomination","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"uniqueKey":"actions.items.[INDEX].body.oneOf.1.fee.oneOf.0","typeLabel":"Fee · object"},{"type":"null","description":"Optional fee configuration. If provided, a fee will be applied to the transaction amount and sent to the specified recipient address. The fee can be specified as a percentage of the transaction amount, as a fixed token amount, or as a percentage of realized profit (PERFORMANCE).","uniqueKey":"actions.items.[INDEX].body.oneOf.1.fee.oneOf.1","typeLabel":"null"}],"uniqueKey":"actions.items.[INDEX].body.oneOf.1.fee","typeLabel":"Fee · object | null"}},"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.1","typeLabel":"EarnManageParams · object"},{"type":"object","title":"EarnTransferFromEOAParams","description":"Parameters for transferring tokens from EOA to Earn Account via Permit2.\n\nUsed by multicall/bundle endpoint to pull tokens from the owner's EOA\ninto their Earn Account (Safe) as part of an atomic bundle transaction.\n\nThe owner must have:\n1. Previously approved Permit2 for the token (one-time setup via /gas_sponsorship/approve_transfer)\n2. Signed a Permit2 message with spender = Earn Account address\n\nThe signature is obtained by first calling /v2/earn/transfer with action=DEPOSIT\nand gas_sponsorship=True, then signing the returned EIP-712 typed data.","required":["token","amount","permit2_signature","permit2_nonce","permit2_deadline"],"properties":{"token":{"type":"string","title":"Token","description":"The token to transfer from EOA to Earn Account.","examples":["USDC","0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.2.token","typeLabel":"string"},"amount":{"oneOf":[{"type":"number","title":"Amount","description":"The amount of tokens to transfer (in token units, not wei).","minimum":0,"example":100,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.2.amount.oneOf.0","typeLabel":"number"},{"type":"string","title":"Amount","description":"The amount of tokens to transfer (in token units, not wei).","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","example":100,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.2.amount.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.2.amount","typeLabel":"number | string"},"permit2_signature":{"type":"string","title":"Permit2 Signature","description":"The EOA owner's signature of the Permit2 PermitTransferFrom typed data. Obtain this by calling /v2/earn/transfer with action=DEPOSIT and gas_sponsorship=True, then signing the returned EIP-712 data with the owner's wallet.","examples":["0x..."],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.2.permit2_signature","typeLabel":"string"},"permit2_nonce":{"type":"integer","minimum":0,"title":"Permit2 Nonce","description":"The nonce used in the Permit2 signature (from the signed typed data).","examples":[1706000000],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.2.permit2_nonce","typeLabel":"integer"},"permit2_deadline":{"type":"integer","minimum":0,"title":"Permit2 Deadline","description":"The deadline timestamp used in the Permit2 signature (from the signed typed data).","examples":[1706001800],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.2.permit2_deadline","typeLabel":"integer"},"action_type":{"type":"string","const":"V2_TRANSFER_FROM_EOA","title":"Action Type","description":"Action type identifier for EOA-to-Earn-Account transfer operations.","default":"V2_TRANSFER_FROM_EOA","uniqueKey":"actions.items.[INDEX].body.oneOf.2.action_type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.2","typeLabel":"EarnTransferFromEOAParams · object"},{"type":"object","title":"EarnTransferToEOAParams","description":"Parameters for transferring tokens from Earn Account to EOA (withdrawal).\n\nUsed by multicall/bundle endpoint to send tokens from the Earn Account (Safe) back\nto the owner's EOA as part of an atomic bundle transaction.\n\nNo signature is required for this action since the Safe already owns the tokens and\nis executing the transfer as part of its own transaction.","required":["token","amount"],"properties":{"token":{"type":"string","title":"Token","description":"The token to transfer from Earn Account to EOA.","examples":["USDC","0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.3.token","typeLabel":"string"},"amount":{"oneOf":[{"type":"number","title":"Amount","description":"The amount of tokens to transfer (in token units, not wei).","minimum":0,"example":100,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.3.amount.oneOf.0","typeLabel":"number"},{"type":"string","title":"Amount","description":"The amount of tokens to transfer (in token units, not wei).","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","example":100,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.3.amount.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.3.amount","typeLabel":"number | string"},"action_type":{"type":"string","const":"V2_TRANSFER_TO_EOA","title":"Action Type","description":"Action type identifier for Earn-Account-to-EOA transfer operations.","default":"V2_TRANSFER_TO_EOA","uniqueKey":"actions.items.[INDEX].body.oneOf.3.action_type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.3","typeLabel":"EarnTransferToEOAParams · object"},{"type":"object","title":"EarnTransferToAddressParams","description":"Parameters for transferring tokens from product account to an arbitrary address.\n\nUsed by multicall/bundle endpoint to send ERC20 tokens from the product account\nto any specified recipient address as part of an atomic bundle transaction.\n\nNo signature is required for this action since the product account already owns\nthe tokens and is executing the transfer as part of its own transaction.","required":["token","amount","recipient"],"properties":{"token":{"type":"string","title":"Token","description":"The ERC20 token to transfer from the product account.","examples":["USDC","0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.4.token","typeLabel":"string"},"amount":{"oneOf":[{"type":"number","title":"Amount","description":"The amount of tokens to transfer (in token units, not wei).","minimum":0,"example":100,"exclusiveMinimum":true,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.4.amount.oneOf.0","typeLabel":"number"},{"type":"string","title":"Amount","description":"The amount of tokens to transfer (in token units, not wei).","pattern":"^(?!^[-+.]*$)[+-]?0*\\d*\\.?\\d*$","example":100,"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.4.amount.oneOf.1","typeLabel":"string"}],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.4.amount","typeLabel":"number | string"},"recipient":{"type":"string","title":"Recipient","description":"The destination address to receive the tokens.","isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.4.recipient","typeLabel":"string"},"action_type":{"type":"string","const":"V2_TRANSFER_TO_ADDRESS","title":"Action Type","description":"Action type identifier for product-account-to-arbitrary-address transfer operations.","default":"V2_TRANSFER_TO_ADDRESS","uniqueKey":"actions.items.[INDEX].body.oneOf.4.action_type","typeLabel":"string"}},"isRequired":true,"uniqueKey":"actions.items.[INDEX].body.oneOf.4","typeLabel":"EarnTransferToAddressParams · object"}],"isRequired":true,"uniqueKey":"actions.items.[INDEX].body","typeLabel":"EarnSwapParams · object | EarnManageParams · object | EarnTransferFromEOAParams · object | EarnTransferToEOAParams · object | EarnTransferToAddressParams · object"}},"type":"object","required":["body"],"title":"V2UserOperation","description":"A single operation in a V2 bundle.","uniqueKey":"actions.items.[INDEX]","typeLabel":"V2UserOperation · object"},"type":"array","minItems":1,"title":"Actions","description":"List of actions to bundle. Actions are executed in order.","default":[{"body":{"action_type":"V2_TRANSFER_FROM_EOA","amount":"100","permit2_deadline":1706001800,"permit2_nonce":1706000000,"permit2_signature":"0x...","token":"USDC"}},{"body":{"action_type":"V2_SWAP","amount_in":"100","slippage":"0.5","token_in":"USDC","token_out":"AUSD"}},{"body":{"action":"DEPOSIT","action_type":"V2_MANAGE","amount":"100","venue":{"type":"VAULT","vault_address":"0x1B4cd53a1A8e5F50aB6320EF34E5fB4D3df7B6f6"}}}],"examples":[[{"body":{"action_type":"V2_TRANSFER_FROM_EOA","amount":"100","permit2_deadline":1706001800,"permit2_nonce":1706000000,"permit2_signature":"0x...","token":"USDC"}},{"body":{"action_type":"V2_SWAP","amount_in":"100","slippage":"0.5","token_in":"USDC","token_out":"AUSD"}},{"body":{"action":"DEPOSIT","action_type":"V2_MANAGE","amount":"100","venue":{"type":"VAULT","vault_address":"0x1B4cd53a1A8e5F50aB6320EF34E5fB4D3df7B6f6"}}}]],"isRequired":true,"uniqueKey":"actions","typeLabel":"V2UserOperation · object[]"},"gas_sponsorship":{"type":"boolean","title":"Gas Sponsorship","description":"If true, returns EIP-712 typed data for gas sponsorship. The owner must sign this data and submit to /gas_sponsorship/prepare.","default":false,"examples":[false],"uniqueKey":"gas_sponsorship","typeLabel":"boolean"}},"type":"object","required":["owner","chain","actions"],"title":"V2BundleRequest","description":"Request to execute multiple earn actions in a single atomic transaction.\n\n## Supported Action Types\n\n- **V2_TRANSFER_FROM_EOA**: Transfer tokens from the owner's EOA to the product account\n using Permit2. Requires a signed Permit2 message.\n- **V2_TRANSFER_TO_EOA**: Transfer tokens from the product account back to the owner's EOA.\n No signature required (product account owns the tokens).\n- **V2_TRANSFER_TO_ADDRESS**: Transfer ERC20 tokens from the product account to any\n specified recipient address. No signature required (product account owns the tokens).\n- **V2_SWAP**: Swap tokens within the product account using 1inch aggregator.\n- **V2_MANAGE**: Deposit or withdraw from DeFi venues (Aave, Morpho, Vaults, etc.)\n\n## Using V2_TRANSFER_FROM_EOA (Deposit to Product Account)\n\nTo include a transfer from EOA in your bundle, follow these steps:\n\n1. **One-time setup**: Approve Permit2 to spend the token by calling\n `POST /v2/gas_sponsorship/approve_transfer` and executing the returned transaction.\n\n2. **Get Permit2 signature**: Call `POST /v2/earn/transfer` with:\n - `action`: \"DEPOSIT\"\n - `gas_sponsorship`: true\n - `spender`: omit this field (defaults to product account address for bundle use)\n\n This returns EIP-712 typed data. Sign it with the owner's wallet.\n\n3. **Include in bundle**: Add a V2_TRANSFER_FROM_EOA action with the signature\n and nonce/deadline from the typed data.\n\nThe bundle will atomically: pull tokens from EOA → execute subsequent actions.\n\n## Using V2_TRANSFER_TO_EOA (Withdraw to EOA)\n\nTo transfer tokens from the product account back to the owner's EOA, simply add\na V2_TRANSFER_TO_EOA action to your bundle. No signature is required since\nthe product account already owns the tokens.\n\nSpecify the exact token amount to transfer.","default":{"owner":"0x06A9aF046187895AcFc7258450B15397CAc67400","chain":"ethereum","actions":[{"body":{"action_type":"V2_TRANSFER_FROM_EOA","amount":"100","permit2_deadline":1706001800,"permit2_nonce":1706000000,"permit2_signature":"0x...","token":"USDC"}},{"body":{"action_type":"V2_SWAP","amount_in":"100","slippage":"0.5","token_in":"USDC","token_out":"AUSD"}},{"body":{"action":"DEPOSIT","action_type":"V2_MANAGE","amount":"100","venue":{"type":"VAULT","vault_address":"0x1B4cd53a1A8e5F50aB6320EF34E5fB4D3df7B6f6"}}}],"gas_sponsorship":false},"uniqueKey":"","typeLabel":"V2BundleRequest · object"},"examples":{"Example":{"title":"Example","value":{"owner":"0x06A9aF046187895AcFc7258450B15397CAc67400","chain":"ethereum","actions":[{"body":{"action_type":"V2_TRANSFER_FROM_EOA","amount":"100","permit2_deadline":1706001800,"permit2_nonce":1706000000,"permit2_signature":"0x...","token":"USDC"}},{"body":{"action_type":"V2_SWAP","amount_in":"100","slippage":"0.5","token_in":"USDC","token_out":"AUSD"}},{"body":{"action":"DEPOSIT","action_type":"V2_MANAGE","amount":"100","venue":{"type":"VAULT","vault_address":"0x1B4cd53a1A8e5F50aB6320EF34E5fB4D3df7B6f6"}}}],"gas_sponsorship":false}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"9379fecd-aa13-46c9-9dc6-ced0f46304b8":{"description":"Successful Response","content":{"application/json":{"schema":{"properties":{"actions_count":{"type":"integer","title":"Actions Count","description":"Number of individual transactions bundled in this execution.","isRequired":true,"uniqueKey":"actions_count","typeLabel":"integer"},"transaction":{"oneOf":[{"type":"object","title":"UnsignedTransaction","description":"Unsigned transaction for direct execution by the owner. Present when gas_sponsorship=false.","required":["chainId","data","from","gas","to","value","nonce","maxFeePerGas","maxPriorityFeePerGas"],"example":{"chainId":"0x2105","data":"0x1688f0b900000000000000000000000029fcb43b46531bca003ddc8fcb67ffe91900c762000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000675f4a3d","from":"0x4A83b4413CF41C3244027e1590E35a0F48403F0c","gas":"0x7a120","maxFeePerGas":"0x59682f00","maxPriorityFeePerGas":"0x3b9aca00","nonce":"0x5","to":"0x4e1DCf7AD4e460CfD30791CCC4F9c8a4f820ec67","value":"0x0"},"properties":{"chainId":{"type":"string","title":"Chainid","description":"The chain id of the transaction","isRequired":true,"uniqueKey":"transaction.oneOf.0.chainId","typeLabel":"string"},"data":{"type":"string","title":"Data","description":"The data of the transaction","isRequired":true,"uniqueKey":"transaction.oneOf.0.data","typeLabel":"string"},"from":{"type":"string","title":"From","description":"The sender of the transaction","isRequired":true,"uniqueKey":"transaction.oneOf.0.from","typeLabel":"string"},"gas":{"oneOf":[{"type":"string","title":"Gas","description":"The gas of the transaction","isRequired":true,"uniqueKey":"transaction.oneOf.0.gas.oneOf.0","typeLabel":"string"},{"type":"null","title":"Gas","description":"The gas of the transaction","isRequired":true,"uniqueKey":"transaction.oneOf.0.gas.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"transaction.oneOf.0.gas","typeLabel":"string | null"},"to":{"type":"string","title":"To","description":"The recipient of the transaction","isRequired":true,"uniqueKey":"transaction.oneOf.0.to","typeLabel":"string"},"value":{"type":"string","title":"Value","description":"The value of the transaction","isRequired":true,"uniqueKey":"transaction.oneOf.0.value","typeLabel":"string"},"nonce":{"type":"string","title":"Nonce","description":"The nonce of the address","isRequired":true,"uniqueKey":"transaction.oneOf.0.nonce","typeLabel":"string"},"maxFeePerGas":{"type":"string","title":"Maxfeepergas","description":"The max fee per gas of the transaction","isRequired":true,"uniqueKey":"transaction.oneOf.0.maxFeePerGas","typeLabel":"string"},"maxPriorityFeePerGas":{"type":"string","title":"Maxpriorityfeepergas","description":"The max priority fee per gas of the transaction","isRequired":true,"uniqueKey":"transaction.oneOf.0.maxPriorityFeePerGas","typeLabel":"string"}},"uniqueKey":"transaction.oneOf.0","typeLabel":"UnsignedTransaction · object"},{"type":"null","description":"Unsigned transaction for direct execution by the owner. Present when gas_sponsorship=false.","uniqueKey":"transaction.oneOf.1","typeLabel":"null"}],"uniqueKey":"transaction","typeLabel":"UnsignedTransaction · object | null"},"eip_712":{"oneOf":[{"type":"object","title":"BatchedSafeOperationsResponse","description":"EIP-712 typed data for gas-sponsored execution. Present when gas_sponsorship=true. Owner must sign and submit to /gas_sponsorship/prepare.","required":["domain","types","primaryType","message"],"example":{"domain":{"chainId":8453,"verifyingContract":"0x6B90E8B4E3E971E74C1A47a3a20976377E2dB4b1"},"message":{"baseGas":"0","data":"0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020","gasPrice":"0","gasToken":"0x0000000000000000000000000000000000000000","nonce":"7","operation":1,"refundReceiver":"0x0000000000000000000000000000000000000000","safeTxGas":"0","to":"0x93C23AAE4793C14D6DF35D2A2A2234204e1559dA","value":"0"},"primaryType":"SafeTx","types":{"EIP712Domain":[{"name":"chainId","type":"uint256"},{"name":"verifyingContract","type":"address"}],"SafeTx":[{"name":"to","type":"address"},{"name":"value","type":"uint256"},{"name":"data","type":"bytes"},{"name":"operation","type":"uint8"},{"name":"safeTxGas","type":"uint256"},{"name":"baseGas","type":"uint256"},{"name":"gasPrice","type":"uint256"},{"name":"gasToken","type":"address"},{"name":"refundReceiver","type":"address"},{"name":"nonce","type":"uint256"}]}},"properties":{"domain":{"properties":{"chainId":{"type":"integer","title":"Chainid","description":"Chain ID","isRequired":true,"uniqueKey":"eip_712.oneOf.0.domain.chainId","typeLabel":"integer"},"verifyingContract":{"type":"string","title":"Verifyingcontract","description":"Address of the Product Account","isRequired":true,"uniqueKey":"eip_712.oneOf.0.domain.verifyingContract","typeLabel":"string"}},"type":"object","required":["chainId","verifyingContract"],"title":"EIP712Domain","description":"EIP-712 domain separator","isRequired":true,"uniqueKey":"eip_712.oneOf.0.domain","typeLabel":"EIP712Domain · object"},"types":{"properties":{"EIP712Domain":{"items":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"eip_712.oneOf.0.types.EIP712Domain.items.[INDEX].name","typeLabel":"string"},"type":{"type":"string","title":"Type","isRequired":true,"uniqueKey":"eip_712.oneOf.0.types.EIP712Domain.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["name","type"],"title":"EIP712DomainField","description":"A field in the EIP712Domain type definition.","uniqueKey":"eip_712.oneOf.0.types.EIP712Domain.items.[INDEX]","typeLabel":"EIP712DomainField · object"},"type":"array","title":"Eip712Domain","description":"EIP712Domain type definition","isRequired":true,"uniqueKey":"eip_712.oneOf.0.types.EIP712Domain","typeLabel":"EIP712DomainField · object[]"},"SafeTx":{"items":{"properties":{"name":{"type":"string","title":"Name","isRequired":true,"uniqueKey":"eip_712.oneOf.0.types.SafeTx.items.[INDEX].name","typeLabel":"string"},"type":{"type":"string","title":"Type","isRequired":true,"uniqueKey":"eip_712.oneOf.0.types.SafeTx.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["name","type"],"title":"SafeTxField","description":"A field in the SafeTx type definition.","uniqueKey":"eip_712.oneOf.0.types.SafeTx.items.[INDEX]","typeLabel":"SafeTxField · object"},"type":"array","title":"Safetx","description":"SafeTx type definition","isRequired":true,"uniqueKey":"eip_712.oneOf.0.types.SafeTx","typeLabel":"SafeTxField · object[]"}},"type":"object","required":["EIP712Domain","SafeTx"],"title":"EIP712Types","description":"EIP-712 type definitions","isRequired":true,"uniqueKey":"eip_712.oneOf.0.types","typeLabel":"EIP712Types · object"},"primaryType":{"type":"string","const":"SafeTx","title":"Primarytype","description":"Primary type for the structured data","isRequired":true,"uniqueKey":"eip_712.oneOf.0.primaryType","typeLabel":"string"},"message":{"properties":{"to":{"type":"string","title":"To","description":"Destination address","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.to","typeLabel":"string"},"value":{"type":"string","title":"Value","description":"Value in wei as a string","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.value","typeLabel":"string"},"data":{"type":"string","title":"Data","description":"Transaction data as hex string","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.data","typeLabel":"string"},"operation":{"type":"integer","enum":[0,1],"title":"OperationType","description":"Operation type (0=Call, 1=DelegateCall)","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.operation","typeLabel":"enum\u003cinteger>"},"safeTxGas":{"type":"string","title":"Safetxgas","description":"Gas for the transaction","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.safeTxGas","typeLabel":"string"},"baseGas":{"type":"string","title":"Basegas","description":"Base gas costs","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.baseGas","typeLabel":"string"},"gasPrice":{"type":"string","title":"Gasprice","description":"Gas price","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.gasPrice","typeLabel":"string"},"gasToken":{"type":"string","title":"Gastoken","description":"Token address for gas payment","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.gasToken","typeLabel":"string"},"refundReceiver":{"type":"string","title":"Refundreceiver","description":"Address to receive gas refund","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.refundReceiver","typeLabel":"string"},"nonce":{"type":"string","title":"Nonce","description":"Transaction nonce","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message.nonce","typeLabel":"string"}},"type":"object","required":["to","value","data","operation","safeTxGas","baseGas","gasPrice","gasToken","refundReceiver","nonce"],"title":"SafeTxMessage","description":"Safe transaction message data","isRequired":true,"uniqueKey":"eip_712.oneOf.0.message","typeLabel":"SafeTxMessage · object"}},"uniqueKey":"eip_712.oneOf.0","typeLabel":"BatchedSafeOperationsResponse · object"},{"type":"null","description":"EIP-712 typed data for gas-sponsored execution. Present when gas_sponsorship=true. Owner must sign and submit to /gas_sponsorship/prepare.","uniqueKey":"eip_712.oneOf.1","typeLabel":"null"}],"uniqueKey":"eip_712","typeLabel":"BatchedSafeOperationsResponse · object | null"},"swap_provider":{"oneOf":[{"type":"string","title":"Swap Provider","description":"Which route priced the bundle's V2_SWAP action(s): 'market' (a DEX aggregator, slippage-bounded) or 'firm' (a zero-slippage quote that fills exactly or reverts; the only route on HyperEVM). Null when the bundle carries no swap.","enum":["market","firm"],"uniqueKey":"swap_provider.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","title":"Swap Provider","description":"Which route priced the bundle's V2_SWAP action(s): 'market' (a DEX aggregator, slippage-bounded) or 'firm' (a zero-slippage quote that fills exactly or reverts; the only route on HyperEVM). Null when the bundle carries no swap.","uniqueKey":"swap_provider.oneOf.1","typeLabel":"null"}],"uniqueKey":"swap_provider","typeLabel":"enum\u003cstring> | null"},"quote_expires_at":{"oneOf":[{"type":"string","title":"Quote Expires At","description":"Deadline of the firm swap quote inside the bundle. The transaction (or the sponsor's broadcast of the signed typed data) must be included before it or the bundle reverts on-chain; rebuild after it passes. Null unless a swap action was firm-priced.","format":"date-time","uniqueKey":"quote_expires_at.oneOf.0","typeLabel":"string\u003cdate-time>"},{"type":"null","title":"Quote Expires At","description":"Deadline of the firm swap quote inside the bundle. The transaction (or the sponsor's broadcast of the signed typed data) must be included before it or the bundle reverts on-chain; rebuild after it passes. Null unless a swap action was firm-priced.","uniqueKey":"quote_expires_at.oneOf.1","typeLabel":"null"}],"uniqueKey":"quote_expires_at","typeLabel":"string\u003cdate-time> | null"},"settlement":{"type":"string","enum":["instant","async"],"title":"Settlement","description":"'async' when the bundle contains a MAPLE WITHDRAW: that action only requests the redemption from Maple's withdrawal queue, and the underlying asset arrives in the product account when Maple processes the queue (typically within minutes, at most 30 days). Its proceeds are not available to later actions in the same bundle. 'instant' otherwise.","default":"instant","uniqueKey":"settlement","typeLabel":"enum\u003cstring>"},"poll_endpoint":{"oneOf":[{"type":"string","title":"Poll Endpoint","description":"When `settlement` is 'async', the endpoint that shows the pending redemption until it settles. Null otherwise.","uniqueKey":"poll_endpoint.oneOf.0","typeLabel":"string"},{"type":"null","title":"Poll Endpoint","description":"When `settlement` is 'async', the endpoint that shows the pending redemption until it settles. Null otherwise.","uniqueKey":"poll_endpoint.oneOf.1","typeLabel":"null"}],"uniqueKey":"poll_endpoint","typeLabel":"string | null"}},"type":"object","required":["actions_count"],"title":"V2BundleResponse","example":{"actions_count":3,"settlement":"instant","swap_provider":"market","transaction":{"chainId":"0x2105","data":"0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020","from":"0x4A83b4413CF41C3244027e1590E35a0F48403F0c","gas":"0xf4240","maxFeePerGas":"0x59682f00","maxPriorityFeePerGas":"0x3b9aca00","nonce":"0x5","to":"0x6B90E8B4E3E971E74C1A47a3a20976377E2dB4b1","value":"0x0"}},"uniqueKey":"","typeLabel":"V2BundleResponse · object"},"examples":{"Example":{"title":"Example","value":{"actions_count":3,"settlement":"instant","swap_provider":"market","transaction":{"chainId":"0x2105","data":"0x8d80ff0a0000000000000000000000000000000000000000000000000000000000000020","from":"0x4A83b4413CF41C3244027e1590E35a0F48403F0c","gas":"0xf4240","maxFeePerGas":"0x59682f00","maxPriorityFeePerGas":"0x3b9aca00","nonce":"0x5","to":"0x6B90E8B4E3E971E74C1A47a3a20976377E2dB4b1","value":"0x0"}}}},"exampleType":"generated"}},"exampleType":"generated"},"fe9300b9-43cb-473e-961c-8c24eb29fa84":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"type":"array","title":"Location","isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","title":"Message","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","title":"Error Type","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError","uniqueKey":"detail.items.[INDEX]","typeLabel":"ValidationError · object"},"type":"array","title":"Detail","uniqueKey":"detail","typeLabel":"ValidationError · object[]"}},"type":"object","title":"HTTPValidationError","uniqueKey":"","typeLabel":"HTTPValidationError · object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"eff03a3b-02d2-4605-ba22-1d398ee6cda2":{"ApiKeyAuth":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your Compass API Key. Get your key [here](https://www.compasslabs.ai/dashboard).","scopes":[],"schemeName":"ApiKeyAuth"}}},"servers":{"f38a9aa6-5bf5-4e43-8411-67293530b947":{"url":"https://api.compasslabs.ai","description":"Production server"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Your Compass API Key. Get your key [here](https://www.compasslabs.ai/dashboard).","scopes":[],"schemeName":"ApiKeyAuth"},"schema":{"title":"x-api-key","type":"string","description":"Your Compass API Key. Get your key [here](https://www.compasslabs.ai/dashboard).","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"ApiKeyAuth","name":"x-api-key"}],"title":"ApiKeyAuth"}]},"originalFileLocation":"v2/combined_spec.json"},"subdomain":"compasslabs-f07467e0","siteName":"Compass API Docs","title":"Execute multiple earn actions - Compass API Docs","navMaps":{"firstHrefInVersion":{"V2":{"href":"/v2/api-reference/earn/execute-multiple-earn-actions","matchLevel":0},"V1":{"href":"/v1/api-reference/aave-v3/aave-supported-tokens","matchLevel":2}},"firstHrefInLanguage":{}},"lastModified":"2026-10-27T13:28:45.462Z","originalFileLocation":"v2/api-reference/earn/execute-multiple-earn-actions.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";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=\"light\"}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=\"Combine multiple actions into a single atomic transaction. Bundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together. Example: Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction. Fees: Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint. Gas sponsorship: Set gas_sponsorship=true to receive EIP-712 typed data. Owner signs the typed data, then submit to /gas_sponsorship/prepare.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Compass API Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/compasslabs-f07467e0/CejAEahS9T_GZmf_/_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/compasslabs-f07467e0/CejAEahS9T_GZmf_/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/compasslabs-f07467e0/CejAEahS9T_GZmf_/_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/compasslabs-f07467e0/CejAEahS9T_GZmf_/_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/compasslabs-f07467e0/CejAEahS9T_GZmf_/_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/compasslabs-f07467e0/CejAEahS9T_GZmf_/_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/compasslabs-f07467e0/CejAEahS9T_GZmf_/_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/compasslabs-f07467e0/CejAEahS9T_GZmf_/_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/compasslabs-f07467e0/CejAEahS9T_GZmf_/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Execute multiple earn actions - Compass API Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Combine multiple actions into a single atomic transaction. Bundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together. Example: Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction. Fees: Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint. Gas sponsorship: Set gas_sponsorship=true to receive EIP-712 typed data. Owner signs the typed data, then submit to /gas_sponsorship/prepare.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Compass API Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://compasslabs-f07467e0.mintlify.app/_mintlify/api/og/v2?division=Earn\u0026amp;title=Execute+multiple+earn+actions\u0026amp;description=Combine+multiple+actions+into+a+single+atomic+transaction.%0A%0ABundle+swaps+and+venue+deposits%2Fwithdrawals+into+one+transaction+executed+through+the+Earn+Account.+\u0026amp;theme=2e6095874381ba0da4ce66d4\u0026amp;signature=dffc68476834c6092dfd981767635fa2f468b49b123f1e2e286b7859620031ac\">\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=\"Execute multiple earn actions - Compass API Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Combine multiple actions into a single atomic transaction. Bundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together. Example: Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction. Fees: Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint. Gas sponsorship: Set gas_sponsorship=true to receive EIP-712 typed data. Owner signs the typed data, then submit to /gas_sponsorship/prepare.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://compasslabs-f07467e0.mintlify.app/_mintlify/api/og/v2?division=Earn\u0026amp;title=Execute+multiple+earn+actions\u0026amp;description=Combine+multiple+actions+into+a+single+atomic+transaction.%0A%0ABundle+swaps+and+venue+deposits%2Fwithdrawals+into+one+transaction+executed+through+the+Earn+Account.+\u0026amp;theme=2e6095874381ba0da4ce66d4\u0026amp;signature=dffc68476834c6092dfd981767635fa2f468b49b123f1e2e286b7859620031ac\">\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/compasslabs-f07467e0/CejAEahS9T_GZmf_/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Compass API Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0284c7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v2/api-reference/earn/execute-multiple-earn-actions.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.compasslabs.ai/#organization\",\"name\":\"Compass API Docs\",\"url\":\"https://docs.compasslabs.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/compasslabs-f07467e0/x2NrFgZ7soJbH6sc/logo/light.svg?fit=max\u0026auto=format\u0026n=x2NrFgZ7soJbH6sc\u0026q=85\u0026s=80a04b06674000990914306c6a833cb9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.compasslabs.ai#website\",\"name\":\"Compass API Docs\",\"url\":\"https://docs.compasslabs.ai\",\"publisher\":{\"@id\":\"https://docs.compasslabs.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions#webpage\",\"url\":\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions\",\"name\":\"Execute multiple earn actions\",\"description\":\"Combine multiple actions into a single atomic transaction. Bundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together. Example: Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction. Fees: Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint. Gas sponsorship: Set gas_sponsorship=true to receive EIP-712 typed data. Owner signs the typed data, then submit to /gas_sponsorship/prepare.\",\"dateModified\":\"2026-10-27T13:28:45.462Z\",\"isPartOf\":{\"@id\":\"https://docs.compasslabs.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.compasslabs.ai/v2/api-reference/gas-sponsorship/prepare-gas-sponsored-transaction\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Earn\",\"item\":\"https://docs.compasslabs.ai/v2/api-reference/earn/list-earn-positions\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Execute multiple earn actions\",\"item\":\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions#apireference\",\"headline\":\"Execute multiple earn actions\",\"name\":\"Execute multiple earn actions\",\"description\":\"Combine multiple actions into a single atomic transaction. Bundle swaps and venue deposits/withdrawals into one transaction executed through the Earn Account. This saves gas compared to executing actions separately and ensures all actions succeed or fail together. Example: Swap AUSD to USDC, then deposit USDC into a vault - all in one transaction. Fees: Manage actions (deposits/withdrawals) support optional fee configuration, same as the standalone manage endpoint. Gas sponsorship: Set gas_sponsorship=true to receive EIP-712 typed data. Owner signs the typed data, then submit to /gas_sponsorship/prepare.\",\"url\":\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions\",\"mainEntityOfPage\":{\"@id\":\"https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions#webpage\"},\"dateModified\":\"2026-10-27T13:28:45.462Z\",\"publisher\":{\"@id\":\"https://docs.compasslabs.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.compasslabs.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Compass API Docs\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Compass API Docs","nav":{"global":{"tabs":[],"anchors":[]},"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/v2/get_started/overview"}]},{"tab":"API Reference","versions":[{"version":"V2","groups":[{"group":"API Reference","pages":[{"group":"Gas Sponsorship","pages":[{"title":"Prepare gas-sponsored transaction","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/gas_sponsorship/prepare","href":"/v2/api-reference/gas-sponsorship/prepare-gas-sponsored-transaction"},{"title":"Approve token transfer","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/gas_sponsorship/approve_transfer","href":"/v2/api-reference/gas-sponsorship/approve-token-transfer"}]},{"group":"Earn","pages":[{"title":"List earn positions","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/earn/positions","href":"/v2/api-reference/earn/list-earn-positions"},{"title":"List earn positions across all chains","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/earn/positions_all","href":"/v2/api-reference/earn/list-earn-positions-across-all-chains"},{"title":"List vaults","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/earn/vaults","href":"/v2/api-reference/earn/list-vaults"},{"title":"List aave markets","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/earn/aave_markets","href":"/v2/api-reference/earn/list-aave-markets"},{"title":"List pendle markets","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/earn/pendle_markets","href":"/v2/api-reference/earn/list-pendle-markets"},{"title":"List maple pools","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/earn/maple_pools","href":"/v2/api-reference/earn/list-maple-pools"},{"title":"Quote a swap","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/earn/swap_quote","href":"/v2/api-reference/earn/quote-a-swap"},{"title":"Get token balances","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/earn/balances","href":"/v2/api-reference/earn/get-token-balances"},{"title":"Create earn account","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/earn/create_account","href":"/v2/api-reference/earn/create-earn-account"},{"title":"Transfer tokens to/from account","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/earn/transfer","href":"/v2/api-reference/earn/transfer-tokens-tofrom-account"},{"title":"Manage earn position","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/earn/manage","href":"/v2/api-reference/earn/manage-earn-position"},{"title":"Swap tokens","description":"Swap one token for another inside an Earn Account.\n\nExchanges tokens the Earn Account already holds in a single atomic\ntransaction, so funds never leave it, and can be chained with other actions\nthrough the [bundle endpoint](https://docs.compasslabs.ai/v2/api-reference/earn/execute-multiple-earn-actions)\n(for example, swap ETH to USDC and deposit the USDC into a vault at once).\nReturns an unsigned transaction to sign and the expected output amount.","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/earn/swap","href":"/v2/api-reference/earn/swap-tokens"},{"title":"Execute multiple earn actions","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/earn/bundle","href":"/v2/api-reference/earn/execute-multiple-earn-actions"}]},{"group":"Bridge","pages":[{"title":"Initiate USDC bridging","description":"Bridge USDC to any chain for any Product account using Circle's CCTP Protocol.\n\n**Transfer modes:**\n- `standard` (default): ~15-19 minute transfers, **free** (no fee)\n- `fast`: ~30 second transfers, requires a small fee (typically ~0.01%)\n\nThe fee for fast mode is automatically calculated based on Circle's current rates.\n\n**Flow:**\n1. Call this endpoint with `gas_sponsorship=false` to get an unsigned transaction,\n or `gas_sponsorship=true` to get EIP-712 typed data for gas-sponsored execution\n2. Owner signs the transaction or typed data\n3. Broadcast the transaction on the source chain (or submit to `/gas_sponsorship/prepare`)\n4. Wait for Circle's attestation service to attest the burn\n5. Call the mint endpoint to receive USDC on the destination chain \n\n**Supported chains:**\n- Ethereum (domain 0)\n- Arbitrum (domain 3)\n- Base (domain 6)\n\n**Note:** The USDC must already be deposited in the Product Account. If approval is needed\nfor the TokenMessengerV2 contract, it will be included in the transaction automatically.","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/cctp/burn","href":"/v2/api-reference/bridge/initiate-usdc-bridging"},{"title":"Complete USDC bridging","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/cctp/mint","href":"/v2/api-reference/bridge/complete-usdc-bridging"}]},{"group":"Credit","pages":[{"title":"List credit positions","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/credit/positions","href":"/v2/api-reference/credit/list-credit-positions"},{"title":"Get credit account token balances","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/credit/balances","href":"/v2/api-reference/credit/get-credit-account-token-balances"},{"title":"List looped (leveraged) credit positions","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/credit/looped_positions","href":"/v2/api-reference/credit/list-looped-leveraged-credit-positions"},{"title":"List curated Euler markets","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/credit/euler_markets","href":"/v2/api-reference/credit/list-curated-euler-markets"},{"title":"List curated Morpho markets","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/credit/morpho_markets","href":"/v2/api-reference/credit/list-curated-morpho-markets"},{"title":"Create credit account","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/credit/create_account","href":"/v2/api-reference/credit/create-credit-account"},{"title":"Borrow against collateral","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/credit/borrow","href":"/v2/api-reference/credit/borrow-against-collateral"},{"title":"Open a leveraged loop","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/credit/loop","href":"/v2/api-reference/credit/open-a-leveraged-loop"},{"title":"Unwind a leveraged loop","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/credit/unloop","href":"/v2/api-reference/credit/unwind-a-leveraged-loop"},{"title":"Rebalance the leveraged credit book","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/credit/rebalance","href":"/v2/api-reference/credit/rebalance-the-leveraged-credit-book"},{"title":"Transfer tokens to/from Credit Account","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/credit/transfer","href":"/v2/api-reference/credit/transfer-tokens-tofrom-credit-account"},{"title":"Swap tokens","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/credit/swap","href":"/v2/api-reference/credit/swap-tokens"},{"title":"Repay debt and withdraw collateral","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/credit/repay","href":"/v2/api-reference/credit/repay-debt-and-withdraw-collateral"},{"title":"Execute multiple credit actions","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/credit/bundle","href":"/v2/api-reference/credit/execute-multiple-credit-actions"}]},{"group":"Perpetual Trading","pages":[{"title":"List perpetual trading markets","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/perpetual_trading/opportunities","href":"/v2/api-reference/perpetual-trading/list-perpetual-trading-markets"},{"title":"List perpetual trading positions","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/perpetual_trading/positions","href":"/v2/api-reference/perpetual-trading/list-perpetual-trading-positions"},{"title":"Get OHLCV candles","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/perpetual_trading/candles","href":"/v2/api-reference/perpetual-trading/get-ohlcv-candles"},{"title":"Aggregated Hyperliquid activity for a user","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/perpetual_trading/activity","href":"/v2/api-reference/perpetual-trading/aggregated-hyperliquid-activity-for-a-user"},{"title":"Deposit USDC to perpetual trading account","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/deposit","href":"/v2/api-reference/perpetual-trading/deposit-usdc-to-perpetual-trading-account"},{"title":"Build the Bridge2 deposit tx from a signed permit","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/deposit/sponsor_prepare","href":"/v2/api-reference/perpetual-trading/build-the-bridge2-deposit-tx-from-a-signed-permit"},{"title":"Withdraw USDC from perpetual trading account","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/withdraw","href":"/v2/api-reference/perpetual-trading/withdraw-usdc-from-perpetual-trading-account"},{"title":"Place market order","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/market_order","href":"/v2/api-reference/perpetual-trading/place-market-order"},{"title":"Place limit order","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/limit_order","href":"/v2/api-reference/perpetual-trading/place-limit-order"},{"title":"Cancel order","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/cancel_order","href":"/v2/api-reference/perpetual-trading/cancel-order"},{"title":"Execute signed action","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/execute","href":"/v2/api-reference/perpetual-trading/execute-signed-action"},{"title":"Approve builder fee","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/approve_builder_fee","href":"/v2/api-reference/perpetual-trading/approve-builder-fee"},{"title":"Enable unified account mode","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/enable_unified_account","href":"/v2/api-reference/perpetual-trading/enable-unified-account-mode"},{"title":"Ensure 1x cross leverage","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/ensure_leverage","href":"/v2/api-reference/perpetual-trading/ensure-1x-cross-leverage"},{"title":"Set leverage (defaults to market maximum)","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/perpetual_trading/set_leverage","href":"/v2/api-reference/perpetual-trading/set-leverage-defaults-to-market-maximum"}]},{"group":"Tokenized Assets","pages":[{"title":"List markets","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/tokenized_assets/markets","href":"/v2/api-reference/tokenized-assets/list-markets"},{"title":"Get a market","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/tokenized_assets/markets/{symbol}","href":"/v2/api-reference/tokenized-assets/get-a-market"},{"title":"List positions","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/tokenized_assets/positions","href":"/v2/api-reference/tokenized-assets/list-positions"},{"title":"Get token balances","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/tokenized_assets/balances","href":"/v2/api-reference/tokenized-assets/get-token-balances"},{"title":"Get order status","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/tokenized_assets/order/{order_hash}","href":"/v2/api-reference/tokenized-assets/get-order-status"},{"title":"List redemption requests","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json get /v2/tokenized_assets/redemptions","href":"/v2/api-reference/tokenized-assets/list-redemption-requests"},{"title":"Create account","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/tokenized_assets/create_account","href":"/v2/api-reference/tokenized-assets/create-account"},{"title":"Transfer tokens to/from account","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/tokenized_assets/transfer","href":"/v2/api-reference/tokenized-assets/transfer-tokens-tofrom-account"},{"title":"Quote an order","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/tokenized_assets/quote","href":"/v2/api-reference/tokenized-assets/quote-an-order"},{"title":"Build an order","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/tokenized_assets/order","href":"/v2/api-reference/tokenized-assets/build-an-order"},{"title":"Submit a signed order","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/tokenized_assets/order/submit","href":"/v2/api-reference/tokenized-assets/submit-a-signed-order"},{"title":"Cancel an order","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/tokenized_assets/order/{order_hash}/cancel","href":"/v2/api-reference/tokenized-assets/cancel-an-order"},{"title":"Charge a partner fee","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/tokenized_assets/order/{order_hash}/charge_fee","href":"/v2/api-reference/tokenized-assets/charge-a-partner-fee"},{"title":"Buy an RWA yield token","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/tokenized_assets/transact/buy","href":"/v2/api-reference/tokenized-assets/buy-an-rwa-yield-token"},{"title":"Sell an RWA yield token","deprecated":null,"version":null,"openapi":"/v2/combined_spec.json post /v2/tokenized_assets/transact/sell","href":"/v2/api-reference/tokenized-assets/sell-an-rwa-yield-token"}]}]}]},{"version":"V1","pages":[{"title":"V1","href":"/v1/api-reference/aave-v3/aave-supported-tokens"}]}]}]},"title":"Execute multiple earn actions - Compass API Docs","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DmVyH30O.js","utils-BHQqGGOd.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-CD-E4BIt.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp5Lq9Ds.js","snippetPresets-C4xAVCFP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CgXVLxUC.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BF8I5oUf.js","shallow-Byd0lWnC.js","getApiPlaygroundDisplay-BGOZG1OK.js","CodeSnippet-CpvQL0CY.js","CodeSnippets-B8wkBKXa.js","Page-CBCH2P7b.js","getPastedJson-Ry3scI3Y.js","icon-D7a9HcdD.js","MethodPill-CJ8pmHhz.js","DuplicateIcon-rh1HJF0t.js","createIcon-DvGznqYs.js","DynamicMarkdown-Cc6AuSHS.js","SectionHeading-B4A0S-ep.js","axios-vUo_bRtp.js","Markdown-Cc16CX65.js","clsx-Cs6nMGht.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-zbf22OZA.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-C_fs-y5n.js"]}