Documentation Index
Fetch the complete documentation index at: https://docs.swaps.xyz/llms.txt
Use this file to discover all available pages before exploring further.
API Reference: Get Action
This guide will only cover the process of generating calldata transactions. You can submit this transaction exactly as outlined in the swap broadcast flows.
Create a cross-chain transaction
In this example, we are going to deposit 1 ETH liquidity in Aave on Base using USDC on Arbitrum.
Build your destination transaction.
We’ll use helper functions from Viem; however, you can use your preferred library.import { account, walletClient } from "./your_viem_config";
import { encodeFunctionData, parseAbiItem, Hex } from "viem";
const aaveOnBase = "0xA238Dd80C259a72e81d7e4664a9801593F98d1c5";
const ethDepositAmount = 1000000000000000000n;
const sender = "0xd8da6bf26964af9d7eed9e03e53415d37aa96045"; // generally the user's connected wallet address
const supplyTxCalldata: Hex = encodeFunctionData({
abi: parseAbiItem(
"function supply(address asset, uint256 amount, address onBehalfOf, uint16 referralCode)"
),
functionName: "supply",
args: [
"0x0000000000000000000000000000000000000000",
ethDepositAmount,
sender,
0n,
],
});
Configure the transaction request
Calldata Transaction Configconst txConfig: ActionRequest = {
actionType: "evm-calldata-tx",
sender,
srcToken: "0xaf88d065e77c8cc2239327c5edb3a432268e5831", // USDC on Arbitrum
dstToken: "0x0000000000000000000000000000000000000000", // ETH on Base
srcChainId: 42161, // Arbitrum Chain ID
dstChainId: 8453, // Base Chain ID
slippage: 100, // bps
to: aaveOnBase,
data: supplyTxCalldata,
value: ethDepositAmount,
};
Generate the transaction
Please visit the Get Action API reference for type definitions, including the ActionRequest and ActionResponse. This API endpoint will return a transaction object we will use to actually execute this transaction.async function getAction({ actionRequest }): Promise<ActionResponse> {
const url = new URL("https://api-v2.swaps.xyz/api/getAction");
Object.entries(actionRequest).forEach(([key, value]) => {
url.searchParams.set(key, String(value));
}
const requestOptions = {
method: "GET",
headers: { "x-api-key": SWAPS_API_KEY },
};
const response = await fetch(url.toString(), requestOptions);
return await response.json();
}