ID Management
Understanding how Request IDs and Quote IDs work is essential for proper RFQ integration.
Request ID
The Request ID is a deterministic identifier generated by Jupiter for each quote request.
- Generation: Created by hashing the
/quoteendpoint request headers and all parameters (token addresses, amounts, user wallet, etc.) - Deterministic: Identical request parameters will always produce the same Request ID
- Purpose: Enables idempotency and request deduplication
- Scope: Generated and managed by Jupiter's RFQ system
Example scenario:
{
"inToken": "So11111111111111111111111111111111111111112",
"outToken": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"inAmount": "1000000000",
"taker": "8xYN..."
}
// Request ID: "94f052fa-3f..."
Quote ID
The Quote ID is a unique identifier for each quote response.
- Generation: Derived by combining your webhook's internal UUID with the Request ID
- Format:
{webhook_uuid}_{request_id}(handled internally by Jupiter) - Uniqueness: Guaranteed unique even for multiple quotes with the same Request ID
- Purpose: Uniquely identifies a specific quote for execution
Example flow:
1. Jupiter generates Request ID from parameters → "94f052fa-3f..."
2. Your webhook receives the request
3. Jupiter creates Quote ID using your webhook UUID + Request ID → "8fcc669f-21..."
4. Quote ID is used for swap execution
Key Implications
For Quote Generation
- Multiple requests with identical parameters will have different Request ID
- Each response gets a unique Quote ID, even for duplicate Request IDs
- You can use Request IDs for traceability
For Swap Execution
- The Quote ID in the swap request uniquely identifies which quote to execute
- Quote IDs are tied to your webhook through the internal UUID component
- Quote validity and expiration should be tracked using the Quote ID