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

The user public key.

payerstring
  • Allow a custom payer to pay for the transaction fees and rent of token accounts
  • Note that users can close their ATAs elsewhere and have you reopen them again, your fees should account for this
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

Changes