Overview
Private swaps route through multiple CEX hops to break the transaction trail, providing enhanced anonymity. Optionally routes through Monero (XMR) as an untraceable intermediate layer. In API v2, private swaps use the same/quotes and /exchanges endpoints as standard and DEX swaps — pass types=private to get only private quotes, or filter the response by type: "private".
Best For: Users who prioritize privacy and are willing to accept longer completion times (15–45 minutes) for enhanced anonymity.
Looking for the v1 private swap guide? See API v1 — Private Swap.
Key Features
Multi-Hop Routing
Routes through 2 exchanges to break the transaction trail
Optional XMR Privacy Layer
Monero used as an untraceable intermediate when available
No Wallet Connection
No browser wallet or on-chain approvals required
Maximum Anonymity
No direct on-chain link between source and destination
How It Works
Get Tokens
Bulk fetch CEX-supported tokens and cache to your DB, or search by name/symbol. Note each token’s
id.Get Quotes
Call
GET /quotes with token IDs. Either pass types=private to get only private quotes, or filter the response by type: "private".Integration Guide
Step 1: Get Tokens
There are two approaches for getting tokens. Choose the one that fits your integration:- Bulk Fetch + Cache
- Token Search
Fetch all CEX-supported tokens once and store them in your backend database.
Step 2: Get Private Quote
CallGET /quotes with token IDs. Pass types=private to receive only private quotes, or omit it to get all types and filter by type: "private".
Quotes Response (private quote)
quoteId: Pass this to/exchangesto create the ordertype:"private"indicates multi-hop routingduration: Estimated time in minutes — longer due to multi-hop (typically 60 min)
Step 3: Create Private Order
Pass thequoteId and destination address to POST /exchanges. No additional parameters are needed to enable private routing — the quote type determines the routing.
Order Response
Step 4: Monitor Order Status
PollGET /orders/{houdiniId} to track multi-hop progress, or subscribe via the WebSocket API for real-time updates:
Private Swap Status Progression
Private swaps pass through an additionalANONYMIZING stage during the XMR privacy layer:
statusLabel: Overall order statusinStatusLabel: First hop statusoutStatusLabel: Second hop status (private swaps only)
Best Practices
Set Proper Expectations
Set Proper Expectations
Clearly communicate the 15–45 minute completion time. Users should understand they are trading speed for privacy.
Track Both Hops
Track Both Hops
Display both
inStatusLabel and outStatusLabel to show users which leg of the swap is processing.Handle Long Waits
Handle Long Waits
Implement loading states and progress indicators. Multi-hop routing takes significantly longer than standard swaps.
Security
Security
Never expose API keys in frontend code. Validate all destination addresses before submitting. Store
houdiniId for support lookups.Common Issues
Longer Than Expected Completion
Longer Than Expected Completion
Cause: Multi-hop routing through 2 exchanges takes longer than a direct swap.Solution: This is expected for private swaps. Monitor
inStatusLabel and outStatusLabel to see which hop is processing.Privacy Questions
Privacy Questions
Question: “How private is this really?”Answer: Private swaps break the transaction trail by routing through multiple exchanges. When XMR routing is used, it adds an untraceable intermediate step. However, this is not absolute anonymity — compliance checks still apply.
Order Expired
Order Expired
Cause: Deposit was not received before the
expires timestamp.Solution: Fetch a new quote and create a new order.Example Repositories
See full working integrations on GitHub:Next.js Example
Full Next.js integration showing standard, private, and DEX swap flows
Node.js Example
Backend Node.js integration with token fetching, quoting, and order tracking