0x API hosts an Orderbook of 0x Limit Orders that anyone can provide liquidity to or take liquidity from
The 0x API is the liquidity and data endpoint for DeFi. It lets you access aggregated liquidity from tens of on-chain and off-chain decentralized exchange networks, across multiple blockchains. It comes with many parameters to customize your requests for your application and your users.
We offer hosted versions for different Ethereum networks. Requests for more networks, and questions/feedback in general should be directed at our Discord. 0x API has an Orderbook on the following chains:
Each 0x HTTP API
pathis versioned independently using URI versioning. The format is:
For example, you can request
quoteendpoint in the
swappath. URLs not adhering to this format are not supported.
A major version bump occurs whenever a backwards incompatible change occurs to an
endpoint, in which case every
pathwill be on the next version. Old versions of the API will be deprecated and new features will be rolled out to them on a best-effort basis.
Requests that return potentially large collections are paginated and respond to the
Any endpoint that follows this convention will display the following:
This endpoint is paginated.
And will only document the objects in the
recordsfield. By default, a request returns page 1 with 20 orders. It is possible to change which page and how many records are returned per page via the query parameters. For example, to fetch page 3 with 50 records per page:
If a query provides an unreasonable (ie. too high)
perPagevalue, the response can return a validation error as specified in the errors section. If the query specifies a
pagethat does not exist (ie. there are not enough
records), the response will return an empty
- Submitting a 0x API quote selling ERC20 tokens, you will need to give an allowance to the contract address. This address can be found either as the value of
allowanceTargetreturned in the quote response or in the ExchangeProxy Address column in the "Addresses by Network" table below.
- Trading ERC20 tokens using the Exchange contract, you will have to give an allowance to the ERC20Proxy contract.
- Note: For swaps with "ETH" as sellToken, wrapping "ETH" to "WETH" or unwrapping "WETH" to "ETH" no allowance is needed, a null address of
0x0000000000000000000000000000000000000000is then returned instead.
Unless the spec defines otherwise, errors to bad requests should respond with HTTP 4xx or status codes.
"reason": "Validation failed",
"reason": "Invalid address"
This section outlines API JSON objects that are common to many endpoints.
- All requests and responses should be of "application/json" content type.
- All token amounts are sent in amounts of the smallest level of precision (base units). (e.g if a token has 18 decimal places, selling 1 unit of the token would show up as selling
1000000000000000000base units by this API).
- All addresses are sent as lower-case (non-checksummed) Ethereum addresses with the
- All parameters should use lowerCamelCase.