RFQ Integration
This section will cover the integration of your RFQ service into Jupiter's routing system.
The integration requirements are subjected to change and please provide suggestions or feedbacks on ways to improve the integration process.

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
Please reach out to us in Discord in the Developer Support channel
- If you are interested to participate in Jupiter Z
- If you need any help or clarification regarding the integration.
- To begin onboarding to Edge.
Example Integration
To facilitate the integration, we provide an integration SDK in this repository.
- Sample server: Implements the webhook API in Rust.
- API Schema: OpenAPI schema for the RFQ API.
- Integration tests: Verify the implementation of the webhook.
- Troubleshooting: Common issues that arise during integration.
RFQ API Schema
To facilitate the integration into Jupiter's RFQ module, you will need to provide a webhook for us to register the quotation and swap endpoints with the corresponding request and response format.
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 the token section below). |
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
.
Response Codes
Market Makers should return appropriate HTTP status codes along with error messages.
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. |
A webhook must adhere to the fullfillment and response time 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). |
Integration Notes
Order Engine
The RFQ functionality depends on the mainnet deployment of the Order Engine Program for order fulfillment.
- Source Code: The program's source is located in the programs/order-engine directory.
- IDL: The Interface Definition Language (IDL) file is available here.
Fulfillment Requirements
To ensure market makers stay competitive and responsive, we enforce a minimum benchmark for fulfillment and response times.
- Fulfillment: Market makers are expected to comply and fulfill 95% of the quotes provided within a 1-hour window. If this is not met, the market maker will be turned off.
- Response Time: A webhook must respond within 250 ms of receiving a quote request. If it fails to do so, the RFQ system will proceed with the available quotes at the time.
To resume operations, we will need to manually re-enable your webhook, please reach out to us if this happens.
are we penalizing the market maker if they consistently take more than 250ms to respond?