Do You Have OAS Documentation?
Yes. OAS documentation is available here. We recommend using the the OpenAPI generator CLI to build a typed client.
How Does Authentication Work?
All endpoints require an API key to be accessed, which needs to be provided in the header of each request as illustrated in the example below:
curl --request GET \
--header 'accept: application/json' \
--header 'x-api-key: <YOUR_API_KEY>'
Which Chains and Tokens are Supported?
Supported Chains for Swapping
The following chains are supported for swapping. Note the router address which you may need to whitelist for your wallet(s)/application.
Chain ID | Chain Name | Universal Router 1.2 Address | Universal Router 2.0 Address |
---|---|---|---|
1 | Mainnet (Ethereum) | 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD | 0x66a9893cc07d91d95644aedd05d03f95e1dba8af |
10 | OP Mainnet | 0xCb1355ff08Ab38bBCE60111F1bb2B784bE25D7e8 | 0x851116d9223fabed8e56c0e6b8ad0c31d98b3507 |
56 | BNB Smart Chain | 0x4Dae2f939ACf50408e13d58534Ff8c2776d45265 | 0x1906c1d672b88cd1b9ac7593301ca990f94eae07 |
130 | Unichain | 0x4D73A4411CA1c660035e4AECC8270E5DdDEC8C17 | 0xef740bf23acae26f6492b10de645d6b98dc8eaf3 |
137 | Polygon | 0xec7BE89e9d109e7e3Fec59c222CF297125FEFda2 | 0x1095692a6237d83c6a72f3f5efedb9a670c49223 |
324 | zkSync | 0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06 | 0x28731BCC616B5f51dD52CF2e4dF0E78dD1136C06 |
480 | World Chain | 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D | 0x8ac7bee993bb44dab564ea4bc9ea67bf9eb5e743 |
1868 | Soneium | 0x0e2850543f69f678257266e0907ff9a58b3f13de | 0x0e2850543f69f678257266e0907ff9a58b3f13de |
8453 | Base | 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD | 0x6ff5693b99212da76ad316178a184ab56d299b43 |
42161 | Arbitrum | 0x5E325eDA8064b456f4781070C0738d849c824258 | 0xa51afafe0263b40edaef0df8781ea9aa03e381a3 |
42220 | Celo | 0x643770e279d5d0733f21d6dc03a8efbabf3255b4 | 0x643770e279d5d0733f21d6dc03a8efbabf3255b4 |
43114 | Avalanche | 0x4Dae2f939ACf50408e13d58534Ff8c2776d45265 | 0x94b75331ae8d42c1b61065089b7d48fe14aa73b7 |
81457 | Blast | 0x643770E279d5D0733F21d6DC03A8efbABf3255B4 | 0xeabbcb3e8e415306207ef514f660a3f820025be3 |
7777777 | Zora | 0x2986d9721A49838ab4297b695858aF7F17f38014 | 0x3315ef7ca28db74abadc6c44570efdf06b04b020 |
Testnet Chain ID | Testnet Chain Name | ||
1301 | Unichain Sepolia (Testnet) | 0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6 | 0xf70536b3bcc1bd1a972dc186a2cf84cc6da6be5d |
10143 | Monad (Testnet) | 0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893 | 0x3ae6d8a282d67893e17aa70ebffb33ee5aa65893 |
11155111 | Ethereum Sepolia (Testnet) | 0x3fC91A3afd70395Cd496C647d5a6CC9D4B2b7FAD | 0x3a9d48ab9751398bbfa63ad67599bb04e4bdf98b |
Supported Tokens for Swapping
Generally any two tokens on any supported chain can be swapped. A list of "verified" tokens (e.g. those offered for trading on major centralized exchanges) is available here: https://tokens.uniswap.org/. Quote responses will only be returned from UniswapX if the quote request contains tokens from this list. Any request for a quote where one or both tokens are not on the verified list will cause the quote to automatically route through Uniswap Protocol pools (unless no protocols are whitelisted in which case the request will fail).
Uniswap Labs maintains a list of "unsupported" tokens, for which we do not permit swapping due to legal or regulatory restrictions. Those tokens and their chains are available here: https://unsupportedtokens.uniswap.org/.
Note that all tokens do not necessarily have regular or sufficient liquidity to perform a swap between any two tokens at any volume. We always recommend submitting a quote request prior to performing a swap to confirm that there is both an available route or filler to complete the swap as well as available liquidity.
We recommend that end users always do their own due diligence before swapping any tokens.
Supported Tokens for Bridging
To get a list of tokens which can be bridged, and the chains between which they can be bridged, please make a request to the swappable_tokens endpoint.
How Do I Swap Native Tokens?
To swap native tokens, use the address 0x0000000000000000000000000000000000000000
. Please note that token trading for native input is not currently available for Uniswap X.
What Parameter Determines If I Receive a Gasless Quote?
When the quote endpoint's routingPreference
is set to BEST_PRICE
, the endpoint will attempt to find a quote that nets users the best execution price for a trade. Assuming the protocols
are not limited, the endpoint will attempt to get a gasless order and a Uniswap Protocol swap quote (e.g. from a V2, V3, or V4 pool), calculate which is currently providing the best price to the user including transaction costs, and return that quote.
Integrators of the API who only want only gasless quotes may limit the protocols
considered to just gasless options (e.g. UniswapX - see Token Trading Workflow for more details).
There are some scenarios where the API will not be able to get a gasless quote, even if the integrator attempts to force it. The most common reason for this is that the gas price of the swap is too high relative to the value of the trade. In cases where gas cost is 20% or more of the total trade value, the API will always return Uniswap Protocol swap quotes (if permitted by protocols
) or fail.
What Permit2 Address Do I Need to Whitelist for Approvals?
The Permit2 address for all chains we support EXCEPT zkSync is: 0x000000000022D473030F116dDEE9F6B43aC78BA3
.
The zkSync's Permit2 address is: 0x0000000000225e31D15943971F47aD3022F714Fa
.
What Are the API Rate Limits?
By default each API key is rate limited to 12 requests per second. If a higher rate is needed, please reach out to your Uniswap Labs contact.
Why Do UniswapX Quotes Have More Slippage Than the Tolerance I Set?
Quotes in UniswapX work differently than they do in the Uniswap AMMs. While AMM quotes return the market price with some buffer for slippage, UniswapX works to get users price improvement over the market price. The difference between the best and worst price in a UniswapX order is called its spread.
When you set a Slippage Tolerance in your quote request, you're only setting the amount below the market price you are willing to accept. UniswapX will still return a spread larger than your slippage tolerance when it's able to find a price above the market price.

