> ## Documentation Index
> Fetch the complete documentation index at: https://docs.socket.tech/llms.txt
> Use this file to discover all available pages before exploring further.

# Incognito Mode

> Route swaps and transfers without a direct on-chain link between sending and receiving wallets.

Incognito Mode is designed for flows where the sending wallet and receiving wallet should not be directly linked in the user-facing transaction path. It helps users swap or bridge assets while separating the origin wallet from the destination wallet.

## Why it matters

Users often need to move funds between wallets, apps, and chains without exposing a simple wallet-to-wallet trail in the product experience. Incognito Mode gives apps a way to support those flows through Socket routing.

Use Incognito Mode when your product needs to:

* Send assets to a different receiving wallet.
* Separate the account that funds a route from the account that receives the output.
* Build wallet migration, account funding, or privacy-conscious transfer flows.

## How it works

Your app provides the route parameters and receiver details. Socket returns executable transaction data for the selected route and tracks the request through completion.

With `incognito=true`, Swap V3 quotes only privacy-capable direct `tx` providers (currently `houdini` and `changenow`) instead of the full bridge/DEX marketplace.

## API usage

```http theme={null}
GET /v3/swap/quote?userOps=tx&incognito=true&...
```

| Requirement | Detail |
| - | - |
| `userOps` | Must be `tx` only |
| `incognito` | Set to `true` |
| `refundAddress` | **Required** for incognito quotes |
| `originChainId` / `destinationChainId` | EVM and Solana only |
| `receiverAddress` | Destination wallet (can differ from `userAddress`) |

Same-chain same-token quotes are allowed in incognito mode (useful for wallet-to-wallet transfers through a privacy provider).

```bash theme={null}
curl -sS -G "https://dedicated-backend.socket.tech/v3/swap/quote" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "affiliate: YOUR_AFFILIATE_ID" \
  --data-urlencode "userOps=tx" \
  --data-urlencode "incognito=true" \
  --data-urlencode "originChainId=42161" \
  --data-urlencode "destinationChainId=8453" \
  --data-urlencode "inputToken=0xaf88d065e77c8cC2239327C5EDb3A432268e5831" \
  --data-urlencode "outputToken=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913" \
  --data-urlencode "inputAmount=1000000" \
  --data-urlencode "userAddress=0x1111111111111111111111111111111111111111" \
  --data-urlencode "receiverAddress=0x2222222222222222222222222222222222222222" \
  --data-urlencode "refundAddress=0x1111111111111111111111111111111111111111"
```

After submission, poll status as usual with `GET /v3/swap/status?quoteId=...`.

### Constraints

* Not supported with output / reverse quoting (`EXPECTED_OUTPUT` / `EXACT_OUTPUT`)
* Not a deposit or CEX-withdraw flow (`userOps=deposit` / `cex-withdraw` are rejected)
* Filter with `includeProvider` / `excludeProvider` using `houdini` or `changenow` if you want a specific privacy provider

See the [Socket API guide](/integrate/integration-guides/socket-api) for the full quote parameter surface.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.