Skip to content

feat: root path docs #645

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 28 commits into from
Apr 16, 2025
Merged
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
75b6680
feat: rfq integration doc
0xYankee-Raccoons Apr 9, 2025
ab8fa53
chore: fix navigation paths
0xYankee-Raccoons Apr 10, 2025
6950b8f
Merge branch 'main' into feat/rfq-integration-doc
0xYankee-Raccoons Apr 10, 2025
ffd6d41
chore: remove unused files
0xYankee-Raccoons Apr 12, 2025
de85cd4
feat: add back stats page
0xYankee-Raccoons Apr 12, 2025
9d5ebb0
chore: tidy utils
0xYankee-Raccoons Apr 12, 2025
0d2f6ec
feat: upgrade navigation logic
0xYankee-Raccoons Apr 12, 2025
90a3f89
feat: add rfq integration to home page
0xYankee-Raccoons Apr 12, 2025
8448a16
chore: update rfq integration doc
0xYankee-Raccoons Apr 12, 2025
6d1efc3
chore: add rfq comms notes
0xYankee-Raccoons Apr 12, 2025
9e98652
chore: restructure to add index paths
0xYankee-Raccoons Apr 15, 2025
17d1e7b
feat: index.md to README.md compatibility with github interface
0xYankee-Raccoons Apr 15, 2025
984bb7e
feat: add anchor idl parsing repo to perp api
0xYankee-Raccoons Apr 15, 2025
a2931a4
merge main
0xYankee-Raccoons Apr 15, 2025
434408f
merge feat/rfq-integration-doc
0xYankee-Raccoons Apr 15, 2025
29314f0
feat: ultra api readme
0xYankee-Raccoons Apr 15, 2025
e6d14be
feat: swap api readme
0xYankee-Raccoons Apr 15, 2025
e011cea
feat: trigger api readme
0xYankee-Raccoons Apr 15, 2025
cd59688
feat: recurring api readme
0xYankee-Raccoons Apr 15, 2025
a0929c0
chore: update routing readme
0xYankee-Raccoons Apr 15, 2025
b7965e2
feat: tool kit readme
0xYankee-Raccoons Apr 15, 2025
e079df7
chore: update links
0xYankee-Raccoons Apr 15, 2025
1721f70
chore: update metis copy
0xYankee-Raccoons Apr 15, 2025
9b7ebd8
chore: update metis copy
0xYankee-Raccoons Apr 15, 2025
198a0f8
chore: update routing copy
0xYankee-Raccoons Apr 16, 2025
70b43ee
chore: fix dropdown menu font size
0xYankee-Raccoons Apr 16, 2025
ad4a181
chore: update rfq integration docs
0xYankee-Raccoons Apr 16, 2025
4d5e435
merge main
0xYankee-Raccoons Apr 16, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/0-api-setup.md
Original file line number Diff line number Diff line change
@@ -64,7 +64,7 @@ The payment is currently done on a monthly basis.
- 7 days before the plan expires, you will see a banner in the dashboard.
- You can renew your plan latest 14 days after the plan expires before your API Key is disabled.
- The plan will be renewed for the same plan as the previous plan.
- If you have any issues with the payment, [please open a ticket](https://jupiverse.zendesk.com/hc/en-us/requests/new?ticket_form_id=18069133114012&tf_18541841140892=api_or_developer_support).
- If you have any issues with the payment, [please open a ticket](https://support.jup.ag/hc/en-us/requests/new?ticket_form_id=18069133114012&tf_18541841140892=api_or_developer_support).
:::

:::note other payment methods
8 changes: 5 additions & 3 deletions docs/100-swap-api/1-get-quote.md
Original file line number Diff line number Diff line change
@@ -16,7 +16,11 @@ The Jupiter UI at https://jup.ag/ contains multiple safeguards, warnings and def
If you need clarification or support, please reach out to us in [Discord](https://discord.gg/jup).
:::

The Quote API enables you to tap into the Jupiter routing engine, which accesses the deep liquidity available within the DEXes of Solana's DeFi ecosystem. In this guide, we will walkthrough how you can get a quote for a specific token pair and other related parameters.
:::warning Routing Engine
The quotes from Swap API are from the Jupiter Metis v1 Routing Engine.
:::

The Quote API enables you to tap into the Jupiter Metis v1 Routing Engine, which accesses the deep liquidity available within the DEXes of Solana's DeFi ecosystem. In this guide, we will walkthrough how you can get a quote for a specific token pair and other related parameters.

## Let’s Get Started

@@ -30,8 +34,6 @@ To fully utilize the Quote API, check out the [Quote API Reference](/docs/api/sw

## Quote API



:::note
Base URL: `https://lite-jup.ag/swap/v1/quote`

59 changes: 59 additions & 0 deletions docs/100-swap-api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
---
sidebar_label: "About Swap API"
description: "Start using Jupiter Swap API to swap with the Metis Routing Engine."
title: "About Swap API"
---

<head>
<title>Swap API</title>
<meta name="twitter:card" content="summary" />
</head>

The Jupiter Swap API enables you to tap into the Jupiter Metis v1 Routing Engine, which aggregates across all liquidity available within the DEXes of Solana's DeFi ecosystem, allowing you to swap seamlessly from any token to any token.

## Features

| Feature | Description |
| --- | --- |
| **Robust routing engine** | The Jupiter Metis v1 Routing Engine is a robust and battle-tested routing engine that has been in production for over 2 years with multiple DEXes integrated and trillions of dollars in volume. |
| **Best on-chain price** | Trades can split across multiple different on-chain tokens and AMMs to ensure the best possible on-chain price. |
| **Swap any token** | Swap from any token to another token. |
| **Zero platform fees** | Swaps made via the Swap API do not incur any trading fees, both for you and your users. |
| **Custom integrator fees** | Integrators can choose to charge their own custom fees. |
| **Slippage protection** | Routes are intentionally chosen to decrease the likelihood of trade failures due to price slippage. |
| **Fine-grained control** | Allows for full control of how your transaction is crafted and broadcasted. |

## What About Ultra API?

Ultra API is the spiritual successor to Swap API, and is much simpler to use than Swap API. If you are first starting out on your Solana development journey, using Ultra API is highly recommended over Swap API.

However, unlike Ultra API, Swap API allows developers to:

- Add custom instructions.
- Add Cross Program Invocation (CPI) calls.
- Choose the broadcasting strategy for the signed transaction (ie. via priority fee, Jito, etc.).
- Choose which DEXes or AMMs to route through.
- Modify the number of accounts to use in a transaction.

If you have a highly custom need like what is described above, then Swap API may be for you. However, with Swap API, there are many more things you need to worry about that Ultra API automatically handles for:

- **Upkeep of RPCs**: To retrieve wallet balances, broadcast and retrieve transactions, etc.
- **Deciding transaction fee**: Including, but not limited to, priority fee, Jito fee, etc.
- **Deciding slippage**: The optimal slippage to use to balance between trade success and price protection.
- **Broadcasting the transaction**: Ultra uses a proprietary transaction sending engine which dramatically improves landing rate and speed.
- **Parsing the swap results**: Polling and parsing the resulting transaction from the RPC, including handling for success and error cases.

If the above sounds like too much work, then Ultra API will be the better choice.

## Getting Started with Swap API

1. [**Get Quote**](/docs/swap-api/get-quote): Request for a quote which consists of the route plan, and other params such as integrator fee, slippage, etc.
2. [**Build Swap Transaction**](/docs/swap-api/build-swap-transaction): Post the quote to build a swap transaction.
- You can utilize other methods to return swap instructions or use CPI rather than the default swap transaction.
- You can utilize other parameters such as priority fee, dynamic slippage, etc to customize the transaction.
3. [**Send Swap Transaction**](/docs/swap-api/send-swap-transaction): Sign and send the swap transaction to the network via your preferred RPC or other methods.

**Other Guides**
- [**Adding Fees to Swap API**](/docs/swap-api/add-fees-to-swap): Add custom integratorfees to the swap transaction.
- [**Using Swap API as a payment method**](/docs/swap-api/payments-through-swap): Use Swap API as a payment method for your users.
- [**Using Swap Terminal**](/docs/tool-kits/swap-terminal): Lite version of Jupiter that provides end-to-end swap with just a few lines of code.
72 changes: 72 additions & 0 deletions docs/101-ultra-api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
---
sidebar_label: "About Ultra API"
description: "Start using Jupiter Ultra API to swap with the best experience."
title: "About Ultra API"
---

<head>
<title>Ultra API</title>
<meta name="twitter:card" content="summary" />
</head>

The Jupiter Ultra API is the *only* API you ever need to experience or build the best trading experience on Solana.

## Features

| Feature | Description |
| --- | --- |
| **Best price** | Aggregates across multiple liquidity sources, both on-chain and off-chain, for the best possible price.<br/>Including Jupiter's Metis Routing Engine, Jupiter Z (RFQ), and others. |
| **Blazing fast** | 95% of all swaps are executed under 2 seconds via our proprietary transaction sending engine. |
| **MEV-protected** | The lowest incidence of MEV attacks across all existing applications, by far. |
| **Real-Time Slippage Estimator** | Intelligently derives the best possible slippage to use at the time of execution, balancing between trade success and price protection. |
| **One-stop shop** | Retrieve the user's balances, get a quote, execute the trade, and get the results of the trade, all within Ultra API without touching a single RPC or any other external API. |
| **World class support** | We handle the complexities of RPC connections, transaction landing, slippage protection and more. |

## What About Swap API?

Ultra API is the spiritual successor to Swap API, and is much simpler to use than Swap API. If you are first starting out on your Solana development journey, using Ultra API is highly recommended over Swap API.

However, unlike Ultra API, Swap API allows developers to:

- Add custom instructions.
- Add Cross Program Invocation (CPI) calls.
- Choose the broadcasting strategy for the signed transaction (ie. via priority fee, Jito, etc.).
- Choose which DEXes or AMMs to route through.
- Modify the number of accounts to use in a transaction.

If you have a highly custom need like what is described above, then Swap API may be for you. However, with Swap API, there are many more things you need to worry about that Ultra API automatically handles for:

- **Upkeep of RPCs**: To retrieve wallet balances, broadcast and retrieve transactions, etc.
- **Deciding transaction fee**: Including, but not limited to, priority fee, Jito fee, etc.
- **Deciding slippage**: The optimal slippage to use to balance between trade success and price protection.
- **Broadcasting the transaction**: Ultra uses a proprietary transaction sending engine which dramatically improves landing rate and speed.
- **Parsing the swap results**: Polling and parsing the resulting transaction from the RPC, including handling for success and error cases.

If the above sounds like too much work, then Ultra API will be the better choice.

## Getting Started with Ultra API

1. [**Get Order**](/docs/ultra-api/get-order): Request for a swap transaction then sign it.
2. [**Execute Order**](/docs/ultra-api/execute-order): Execute the swap transaction and get the execution status.

- [**Get Balances**](/docs/ultra-api/get-balances): Additionally, you can request for token balances of an account from `/ultra/v1/balances`.

## FAQ

**What is the fee for using Ultra API?**

Ultra API takes 0.1% (or 0.05% depending on the tokens) of the swap amount as a fee.

**What is the rate limit for Ultra API?**

Currently, Ultra API has a rate limit of 60 requests per minute.

:::info Increasing Rate Limits
Currently, there is no way to increase the rate limit for Ultra API.

Portal API Keys are not supported for Ultra API.
:::

**Can integrators take fees using Ultra API?**

Currently no, we are working on it.
48 changes: 0 additions & 48 deletions docs/101-ultra-api/index.md

This file was deleted.

46 changes: 46 additions & 0 deletions docs/102-trigger-api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
sidebar_label: "About Trigger API"
description: "Start using Jupiter Trigger API to create limit orders."
title: "About Trigger API"
---

<head>
<title>Trigger API</title>
<meta name="twitter:card" content="summary" />
</head>

The Jupiter Trigger API enables you to create limit orders on Solana, allowing users to set target prices for token swaps that execute automatically when market conditions are met.

The Trigger API is ideal for:
- DeFi applications that want to offer users more advanced trading options
- Wallets looking to expand their trading features
- Automated systems that need to execute at specific price points

## Features

| Feature | Description |
| --- | --- |
| **Custom integrator fees** | Integrators can choose to charge their own custom fees (on top of Jupiter's fees). |
| **Any token pair** | Create trigger orders between any token pairs supported on Jupiter's Metis Routing Engine. |
| **Best execution** | Orders are executed through Jupiter's Metis Routing Engine to get the best possible price across all DEXes. |
| **Price monitoring** | Our infrastructure continuously monitors prices to execute trigger orders as soon as conditions are met. |
| **Order expiry** | Trigger orders can be set to expire after a certain period of time. |
| **Slippage addition** | Add slippage to the target price, ideal for users who want to prioritize success rate over price. |

## Getting Started with Trigger API

1. [**Create Order**](/docs/trigger-api/create-order): Create a new trigger order with your desired parameters.
2. [**Execute Order**](/docs/trigger-api/execute-order): Execute a trigger order.
3. [**Cancel Order**](/docs/trigger-api/cancel-order): Cancel an existing trigger order.
4. [**Get Trigger Orders**](/docs/trigger-api/get-trigger-orders): Retrieve active/historical trigger orders for a specific wallet address
5. [**Best Practices**](/docs/trigger-api/best-practices): Best practices for using Trigger API.

## FAQ

**What is the fee for using Trigger API?**

Trigger API takes 0.03% for stable pairs and 0.1% for every other pairs.

**Can integrators take fees using Trigger API?**

Yes, integrators can take fees on top of Jupiter's fees.
47 changes: 47 additions & 0 deletions docs/103-recurring-api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
---
sidebar_label: "About Recurring API"
description: "Start using Jupiter Recurring API to create time or price based recurring orders."
title: "About Recurring API"
---

<head>
<title>Recurring API</title>
<meta name="twitter:card" content="summary" />
</head>

The Jupiter Recurring API enables you to create automated recurring orders on Solana, allowing users to set up regular token swaps that execute automatically based on time intervals or price conditions.

The Recurring API is ideal for:
- DeFi applications that want to offer dollar-cost average or value average features
- Wallets and platforms looking to provide automated investment options
- Projects that want to implement treasury management strategies

## Features

| Feature | Description |
| --- | --- |
| **Time-based recurring** | Set up regular token swaps that execute automatically at specified time intervals. |
| **Price-based recurring** | Create price-based recurring orders that execute when certain market conditions are met. |
| **Any token pair** | Create recurring orders between any token pairs supported on Jupiter's Metis Routing Engine. |
| **Best execution** | Orders are executed through Jupiter's Metis Routing Engine to get the best possible price across all DEXes. |
| **Flexible scheduling** | Configure the frequency and timing of recurring orders to match your needs. |
| **Price strategy** | Set a price range in time-based recurring orders. |

## Getting Started with Recurring API

1. [**Create Order**](/docs/recurring-api/create-order): Create a new recurring order with your desired parameters.
2. [**Cancel Order**](/docs/recurring-api/cancel-order): Cancel an existing recurring order.
3. [**Deposit in Price-based Orders**](/docs/recurring-api/deposit-price-order): Deposit funds in price-based orders.
4. [**Withdraw from Price-based Orders**](/docs/recurring-api/withdraw-price-order): Withdraw funds from price-based orders.
5. [**Get Recurring Orders**](/docs/recurring-api/get-recurring-orders): Retrieve the history of recurring orders for a specific wallet address.
6. [**Best Practices**](/docs/recurring-api/best-practices): Best practices for using Recurring API.

## FAQ

**What is the fee for using Recurring API?**

Recurring API takes 0.1% as fees.

**Can integrators take fees using Recurring API?**

Currently no.
23 changes: 23 additions & 0 deletions docs/200-perp-api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
---
sidebar_label: "About Perp API"
description: "Use the Jupiter Perp API to trade or analyze."
title: "About Perp API"
---

<head>
<title>About Perp API</title>
<meta name="twitter:card" content="summary" />
</head>

:::warning
The Perp API is still a **work in progress**, stay tuned!
:::

:::tip
In the meantime, you can use this amazing github repository to direct Anchor IDL parse the Perp Program.

- Fetch Perp or JLP pool data
- Interact with the Perp Program

https://github.com/julianfssen/jupiter-perps-anchor-idl-parsing
:::
14 changes: 0 additions & 14 deletions docs/200-perp-api/index.md

This file was deleted.

38 changes: 38 additions & 0 deletions docs/300-tool-kits/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
---
sidebar_label: "About Tool Kits"
description: "Introduction to Jupiter Developer Tool Kits"
title: "About Tool Kits"
---

<head>
<title>About Tool Kits</title>
<meta name="twitter:card" content="summary" />
</head>

Jupiter Tool Kits are a collection of developer tools and SDKs that help you integrate Jupiter's powerful swap infrastructure into your applications. These tools are designed to make it easy to build on top of Solana and Jupiter.

## Why Use Jupiter Tool Kits?

- **Accelerate Development**: Get your applications to market faster with our pre-built components and SDKs.
- **Open Source**: All our tools are open source, allowing you to inspect, modify and contribute to the codebase.
- **Low Code Solutions**: Many of our tools require minimal coding, making integration quick and straightforward.
- **Community Driven**: Join a vibrant community of developers building and improving these tools.

## Jupiter Tool Kits

- [**Swap Terminal**](/docs/tool-kits/swap-terminal): A ready-to-use swap interface that can be embedded into any website.
- [**Unified Wallet Kit**](/docs/tool-kits/unified-wallet-kit): A wallet interface that can be embedded into any website.

## Community Contributions

- [**Jupiverse Kit**](https://jupiversekit.xyz): A ready-to-use React components for building with Swap Terminal and Unified Wallet Kit.
- [**DevRel Examples**](https://github.com/Jupiter-DevRel): A wealth of scripts and examples for building with Solana and Jupiter.

## How to Contribute

We welcome contributions from the anyone! Here's how you can help:

1. Submit pull requests to our repositories.
2. Submit issues to our repositories.
3. If you're a vibe coder or non-technical, join our [Discord](https://discord.gg/jup) to discussany ideas you have.
4. Help us by spreading the word about the tool kits.
File renamed without changes.
File renamed without changes.
49 changes: 49 additions & 0 deletions docs/600-routing/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
---
sidebar_label: "About Routing"
description: "About Jupiter Routing"
title: "About Routing"
---

<head>
<title>About Routing</title>
<meta name="twitter:card" content="summary" />
</head>

:::note
If you are an exchange or market maker and want to participate in our routing system, please refer to our [DEX Integration](/docs/routing/dex-integration) and [RFQ Integration](/docs/routing/rfq-integration) guides.
:::

## Jupiter Metis v1 Routing Engine

Since its inception in 2023, Jupiter's proprietary DEX aggregation engine, Metis v1, has become a cornerstone of Solana blockchain's DeFi ecosystem. Metis v1 functions as a sophisticated aggregation layer for on-chain liquidity, with one single objective - to algorithmically determine the most efficient trade route for any given token pair, considering factors like price, slippage, and transaction fees across multiple DEXes and AMMs. This ensures users receive the best possible execution price available on-chain at the moment that they wish to trade.

| | |
| --- | --- |
| **Overcoming SVM constraints** | Employs a sophisticated and efficient transaction construction to enable multi-hop-multi-split swaps. |
| **Integrating diverse DEXes** | Utilizes a standardized interface to integrate with a wide range of DEXes, abstracting away the complexities of each individual DEX. |
| **Optimizing for price and execution** | Ensuring the quoted price is as close as the actual price, while also ensuring the transaction is executed successfully. |
| **Accessing markets immediately and safely** | Employs necessary infrastructure powered by a network of robust RPC nodes to include markets and checks their liquidity in real-time. |

The engine integrates with most DEXes on Solana and is accessible via the Swap API. You can find a complete list of supported DEXes via the [/swap/v1/program-id-to-label](https://lite-api.jup.ag/swap/v1/program-id-to-label) endpoint.

Metis v1's impact extends far beyond simple facilitation of on-chain trades. It is the de-facto liquidity engine on Solana, playing an instrumental role in onboarding millions of users to the network and facilitating trillions of dollars in cumulative trading volume. Its stability and general-purpose design have made it a reliable foundation for countless developers and protocols building on Solana.

Currently, Metis v1 powers the **Swap API**: A robust interface designed for developers and applications requiring programmatic access to Solana's liquidity. It currently has tens of thousands of requests per second, with demonstrated capacity to handle peak loads reaching hundreds of thousands of requests per second.

## Jupiter Z (RFQ) Routing Engine

Since its launch in 2024, Jupiter Z has emerged as a transformative addition to Jupiter's routing capabilities. Jupiter Z functions as an RFQ (Request For Quote) system that connects users directly with market makers, enabling market makers to provide competitive quotes for top token pairs. This ensures users receive the best possible execution price available from both on-chain and off-chain liquidity at the moment they wish to trade.

| | |
| --- | --- |
| **Intent-based architecture** | Employs an intent-based system where users express their desired trade and market makers compete to fulfill it. |
| **Integrating diverse market makers** | Utilizes a standardized interface to integrate with multiple market makers, abstracting away the complexities of each liquidity provider. |
| **Optimizing for price and execution** | Creates a competitive environment where market makers compete to provide the best quotes, while ensuring the transaction is executed successfully and efficiently. |
| **Real-time quote aggregation** | Employs a versatile proxy to collect and compare quotes from multiple routing sources (such as Jupiter Metis v1 and Jupiter Z) in real-time. |
| **Gasless transactions** | Enables users to execute trades without incurring transaction fees, providing a seamless and cost-effective trading experience. |

Jupiter Z has been handling a large portion of trades on the Jupiter frontend (jup.ag) - which has demonstrated Jupiter Z's reliability and effectiveness in providing competitive quotes and successful trade execution.

Currently, Jupiter Z is accessible through the **Ultra API**: A streamlined interface that makes it simple for developers and applications to tap into Metis v1, Jupiter Z and other routing sources.

For more information about Jupiter Z, please refer to our [RFQ Integration](/docs/routing/rfq-integration) guide.
8 changes: 4 additions & 4 deletions docs/600-routing/dex-integration.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
sidebar_label: "Decentalized Exchanges"
description: "Integrate your DEX into Jupiter."
sidebar_label: "Jupiter Metis v1"
description: "Integrate your DEX into Jupiter Metis v1 Routing Engine."
title: "DEX Integration"
---

@@ -9,9 +9,9 @@ title: "DEX Integration"
<meta name="twitter:card" content="summary" />
</head>

Jupiter is one of the most widely integrated protocols, so a lot of work is involved in minimizing issues on new integrations and making each integration valuable to our users and partners.
Jupiter is one of the most widely integrated protocols, so a lot of work is involved in minimizing issues on new integrations and making each integration valuable to our users and partners. Our top priority is ensuring security and providing the best prices and the best token selection for our users, so we will focus on DEXes that will bring the most benefits to them.

Our top priority is securing the best prices and the best token selection for our users, so we will focus on DEXes that will bring the most benefits to them.
In this section, we will walk you through the process of integrating your DEX into the Jupiter Metis v1 Routing Engine that powers the Swap API.

:::warning We do not charge fees for integration.
:::
38 changes: 0 additions & 38 deletions docs/600-routing/index.md

This file was deleted.

38 changes: 21 additions & 17 deletions docs/600-routing/rfq-integration.md
Original file line number Diff line number Diff line change
@@ -48,10 +48,10 @@ To facilitate the integration into Jupiter's RFQ module, you will need to provid

| Endpoint | Method | URL | Description |
|----------|--------|-----|-------------|
| Base URL | - | `https://your-api-endpoint.com/jupiter/rfq` | Example URL that we will register into our API |
| Quote | POST | `https://your-api-endpoint.com/jupiter/rfq/quote` | Called to request quotes |
| Swap | POST | `https://your-api-endpoint.com/jupiter/rfq/swap` | Called to execute swaps |
| Tokens | GET | `https://your-api-endpoint.com/jupiter/rfq/tokens` | Called periodically to fetch supported tokens (see [below](#advertising-supported-tokens)) |
| Base URL | - | `https://your-api-endpoint.com/jupiter/rfq` | Example URL that we will register into our API. |
| Quote | POST | `https://your-api-endpoint.com/jupiter/rfq/quote` | Called to request quotes. |
| Swap | POST | `https://your-api-endpoint.com/jupiter/rfq/swap` | Called to execute swaps. |
| Tokens | GET | `https://your-api-endpoint.com/jupiter/rfq/tokens` | Called periodically to fetch supported tokens ([see the token section below](#advertising-supported-tokens)). |

:::note API Key
If you require an API key to access your endpoints, please provide it to us during the registration process. The API Key will be passed to the webhook as a header `X-API-KEY`.
@@ -65,19 +65,19 @@ Market Makers should return appropriate HTTP status codes along with error messa

| Status Code | Description |
|--------------|-------------|
| `200 OK` | The request was successful, and the webhook will return a quote |
| `404 Not Found` | The webhook will not return a quote for this request (e.g. the pair or the size are not supported) |
| `400 Bad Request` | The request sent to the webhook is malformed (e.g. missing an expected parameter) |
| `401 Unauthorized` | Authorization failed. For example the `X-API-KEY` is missing or incorrect |
| `50x Server Errors` | The webhook is offline or unable to respond. If the status persist, the webhook will be temporarily suspended and will not receive requests |
| `200 OK` | The request was successful, and the webhook will return a quote. |
| `404 Not Found` | The webhook will not return a quote for this request (e.g. the pair or the size are not supported). |
| `400 Bad Request` | The request sent to the webhook is malformed (e.g. missing an expected parameter). |
| `401 Unauthorized` | Authorization failed. For example the `X-API-KEY` is missing or incorrect. |
| `50x Server Errors` | The webhook is offline or unable to respond. If the status persist, the webhook will be temporarily suspended and will not receive requests. |

:::note Timeouts
A webhook must adhere to the [fullfillment and response time requirements](#fulfillment-requirements). When sending the quote request, the RFQ system includes the following headers:

| Header | Description |
|--------|-------------|
| `x-request-start` | The millisecond timestamp indicating when the request was sent |
| `x-request-timeout` | The millisecond timeout for the request (currently set to 250 ms) |
| `x-request-start` | The millisecond timestamp indicating when the request was sent. |
| `x-request-timeout` | The millisecond timeout for the request (currently set to 250 ms). |
:::

## Integration Notes
@@ -91,11 +91,6 @@ The RFQ functionality depends on the mainnet deployment of the [Order Engine Pro

---

### Non-standard payload
The transaction data includes, beside the instruction data for the order-engine, 3 additional bytes that are appended to the instruction data. These bytes are not processed by the program and are only information and to be consumed by an off-chain consumer. The first 2 bytes contains the fee amount in basis points (u16) and the third byte (u8) is a bit mask where the least significant bit indicates if the swap is exact-in (0) or exact-out (1).

---

### Fulfillment Requirements

To ensure market makers stay competitive and responsive, we enforce a minimum benchmark for fulfillment and response times.
@@ -139,7 +134,7 @@ Jupiter RFQ allows MMs a way to provide liquidity, adjust their quotes without b

**Dynamic Fee**

The dynamic fee amount is forwarded to webhooks in the quote request parameters and it is contained in the message that both taker and maker sign ([see the payload section above](#non-standard-payload)). In manual mode, the fee is a flat 2pbs.
The dynamic fee amount is forwarded to webhooks in the quote request parameters and it is contained in the message that both taker and maker sign ([see the payload section below](#non-standard-payload)). In manual mode, the fee is a flat 2pbs.

**Fee Calculation**

@@ -157,6 +152,15 @@ This is subject to change in the future.

---

### Non-standard payload
The transaction data includes, beside the instruction data for the order-engine, 3 additional bytes that are appended to the instruction data. These bytes are not processed by the program and are only information and to be consumed by an off-chain consumer. The first 2 bytes contains the fee amount in basis points (u16) and the third byte (u8) is a bit mask where the least significant bit indicates if the swap is exact-in (0) or exact-out (1).

---

### Advertising Supported Tokens

In order to receive relevant quote requests, market makers need to advertise the tokens they support. This is done by providing a list of supported tokens in the response to the `/tokens` route. The response should be a JSON array of token addresses. The list of tokens is refreshed every 10 minutes.

## FAQ

**Does RFQ support native SOL?**
6 changes: 3 additions & 3 deletions docs/index.md → docs/README.md
Original file line number Diff line number Diff line change
@@ -27,9 +27,9 @@ Refer to the [What's New?](#whats-new) section for the latest API updates and br
**Quick Links** to APIs and Tool Kits:

- [Ultra API](/docs/ultra-api/)
- [Swap API](/docs/swap-api/get-quote)
- [Trigger API](/docs/trigger-api/create-order)
- [Recurring API](/docs/recurring-api/create-order)
- [Swap API](/docs/swap-api/)
- [Trigger API](/docs/trigger-api/)
- [Recurring API](/docs/recurring-api/)
- [Token API](/docs/token-api/)
- [Price API](/docs/price-api/)
- [Swap Terminal](/docs/tool-kits/swap-terminal)
4 changes: 2 additions & 2 deletions docs/misc/13-integrator-guidelines.md
Original file line number Diff line number Diff line change
@@ -16,15 +16,15 @@ Jupiter provides developer tools and resources to help you integrate with Jupite
When integrating with Jupiter, you can use the following assets to help you brand and market your product: [Jupiter Brand Assets](https://github.com/jup-ag/docs/tree/main/static/files).

:::caution Labelling Routing Provider
Do note that, if you are using our routing engine (such as getting quotes from the Swap API), you are to label the routing provider as **"Metis"**, and not "Jupiter".
Do note that, if you are using our routing engine (such as getting quotes from the Swap API), you are to label the routing provider as **"Jupiter Metis v1"**, and not "Jupiter".
:::

## Developer Support

There are currently 2 ways to get technical support:

1. [Public Developer Support Channel in Discord](https://discord.com/channels/897540204506775583/910250162402779146)
2. [Portal Enquiry](https://jupiverse.zendesk.com/hc/en-us/requests/new?ticket_form_id=18069133114012&tf_18541841140892=api_or_developer_support)
2. [Portal Enquiry](https://support.jup.ag/hc/en-us/requests/new?ticket_form_id=18069133114012&tf_18541841140892=api_or_developer_support)

:::warning
Please use the Discord channel for your technical questions, as it is a public channel, more people can help you and it promotes discovery/discussion.
2 changes: 1 addition & 1 deletion docusaurus.config.js
Original file line number Diff line number Diff line change
@@ -252,7 +252,7 @@ const config = {
],
announcementBar: {
id: 'zendesk-migration',
content: 'We have migrated our User Guides from Station to our new Support System. Please visit <a target="_blank" rel="noopener noreferrer" href="https://jupiverse.zendesk.com/hc/en-us">Jupiter Helpdesk</a> for the latest guides.',
content: 'We have migrated our User Guides from Station to our new Support System. Please visit <a target="_blank" rel="noopener noreferrer" href="https://support.jup.ag/hc/en-us">Jupiter Helpdesk</a> for the latest guides.',
backgroundColor: '#FFA500',
textColor: '#000000',
isCloseable: false,
5 changes: 2 additions & 3 deletions redirects.json
Original file line number Diff line number Diff line change
@@ -12,9 +12,8 @@
{"to":"/docs/token-api","from":"/docs/utility/token-api"},
{"to":"/docs/price-api","from":"/docs/utility/price-api"},

{"to":"/docs/recurring-api/create-order","from":"/docs/swap-api/dca-sdk"},
{"to":"/docs/trigger-api/create-order","from":"/docs/swap-api/limit-order-api"},
{"to":"/docs/swap-api/get-quote","from":"/docs/swap-api"},
{"to":"/docs/recurring-api","from":"/docs/swap-api/dca-sdk"},
{"to":"/docs/trigger-api","from":"/docs/swap-api/limit-order-api"},

{"to":"/docs/api/ultra-api/order","from":"/docs/api/order"},
{"to":"/docs/api/ultra-api/execute","from":"/docs/api/execute"},
68 changes: 48 additions & 20 deletions sidebars-docs.js
Original file line number Diff line number Diff line change
@@ -13,7 +13,7 @@ const sidebars = {
items: [
{
type: 'doc',
id: 'index',
id: 'README',
},
{
type: 'doc',
@@ -57,7 +57,7 @@ const sidebars = {
routing: [
{
type: 'doc',
id: 'routing/index',
id: 'routing/README',
},
{
type: 'html',
@@ -84,6 +84,10 @@ const sidebars = {
{
type: 'category',
label: 'Legal & Guidelines',
link: {
type: 'generated-index',
slug: '/misc',
},
collapsible: false,
collapsed: false,
items: [
@@ -103,24 +107,24 @@ const sidebars = {
type: 'doc',
id: 'misc/integrator-guidelines',
},
{
type: 'html',
value: '<div class="sidebar-line-break"></div>',
},
],
},
],
ultra: [
{
type: 'doc',
id: 'ultra-api/README',
},
{
type: 'html',
value: '<div class="sidebar-line-break"></div>',
},
{
type: 'category',
label: 'Ultra API',
collapsible: false,
collapsed: false,
items: [
{
type: 'doc',
id: 'ultra-api/index',
},
{
type: 'doc',
id: 'ultra-api/get-order',
@@ -141,6 +145,14 @@ const sidebars = {
},
],
swap: [
{
type: 'doc',
id: 'swap-api/README',
},
{
type: 'html',
value: '<div class="sidebar-line-break"></div>',
},
{
type: 'category',
label: 'Swap API',
@@ -216,6 +228,14 @@ const sidebars = {
},
],
trigger: [
{
type: 'doc',
id: 'trigger-api/README',
},
{
type: 'html',
value: '<div class="sidebar-line-break"></div>',
},
{
type: 'category',
label: 'Trigger API',
@@ -271,6 +291,14 @@ const sidebars = {
},
],
recurring: [
{
type: 'doc',
id: 'recurring-api/README',
},
{
type: 'html',
value: '<div class="sidebar-line-break"></div>',
},
{
type: 'category',
label: 'Recurring API',
@@ -334,16 +362,8 @@ const sidebars = {
],
perp: [
{
type: 'category',
label: 'Perp API',
collapsible: false,
collapsed: false,
items: [
{
type: 'doc',
id: 'perp-api/index',
},
],
type: 'doc',
id: 'perp-api/README',
},
{
type: 'html',
@@ -379,6 +399,14 @@ const sidebars = {
},
],
toolkit: [
{
type: 'doc',
id: 'tool-kits/README',
},
{
type: 'html',
value: '<div class="sidebar-line-break"></div>',
},
{
type: 'category',
label: 'Jupiter Tool Kits',
2 changes: 1 addition & 1 deletion src/css/navbar.css
Original file line number Diff line number Diff line change
@@ -147,7 +147,7 @@
.navbar__link-wrapper {
display: flex;
align-items: center;
font-size: 0.875rem;
font-size: 0.95rem;
line-height: 1.25rem;
font-weight: 500;
color: #1c1e21;
26 changes: 16 additions & 10 deletions src/pages/index.tsx
Original file line number Diff line number Diff line change
@@ -17,13 +17,13 @@ const JupiterExplore = () => {
<a href="/docs/ultra-api/" className="underline text-gray-800">
Ultra
</a>
, <a href="/docs/swap-api/get-quote" className="underline text-gray-800">
, <a href="/docs/swap-api/" className="underline text-gray-800">
Swap
</a>
, <a href="/docs/trigger-api/create-order" className="underline text-gray-800">
, <a href="/docs/trigger-api/" className="underline text-gray-800">
Trigger
</a>
, <a href="/docs/recurring-api/create-order" className="underline text-gray-800">
, <a href="/docs/recurring-api/" className="underline text-gray-800">
Recurring
</a>
, and more.
@@ -55,7 +55,7 @@ const JupiterExplore = () => {
</p>
</div>
<a
href="/docs/tool-kits/swap-terminal"
href="/docs/tool-kits/"
className="mt-6 bg-[#66A2E8] !text-white font-semibold py-2 px-3 rounded-lg text-center hover:bg-[#66A2E8]/90 transition-colors !no-underline text-sm"
>
Explore Tool Kits
@@ -67,8 +67,8 @@ const JupiterExplore = () => {
Get Routed
</h2>
<p className="text-gray-600 text-sm text-left py-1">
If you are a DEX or AMM, and have an interest to be part of our
routing engine, refer to the routing integration guides.
If you are a decentralized exchange or market maker and have an interest to be part of our
routing engines, refer to the routing integration guides.
</p>
</div>
<div className="mt-6 flex gap-3">
@@ -349,7 +349,7 @@ const JupiterFooter = () => {
</svg>
</a>
<a
href="https://jupiverse.zendesk.com/hc/en-us"
href="https://support.jup.ag/hc/en-us"
target="_blank"
rel="noopener noreferrer"
className="flex items-center justify-center w-8 h-8 rounded-full bg-gray-200 text-gray-700 hover:text-primary hover:bg-gray-300 transition-all transform hover:scale-110"
@@ -369,23 +369,29 @@ const JupiterFooter = () => {
{/* Legal Links */}
<div className="flex flex-wrap justify-center gap-4 text-sm text-center">
<a
href="/docs/sdk-api-license-agreement"
href="/docs/misc/sdk-api-license-agreement"
className="text-gray-700 hover:text-primary transition-colors hover:underline text-xs"
>
SDK & API License
</a>
<a
href="/docs/terms-of-use"
href="/docs/misc/terms-of-use"
className="text-gray-700 hover:text-primary transition-colors hover:underline text-xs"
>
Terms of Use
</a>
<a
href="/docs/privacy-policy"
href="/docs/misc/privacy-policy"
className="text-gray-700 hover:text-primary transition-colors hover:underline text-xs"
>
Privacy Policy
</a>
<a
href="/docs/misc/integrator-guidelines"
className="text-gray-700 hover:text-primary transition-colors hover:underline text-xs"
>
Integrator Guidelines
</a>
</div>

{/* Copyright */}
6 changes: 3 additions & 3 deletions src/utils/homeCards.ts
Original file line number Diff line number Diff line change
@@ -11,21 +11,21 @@ export const API_CARDS = [
{
title: "Swap API",
links: [
{ text: "Docs", href: "/docs/swap-api/get-quote" },
{ text: "Docs", href: "/docs/swap-api/" },
{ text: "Schemas", href: "/docs/api/swap-api/" },
],
},
{
title: "Trigger API",
links: [
{ text: "Docs", href: "/docs/trigger-api/create-order" },
{ text: "Docs", href: "/docs/trigger-api/" },
{ text: "Schemas", href: "/docs/api/trigger-api/" },
],
},
{
title: "Recurring API",
links: [
{ text: "Docs", href: "/docs/recurring-api/create-order" },
{ text: "Docs", href: "/docs/recurring-api/" },
{ text: "Schemas", href: "/docs/api/recurring-api/" },
],
},