Hi Jupiter team,
I'm using the V6 Swap API (/quote endpoint) for Solana trades, and I've noticed some consistent behavior around trade splitting that I'd like to understand better. Specifically:
Trade Splitting on Larger Amounts:
For small input amounts (e.g., under 1000 USDC), the API often returns a simple route without splitting (i.e., all steps have "percent": 100).
But when the input exceeds around 1000 USDC, it starts splitting the amount across multiple routes or DEXes (e.g., 11% + 89% in parallel paths).
Example with inputMint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (USDC), outputMint: JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN (JUP), inAmount: 1000000000 (1000 USDC):
"routePlan": [
{
"swapInfo": {
"ammKey": "FksffEqnBRixYGR791Qw2MgdU7zNCpHVFYBL4Fa4qVuH",
"label": "HumidiFi",
"inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"outputMint": "So11111111111111111111111111111111111111112",
"inAmount": "110000000",
"outAmount": "871037494",
"feeAmount": "0",
"feeMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
},
"percent": 11,
"bps": 1100
},
{
"swapInfo": {
"ammKey": "C1MgLojNLWBKADvu9BHdtgzz1oZX4dZ5zGdGcgvvW8Wz",
"label": "Whirlpool",
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"inAmount": "871037494",
"outAmount": "570375124",
"feeAmount": "435519",
"feeMint": "So11111111111111111111111111111111111111112"
},
"percent": 100,
"bps": 10000
},
{
"swapInfo": {
"ammKey": "hKgG7iEDRFNsJSwLYqz8ETHuZwzh6qMMLow8VXa8pLm",
"label": "HumidiFi",
"inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"outputMint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"inAmount": "890000000",
"outAmount": "4614714580",
"feeAmount": "0",
"feeMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
},
"percent": 89,
"bps": 8900
}
],
"contextSlot": 388533990,
"timeTaken": 0.073769075,
Hi Jupiter team,
I'm using the V6 Swap API (/quote endpoint) for Solana trades, and I've noticed some consistent behavior around trade splitting that I'd like to understand better. Specifically:
Trade Splitting on Larger Amounts:
For small input amounts (e.g., under 1000 USDC), the API often returns a simple route without splitting (i.e., all steps have "percent": 100).
But when the input exceeds around 1000 USDC, it starts splitting the amount across multiple routes or DEXes (e.g., 11% + 89% in parallel paths).
Example with inputMint: EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v (USDC), outputMint: JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN (JUP), inAmount: 1000000000 (1000 USDC):
"routePlan": [
{
"swapInfo": {
"ammKey": "FksffEqnBRixYGR791Qw2MgdU7zNCpHVFYBL4Fa4qVuH",
"label": "HumidiFi",
"inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"outputMint": "So11111111111111111111111111111111111111112",
"inAmount": "110000000",
"outAmount": "871037494",
"feeAmount": "0",
"feeMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
},
"percent": 11,
"bps": 1100
},
{
"swapInfo": {
"ammKey": "C1MgLojNLWBKADvu9BHdtgzz1oZX4dZ5zGdGcgvvW8Wz",
"label": "Whirlpool",
"inputMint": "So11111111111111111111111111111111111111112",
"outputMint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"inAmount": "871037494",
"outAmount": "570375124",
"feeAmount": "435519",
"feeMint": "So11111111111111111111111111111111111111112"
},
"percent": 100,
"bps": 10000
},
{
"swapInfo": {
"ammKey": "hKgG7iEDRFNsJSwLYqz8ETHuZwzh6qMMLow8VXa8pLm",
"label": "HumidiFi",
"inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"outputMint": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"inAmount": "890000000",
"outAmount": "4614714580",
"feeAmount": "0",
"feeMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
},
"percent": 89,
"bps": 8900
}
],
"contextSlot": 388533990,
"timeTaken": 0.073769075,