Swap
swap
Request for a base64-encoded unsigned swap transaction based on the /quote response
:::note Refer to Swap API doc for more information :::
post/swap
Request body
userPublicKeystring required
wrapAndUnwrapSolboolean
- To automatically wrap/unwrap SOL in the transaction
- If false, it will use wSOL token account
- Parameter will be ignored if destinationTokenAccount is set because the destinationTokenAccount may belong to a different user that we have no authority to close
useSharedAccountsboolean
- The default is determined dynamically by the routing engine, allowing us to optimize for compute units, etc
- This enables the usage of shared program accounts, this is essential as complex routing will require multiple intermediate token accounts which the user might not have
- If true, you do not need to handle the creation of intermediate token accounts for the user
- Do note, shared accounts route will fail on some new AMMs (low liquidity token)
feeAccountstring
- An token account that will be used to collect fees
- The mint of the token account can only be either the input or output mint of the swap
- You no longer are required to use the Referral Program
- See Add Fees guide for more details
trackingAccountstring
- Specify any public key that belongs to you to track the transactions
- Useful for integrators to get all the swap transactions from this public key
- Query the data using a block explorer like Solscan/SolanaFM or query like Dune/Flipside
asLegacyTransactionboolean
- Builds a legacy transaction rather than the default versioned transaction
- Used together with asLegacyTransaction in /quote, otherwise the transaction might be too large
destinationTokenAccountstring
- Public key of a token account that will be used to receive the token out of the swap
- If not provided, the signer's token account will be used
- If provided, we assume that the token account is already initialized
dynamicComputeUnitLimitboolean
- When enabled, it will do a swap simulation to get the compute unit used and set it in ComputeBudget's compute unit limit
- This incurs one extra RPC call to simulate this
- We recommend to enable this to estimate compute unit correctly and reduce priority fees needed or have higher chance to be included in a block
skipUserAccountsRpcCallsboolean
- When enabled, it will not do any additional RPC calls to check on required accounts
- Enable it only when you already setup all the accounts needed for the trasaction, like wrapping or unwrapping sol, or destination account is already created
dynamicSlippageboolean
- When enabled, it estimates slippage and apply it in the swap transaction directly, overwriting the slippageBps parameter in the quote response.
- Used together with dynamicSlippage in /quote, otherwise the slippage used will be the one in the /quote's slippageBps
- See notes for more information
computeUnitPriceMicroLamportsinteger
- To use an exact compute unit price to calculate priority fee
- computeUnitLimit (1400000) * computeUnitPriceMicroLamports
- We recommend using prioritizationFeeLamports and dynamicComputeUnitLimit instead of passing in your own compute unit price
blockhashSlotsToExpiryinteger
- Pass in the number of slots we want the transaction to be valid for
- Example: If you pass in 10 slots, the transaction will be valid for ~400ms * 10 = approximately 4 seconds before it expires
Response
Successful response
swapTransactionstring required
lastValidBlockHeightinteger required
prioritizationFeeLamportsinteger