curl --request GET \
--url https://api.jup.ag/swap/v2/order \
--header 'x-api-key: <api-key>'{
"mode": "<string>",
"inputMint": "<string>",
"outputMint": "<string>",
"inAmount": "<string>",
"outAmount": "<string>",
"inUsdValue": 123,
"outUsdValue": 123,
"priceImpact": 123,
"swapUsdValue": 123,
"otherAmountThreshold": "<string>",
"swapMode": "<string>",
"slippageBps": 123,
"priceImpactPct": "<string>",
"routePlan": [
{
"swapInfo": {
"ammKey": "<string>",
"label": "<string>",
"inputMint": "<string>",
"outputMint": "<string>",
"inAmount": "<string>",
"outAmount": "<string>"
},
"percent": 123,
"bps": 123,
"usdValue": 123
}
],
"referralAccount": "<string>",
"feeMint": "<string>",
"feeBps": 123,
"platformFee": {
"amount": "<string>",
"feeBps": 123,
"feeMint": "<string>"
},
"signatureFeeLamports": 123,
"signatureFeePayer": "<string>",
"prioritizationFeeLamports": 123,
"prioritizationFeePayer": "<string>",
"rentFeeLamports": 123,
"rentFeePayer": "<string>",
"transaction": "<string>",
"lastValidBlockHeight": "<string>",
"gasless": true,
"requestId": "<string>",
"totalTime": 123,
"taker": "<string>",
"quoteId": "<string>",
"maker": "<string>",
"expireAt": "<string>",
"errorCode": 123,
"errorMessage": "<string>",
"error": "<string>"
}Get Order
Get a swap quote and assembled transaction
curl --request GET \
--url https://api.jup.ag/swap/v2/order \
--header 'x-api-key: <api-key>'{
"mode": "<string>",
"inputMint": "<string>",
"outputMint": "<string>",
"inAmount": "<string>",
"outAmount": "<string>",
"inUsdValue": 123,
"outUsdValue": 123,
"priceImpact": 123,
"swapUsdValue": 123,
"otherAmountThreshold": "<string>",
"swapMode": "<string>",
"slippageBps": 123,
"priceImpactPct": "<string>",
"routePlan": [
{
"swapInfo": {
"ammKey": "<string>",
"label": "<string>",
"inputMint": "<string>",
"outputMint": "<string>",
"inAmount": "<string>",
"outAmount": "<string>"
},
"percent": 123,
"bps": 123,
"usdValue": 123
}
],
"referralAccount": "<string>",
"feeMint": "<string>",
"feeBps": 123,
"platformFee": {
"amount": "<string>",
"feeBps": 123,
"feeMint": "<string>"
},
"signatureFeeLamports": 123,
"signatureFeePayer": "<string>",
"prioritizationFeeLamports": 123,
"prioritizationFeePayer": "<string>",
"rentFeeLamports": 123,
"rentFeePayer": "<string>",
"transaction": "<string>",
"lastValidBlockHeight": "<string>",
"gasless": true,
"requestId": "<string>",
"totalTime": 123,
"taker": "<string>",
"quoteId": "<string>",
"maker": "<string>",
"expireAt": "<string>",
"errorCode": 123,
"errorMessage": "<string>",
"error": "<string>"
}Authorizations
Get API key via https://developers.jup.ag/portal
Query Parameters
The mint address of the input token
The mint address of the output token
The amount to swap in the smallest unit of the input token
- The public key of the wallet that will sign the transaction
- If not provided, the response will contain a quote but no transaction
- Must be present if you intend to sign and execute the transaction via
/execute
- The public key of the account that will receive the output tokens
- Must differ from
taker - Expects a wallet address, not a token account
- For non-SOL output: tokens are sent to the receiver's associated token account (ATA). If the ATA is not initialised, a create ATA instruction is added to the transaction
- For SOL output: native SOL is transferred directly to the receiver
- Does not support destination wSOL token accounts
- Swap mode. Currently only
ExactInis supported.
ExactIn - Slippage tolerance in basis points (0-10000)
- If not set, Jupiter automatically determines an appropriate slippage
0 <= x <= 10000- Address of your referral account for the Jupiter referral project
- Must be used together with
referralFee - Disables RFQ routing (JupiterZ)
- See the Referral Program for setup
- Referral fee in basis points (50-255)
- Must be used together with
referralAccount
50 <= x <= 255- The public key of an account that will cover gas-related fees (signature fees, priority fees, and rent) on behalf of the taker
- Has no effect when set equal to
taker— must be a different wallet to activate integrator-sponsored gas - Enabling this restricts routing to Metis (JupiterZ is disabled when an integrator payer is set)
- Priority fee in lamports
- If not set, Jupiter automatically determines an appropriate priority fee
- Setting this overrides the automatic optimisation
- Jito MEV tip in lamports for faster block inclusion
- Fee cap strategy:
maxCaptreats the fee as a maximum,exactFeeuses the exact amount - Ignored if neither
priorityFeeLamportsnorjitoTipLamportsare set
maxCap, exactFee - Comma-separated list of routers to exclude
- Available routers:
metis,jupiterz,dflow,okx
- Comma-separated list of DEXes to exclude from the Metis router
- Important: This only affects the Metis router, not other routers
- For example:
excludeDexes=Raydium,Orca+V2,Meteora+DLMM
Response
Quote with optional assembled transaction
"ultra" or "manual" based on parameters used
Price impact as a decimal (e.g. -0.001 = -0.1%)
Minimum output amount after slippage
Deprecated: use priceImpact instead
Show child attributes
Show child attributes
Total fee rate charged for the swap in basis points. This includes the Jupiter platform fee plus any additional charges, such as gasless support cost recoup.
Show child attributes
Show child attributes
Includes priority fees and tips (Jito, Nozomi)
Estimated rent fee
Deprecated: use router instead
aggregator, rfq, aggregator+rfq, dflow, okx Which router won the quote
metis, jupiterz, dflow, okx - Base64-encoded transaction. Null if taker is not provided.
- Empty string if taker is provided but transaction could not be built (check errorCode).
True when signature and priority fees are paid by a wallet other than the taker. Set by three independent paths:
- Automatic Jupiter sponsorship:
signatureFeePayer = gasTzr94Pmp4Gf8vknQnqxeYxdgwFjbgdJa4msYRpnB - JupiterZ market maker:
signatureFeePayeris the MM address (varies per quote); Jupiter's gas wallet pays the rent to create the taker's output token account if not yet initialised - Integrator payer:
signatureFeePayeris yourpayerparameter For a deterministic opt-out, checksignatureFeePayer == takeron every response.
Unique request ID. Pass this to /execute.
Response time in milliseconds
Quote ID for RFQ swaps
Market maker address for RFQ swaps
Quote expiration timestamp for RFQ swaps
Present when taker is defined and transaction is the empty string. The router quoted a price but could not build a transaction. Match on router + errorCode to identify the error.
Aggregator routers (router is metis, dflow, okx):
- 1: Insufficient funds
- 2: Insufficient SOL for gas
- 3: Swap below minimum for gasless
JupiterZ router (router is jupiterz):
- 1: Insufficient balance to fund the swap
- 2: Missing associated token account
- 3: Quote could not be built into a transaction
Human-readable error description. Present when taker is defined and transaction is the empty string.
Match on router + errorCode instead of this string, as the message text may be parameterised.
Duplicate of errorMessage for backwards compatibility
Was this page helpful?
