/quote + /swap-instructions, migrate to /build which combines both into a single call with better routing.
What changes
| Before (Metis) | After (Swap V2) |
|---|---|
Two calls: GET /swap/v1/quote then POST /swap/v1/swap-instructions | One call: GET /swap/v2/build |
Base URL: https://api.jup.ag/swap/v1 | Base URL: https://api.jup.ag/swap/v2 |
| V1 instruction format | V2 instruction format |
percent in routePlan | bps in routePlan (V2) |
Parameter mapping
Metis (/quote) | Swap V2 (/build) | Notes |
|---|---|---|
inputMint | inputMint | Same |
outputMint | outputMint | Same |
amount | amount | Same |
slippageBps | slippageBps | Same, defaults to 50 |
swapMode | - | Not supported. /build is ExactIn only. |
dexes | dexes | Same |
excludeDexes | excludeDexes | Same |
maxAccounts | maxAccounts | Same, defaults to 64 |
platformFeeBps | platformFeeBps | Same |
userPublicKey | taker | Required parameter that represents the account that is swapping |
| - | mode | New. Set to “fast” for reduced latency. |
| - | feeAccount | New. Required if platformFeeBps is positive. |
Response mapping
Metis (/swap-instructions) | Swap V2 (/build) | Notes |
|---|---|---|
computeBudgetInstructions | computeBudgetInstructions | Same structure |
setupInstructions | setupInstructions | Same structure |
swapInstruction | swapInstruction | Now V2 format |
cleanupInstruction | cleanupInstruction | Same |
| - | otherInstructions | New field |
addressLookupTableAddresses | addressesByLookupTableAddress | New format: object mapping ALT address to account arrays (no separate RPC fetch needed) |
| - | blockhashWithMetadata | New: blockhash included in response |
V1 to V2 instruction differences
V1/swap returned an assembled base64-encoded transaction. V2 /build combines the quote and instructions into a single response, similar to V1’s /swap-instructions but with the quote included. It returns individual instruction objects (computeBudgetInstructions, setupInstructions, swapInstruction, etc.) that you assemble into a transaction yourself. This gives you full control to insert custom instructions, but means you are responsible for building the v0 transaction, simulating compute units, and signing. See the Build page for the complete workflow.
Swap V2 defaults to instructionVersion=V2 or the V2 routing instructions in the Jupiter Aggregator Program. Key differences:
V2 instructions do not emit fee events. If you parse swap results by reading fee transfer events from the transaction, you need to update your parsing logic. Use the /order response fields (inputAmountResult, outputAmountResult) or parse token balance changes instead.
Route plan uses bps instead of percent. V1 uses percent (e.g. 100 for 100%), V2 uses bps (e.g. 10000 for 100%). Both fields are present in V2 responses for backwards compatibility, but bps is the canonical value.
Before and after
Before (Metis: two calls)What you gain
- Single call instead of two
- Dynamic intermediate tokens for better routing on long-tail pairs
- Long-tail token support out of the box
- Market slippage estimation built into quotes
- Address lookup tables resolved in the response (no extra RPC call)
- Blockhash included in the response
- And much more
Related
- Build for the full
/buildworkflow and code examples - Common Instructions for composing custom instructions with your swap
