Skip to main content
POST
/
v2
/
earn
/
bundle
Python (SDK)
from compass_api_sdk import CompassAPI, models


with CompassAPI(
    api_key_auth="<YOUR_API_KEY_HERE>",
) as compass_api:

    res = compass_api.earn.earn_bundle(owner="0x0B8A11cF0679F163087802c4428F640cA7C89926", chain=models.Chain.ETHEREUM, actions=[
        {
            "body": {
                "action_type": "V2_SWAP",
                "token_in": "USDC",
                "token_out": "AUSD",
                "amount_in": "100",
                "slippage": "0.5",
            },
        },
        {
            "body": {
                "action_type": "V2_MANAGE",
                "venue": {
                    "type": "VAULT",
                    "vault_address": "0x1B4cd53a1A8e5F50aB6320EF34E5fB4D3df7B6f6",
                },
                "action": models.EarnManageParamsAction.DEPOSIT,
                "amount": "ALL",
            },
        },
    ], gas_sponsorship=False)

    # Handle response
    print(res)
{
  "actions_count": 123,
  "transaction": {
    "chainId": "<string>",
    "data": "<string>",
    "from": "<string>",
    "gas": "<string>",
    "to": "<string>",
    "value": "<string>",
    "nonce": "<string>",
    "maxFeePerGas": "<string>",
    "maxPriorityFeePerGas": "<string>"
  },
  "eip_712": {
    "domain": {
      "chainId": 123,
      "verifyingContract": "<string>"
    },
    "types": {
      "EIP712Domain": [
        {
          "name": "<string>",
          "type": "<string>"
        }
      ],
      "SafeTx": [
        {
          "name": "<string>",
          "type": "<string>"
        }
      ]
    },
    "primaryType": "<string>",
    "message": {
      "to": "<string>",
      "value": "<string>",
      "data": "<string>",
      "operation": 0,
      "safeTxGas": "<string>",
      "baseGas": "<string>",
      "gasPrice": "<string>",
      "gasToken": "<string>",
      "refundReceiver": "<string>",
      "nonce": "<string>"
    }
  }
}

Authorizations

x-api-key
string
header
required

Your Compass API Key. Get your key here.

Body

application/json
owner
string
required

The owner's wallet address that controls the Earn Account.

chain
enum<string>
required

Target blockchain network where the bundled actions will execute.

Available options:
base,
ethereum,
arbitrum
actions
V2UserOperation · object[]
required

List of actions to bundle. Actions are executed in order.

Minimum array length: 1
gas_sponsorship
boolean
default:false

If true, returns EIP-712 typed data for gas sponsorship. The owner must sign this data and submit to /gas_sponsorship/prepare.

Response

Successful Response

actions_count
integer
required

Number of individual transactions bundled in this execution.

transaction
UnsignedTransaction · object

Unsigned transaction for direct execution by the owner. Present when gas_sponsorship=false.

eip_712
BatchedSafeOperationsResponse · object

EIP-712 typed data for gas-sponsored execution. Present when gas_sponsorship=true. Owner must sign and submit to /gas_sponsorship/prepare.