# API Reference
Source: https://dev.jup.ag/api-reference/index
Overview of Jupiter API Reference
Today, we are sharing the coming release of Metis v7 router and its transition to an independent public good under [metis.builders](https://metis.builders).
With Metis v7 no longer serving as Jupiter's primary and sole router, we are formally separating Metis from the Jupiter umbrella. As Metis continues to be prevalent and crucial for the ecosystem, we will continue to provide best-effort support and maintenance for it.
In this post, we will be introducing changes to how Metis will be operated, how to access it, and we need your feedback.
## METIS v7
Metis is a low-level swap primitive that provides granular control over the entire transaction, designed for builders who require full authority. Metis is a decoupled toolkit offering three core components:
Ultra V3 is the culmination of months of infrastructure work, algorithm optimization, and real-world
testing in production. This release introduces Iris, Jupiter Beam, Predictive Execution, and more - fundamentally
transforming swap execution with measurable improvements at every level - resulting in the Best Price, Best Execution
and Best Protection.
***
## Improved Routers in Meta Aggregation
Ultra uses meta aggregation to compare and aggregate quotes from various liquidity sources such as
our own routers like Iris and JupiterZ, and 3rd party routers like Dflow, Hashflow, and OKX to find
you the best pricing from various liquidity sources.
Building a wallet? Trading bot? DeFi protocol? Payments app? Doesn't really matter. If you're building in crypto, you probably need swaps.
And you're about to spend 6-9 weeks on infrastructure nobody sees. RPC management. Transaction construction. Slippage optimization. MEV protection.
Or you could call an API. Get better execution for your users and ship your actual product at the same time.
Let's talk about how.
***
## The Uncomfortable Truth
You're maintaining 600+ lines of swap infrastructure right now.
None of it differentiates your product. All of it needs constant maintenance. And here's the uncomfortable part: your users are getting worse execution than they would with 20 lines of API calls.
Your custom implementation is competing against systems trained on \$1B+ daily volume. With dedicated teams optimising every millisecond. Running on validator infrastructure you don't have access to.
That's not a skill issue. It's a scale and infrastructure problem. And we at Jupiter built Ultra V3 so that you don't have to solve it.
***
## The Uncomfortable Truth About Custom Implementations
Let's be direct about what's happening with custom swap implementations.
; /// Indicates which Swap has to be performed along with all the necessary account metas fn get_swap_and_account_metas(&self, swap_params: &SwapParams) -> Result; /// Indicates if get_accounts_to_update might return a non constant vec fn has_dynamic_accounts(&self) -> bool { false } /// Indicates whether `update` needs to be called before `get_reserve_mints` fn requires_update_for_reserve_mints(&self) -> bool { false } // Indicates that whether ExactOut mode is supported fn supports_exact_out(&self) -> bool { false } fn get_user_setup(&self) -> Option { None } fn clone_amm(&self) -> Box ; /// It can only trade in one direction from its first mint to second mint, assuming it is a two mint AMM fn unidirectional(&self) -> bool { false } /// For testing purposes, provide a mapping of dependency programs to function fn program_dependencies(&self) -> Vec<(Pubkey, String)> { vec![] } fn get_accounts_len(&self) -> usize { 32 // Default to a near whole legacy transaction to penalize no implementation } /// The identifier of the underlying liquidity /// /// Example: /// For RaydiumAmm uses Openbook market A this will return Some(A) /// For Openbook market A, it will also return Some(A) fn underlying_liquidities(&self) -> Option > { None } /// Provides a shortcut to establish if the AMM can be used for trading /// If the market is active at all fn is_active(&self) -> bool { true } } ```
## Integration Prerequisites
* Host a service that adheres to our RFQ API schema
* Provide a webhook for Jupiter to send quotes and swap transactions
* Complete end-to-end integration tests
* When ready, you will be onboarded to Edge before going live on production
200 OK) or indicate that it cannot provide one (404 Not Found).
For example, suppose a webhook provides quotes for USDC/SOL only within a range of 100 to 1000 USDC. If it receives a quote request for 10 USDC → SOL, it will respond with 404 Not Found, since the amount is outside its quoting range.
In another case, a webhook may only support one-way quotes (USDC → SOL) but not SOL → USDC. If it receives a request for SOL → USDC, it will also return 404 Not Found.
{
e.target.style.opacity = '1';
e.target.style.border = '2px solid #C8F284';
}}
onMouseLeave={(e) => {
e.target.style.opacity = '1';
e.target.style.border = '2px solid transparent';
}}
data-og-width="3546"
width="3546"
data-og-height="2052"
height="2052"
data-path="static/images/plugin-playground.png"
data-optimize="true"
data-opv="3"
srcset="https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=280&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=8395349bbf7f758ca18591330ca87fc7 280w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=560&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=46e08b413d1673216c5a1c4d57126c91 560w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=840&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=2914dd9f251c0f3df220e1a31e04f63c 840w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=1100&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=9d4185743a5a3991ac7e595443788fc8 1100w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=1650&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=a7ebc84c3d7e2d259f20c50d8fb2cb13 1650w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=2500&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=ce6b355f81e4a7e0d9e69945e8c0a5a7 2500w"
/>
`.
```json Program Related Codes theme={null}
{
"status": "Failed",
"signature": "transaction-signature",
"slot": "368661931",
"code": 6001,
"error": "Slippage tolerance exceeded",
"totalInputAmount": "1000000",
"totalOutputAmount": "4647512",
"inputAmountResult": "1000000",
"outputAmountResult": "4648441",
"swapEvents": [
{
"inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"inputAmount": "50000",
"outputMint": "So11111111111111111111111111111111111111112",
"outputAmount": "232423"
},
{
"inputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"inputAmount": "950000",
"outputMint": "So11111111111111111111111111111111111111112",
"outputAmount": "4416018"
}
]
}
```
{
e.target.style.opacity = '1';
e.target.style.border = '2px solid #C8F284';
}}
onMouseLeave={(e) => {
e.target.style.opacity = '1';
e.target.style.border = '2px solid transparent';
}}
data-og-width="3546"
width="3546"
data-og-height="2052"
height="2052"
data-path="static/images/plugin-playground.png"
data-optimize="true"
data-opv="3"
srcset="https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=280&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=8395349bbf7f758ca18591330ca87fc7 280w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=560&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=46e08b413d1673216c5a1c4d57126c91 560w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=840&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=2914dd9f251c0f3df220e1a31e04f63c 840w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=1100&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=9d4185743a5a3991ac7e595443788fc8 1100w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=1650&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=a7ebc84c3d7e2d259f20c50d8fb2cb13 1650w, https://mintcdn.com/jupiter/mrenEfoqnubhOTHf/static/images/plugin-playground.png?w=2500&fit=max&auto=format&n=mrenEfoqnubhOTHf&q=85&s=ce6b355f81e4a7e0d9e69945e8c0a5a7 2500w"
/>
Connect your Solana wallet to get started
Powered by Jupiter Wallet Kit
Connect your Solana wallet to get started
Powered by Jupiter Wallet Kit