swap
POSThttps://lite-api.jup.ag/swap/v1/swap
Request for a base64-encoded unsigned swap transaction based on the /quote
response
note
Refer to Swap API doc for more information
Request
- application/json
Bodyrequired
- 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 thedestinationTokenAccount
may belong to a different user that we have no authority to close - 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)
- 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
- 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
- Builds a legacy transaction rather than the default versioned transaction
- Used together with
asLegacyTransaction
in/quote
, otherwise the transaction might be too large - 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
- 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
- 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
- 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
'sslippageBps
- See notes for more information
- To use an exact compute unit price to calculate priority fee
computeUnitLimit (1400000) * computeUnitPriceMicroLamports
- We recommend using
prioritizationFeeLamports
anddynamicComputeUnitLimit
instead of passing in your own compute unit price - 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
userPublicKeystringrequired
wrapAndUnwrapSolboolean
Default value:
true
useSharedAccountsboolean
feeAccountstring
trackingAccountstring
prioritizationFeeLamports object
asLegacyTransactionboolean
Default value:
false
destinationTokenAccountstring
dynamicComputeUnitLimitboolean
Default value:
false
skipUserAccountsRpcCallsboolean
Default value:
false
dynamicSlippageboolean
Default value:
false
computeUnitPriceMicroLamportsinteger
blockhashSlotsToExpiryinteger
quoteResponse objectrequired
Responses
- 200
Successful response
- application/json
- Schema
- Example (auto)
Schema
swapTransactionstringrequired
lastValidBlockHeightintegerrequired
prioritizationFeeLamportsinteger
{
"swapTransaction": "string",
"lastValidBlockHeight": 0,
"prioritizationFeeLamports": 0
}
- curl
- nodejs
- python
- rust
- CURL
curl -L 'https://lite-api.jup.ag/swap/v1/swap' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-d '{
"userPublicKey": "jdocuPgEAjMfihABsPgKEvYtsmMzjUHeq9LX4Hvs7f3",
"quoteResponse": {
"inputMint": "So11111111111111111111111111111111111111112",
"inAmount": "1000000",
"outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"outAmount": "125630",
"otherAmountThreshold": "125002",
"swapMode": "ExactIn",
"slippageBps": 50,
"platformFee": null,
"priceImpactPct": "0",
"routePlan": [
{
"swapInfo": {
"ammKey": "AvBSC1KmFNceHpD6jyyXBV6gMXFxZ8BJJ3HVUN8kCurJ",
"label": "Obric V2",
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"inAmount": "1000000",
"outAmount": "125630",
"feeAmount": "5",
"feeMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
},
"percent": 100
}
]
},
"prioritizationFeeLamports": {
"priorityLevelWithMaxLamports": {
"maxLamports": 10000000,
"priorityLevel": "veryHigh"
}
},
"dynamicComputeUnitLimit": true
}'
ResponseClear