Curve Finance
Curve Finance is a DeFi automated market maker (AMM) optimized for low-slippage swaps among stablecoins and pegged assets across multiple chains. Curve maintains a public read-only REST API at api.curve.finance providing pool, gauge, factory, governance, lending, crvUSD, and TVL data. Smart-contract entry points are the primary write path; the REST API is for indexing and analytics.
APIs
Curve REST API
Public read-only REST API used by the Curve UI and third parties. Endpoints cover /getPools/all, /getSubgraphData, /getFactoryAPYs, /getLendingVaults, /getCrvUsdData, and simila...
Curve Smart Contracts
Curve's primary surface for swaps and liquidity is a set of audited Vyper smart contracts deployed across multiple chains (StableSwap and CryptoSwap pools, factories, gauges, vo...
Collections
Curve.finance API
OPENGraphQL
Curve Finance GraphQL
Curve Finance exposes on-chain data through The Graph Protocol subgraphs. The primary production subgraph is maintained by Messari and follows the DEX AMM schema standard (versi...
GRAPHQLPricing Plans
Rate Limits
FinOps
Curve Finance Finops
FINOPSResources
Sources
opencollection: 1.0.0
info:
name: Curve.finance API
version: 1.0.0
items:
- info:
name: Gauges
type: folder
items:
- info:
name: GET /getAllGauges
type: http
http:
method: GET
url: https://api.curve.finance/v1/getAllGauges
docs: 'Returns all Curve gauges, on all chains, in all registries. If any Curve pool, anywhere, has a gauge, then it’ll
be returned by this endpoint.
The only exception are sidechain non-factory gauges, which aren’t indexed by any registry, and have been discontinued
for a long time now. On sidechains, only factory gauges exist; on Ethereum, both "main" (non-factory) and factory gauges
exist.
'
- info:
name: Volumes and APYs
type: folder
items:
- info:
name: GET /getAllPoolsVolume/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getAllPoolsVolume/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: Returns total 24h volume for a chain.
- info:
name: GET /getBaseApys/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getBaseApys/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns all base APY data for Curve pools on each chain.
Note: [`/getVolumes/{blockchainId}`](#/default/get_getVolumes__blockchainId_) is preferred
'
- info:
name: GET /getFactoGaugesCrvRewards/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getFactoGaugesCrvRewards/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: Returns unboosted CRV APRs for sidechain facto gauges
- info:
name: GET /getFactoryAPYs/{blockchainId}/{version}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getFactoryAPYs/:blockchainId/:version
params:
- name: blockchainId
value: ''
type: path
- name: version
value: ''
type: path
docs: 'Returns *inaccurate* volume and base APY data for Curve pools on chains that aren’t indexed by either the [Curve
Prices API](https://prices.curve.fi/feeds-docs) or the [Curve subgraphs](https://github.com/curvefi/volume-subgraphs).
Data returned by this endpoint is necessarily inaccurate due to the manual chain-walking involved, coupled with the
limitations of RPC endpoints available for this subset of chains. Using this endpoint should be considered an imperfect
last resort.
If the chain for wh'
- info:
name: GET /getSubgraphData/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getSubgraphData/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns all 24h volume and base APY data for Curve pools on each chain.
It relies on [Curve subgraphs](https://github.com/curvefi/volume-subgraphs), and is being slowly transitioned to the
more reliable [`/getVolumes/{blockchainId}`](#/default/get_getVolumes__blockchainId_) endpoint (where support for more
chains is being added). When this transition is done, this endpoint will however remain available as simple proxy for
[`/getVolumes/{blockchainId}`](#/default/get_getVolumes__blockchainId_).
'
- info:
name: GET /getVolumes/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getVolumes/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns all 24h volume and base APY data for Curve pools on each chain.
It relies on the [Curve Prices API](https://prices.curve.finance/feeds-docs), and is meant as a more reliable replacement
to the [`getSubgraphData/[blockchainId]`](#/default/get_getSubgraphData__blockchainId_) endpoints.
Note: Not all chains are currently available on the Curve Prices API. Currently available chains: `ethereum | polygon
| arbitrum | base | optimism | fantom`
'
- info:
name: GET /getVolumes/ethereum/crvusd-amms
type: http
http:
method: GET
url: https://api.curve.finance/v1/getVolumes/ethereum/crvusd-amms
docs: 'Returns last daily volume for each [crvUSD AMM](https://docs.curve.fi/crvUSD/amm/)
'
- info:
name: crvUSD
type: folder
items:
- info:
name: GET /getCrvCircSupply
type: http
http:
method: GET
url: https://api.curve.finance/v1/getCrvCircSupply
docs: Returns the circulating supply of crvUSD
- info:
name: GET /getCrvusdTotalSupply
type: http
http:
method: GET
url: https://api.curve.finance/v1/getCrvusdTotalSupply
docs: Returns the total supply of crvUSD
- info:
name: GET /getCrvusdTotalSupplyNumber
type: http
http:
method: GET
url: https://api.curve.finance/v1/getCrvusdTotalSupplyNumber
docs: Returns the total supply of crvUSD as a number
- info:
name: GET /getScrvusdTotalSupplyNumber
type: http
http:
method: GET
url: https://api.curve.finance/v1/getScrvusdTotalSupplyNumber
docs: Returns the total supply of scrvUSD as a number
- info:
name: GET /getScrvusdTotalSupplyResult
type: http
http:
method: GET
url: https://api.curve.finance/v1/getScrvusdTotalSupplyResult
docs: Returns the total supply of scrvUSD as a JSON object
- info:
name: Deprecated
type: folder
items:
- info:
name: GET /getETHprice
type: http
http:
method: GET
url: https://api.curve.finance/v1/getETHprice
docs: Returns the current Ethereum USD price
- info:
name: GET /getFactoGauges/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getFactoGauges/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: '<i>Deprecated: please use `getAllGauges` instead</i>
'
- info:
name: GET /getFactoryCryptoPools/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getFactoryCryptoPools/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: '<i>Deprecated: please use `getPools/{blockchainId}/factory-crypto` instead</i>
'
- info:
name: GET /getFactoryPools
type: http
http:
method: GET
url: https://api.curve.finance/v1/getFactoryPools
docs: 'Returns pools in Curve’s legacy Ethereum factory, which has been superseded for years now
<i>Legacy: in most situations, you’ll want to focus on newer pools with `getPools/all/ethereum`</i>
'
- info:
name: GET /getFactoryTVL
type: http
http:
method: GET
url: https://api.curve.finance/v1/getFactoryTVL
docs: '<i>Deprecated: please use `getPools/ethereum/factory` instead</i>
'
- info:
name: GET /getFactoryV2Pools/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getFactoryV2Pools/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: '<i>Deprecated: please use `getPools/{blockchainId}/factory` instead</i>
'
- info:
name: GET /getMainPoolsAPYs/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getMainPoolsAPYs/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns *inaccurate* volume and base APY data for `main` registry pools on chains that aren’t indexed by either
the [Curve Prices API](https://prices.curve.finance/feeds-docs) or the [Curve subgraphs](https://github.com/curvefi/volume-subgraphs).
Data returned by this endpoint is necessarily inaccurate due to the manual chain-walking involved, coupled with the
limitations of RPC endpoints available for this subset of chains. Using this endpoint should be considered an imperfect
last resort.
If t'
- info:
name: GET /getMainPoolsGaugeRewards
type: http
http:
method: GET
url: https://api.curve.finance/v1/getMainPoolsGaugeRewards
docs: 'Returns Ethereum main registry pools gauge rewards
<i>Deprecated: please use `getPools/ethereum/main` instead</i>
'
- info:
name: GET /getMainRegistryPools
type: http
http:
method: GET
url: https://api.curve.finance/v1/getMainRegistryPools
docs: 'Returns Ethereum main registry pools addresses as an array
<i>Deprecated: please use `getPools/ethereum/main` instead</i>
'
- info:
name: GET /getMainRegistryPoolsAndLpTokens
type: http
http:
method: GET
url: https://api.curve.finance/v1/getMainRegistryPoolsAndLpTokens
docs: 'Returns an array of shape `{ address, lpTokenAddress }` for Ethereum main registry pools
<i>Deprecated: please use `getPools/ethereum/main` instead</i>
'
- info:
name: Misc
type: folder
items:
- info:
name: GET /getGas
type: http
http:
method: GET
url: https://api.curve.finance/v1/getGas
docs: Returns Ethereum gas prices (in gwei) (uses Blocknative API)
- info:
name: GET /getPlatforms
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPlatforms
docs: 'Returns platforms (also known as `blockchainId` in other API endpoints) that Curve is deployed on, and which pool
registries are available on each platform.
Useful to then query e.g. [`/api/getPools/{blockchainId}/{registryId}`](#/default/get_getPools__blockchainId___registryId_)
'
- info:
name: GET /getPointsCampaigns
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPointsCampaigns
docs: 'Returns points campaigns (see https://github.com/curvefi/curve-frontend/tree/main/packages/external-rewards/src)
'
- info:
name: GET /getRegistryAddress
type: http
http:
method: GET
url: https://api.curve.finance/v1/getRegistryAddress
docs: 'Returns address of the Ethereum registry
See <https://curve.readthedocs.io/registry-registry.html#registry>
'
- info:
name: GET /getWeeklyFees
type: http
http:
method: GET
url: https://api.curve.finance/v1/getWeeklyFees
docs: Returns weekly fees
- info:
name: Pools
type: folder
items:
- info:
name: GET /getHiddenPools
type: http
http:
method: GET
url: https://api.curve.finance/v1/getHiddenPools
docs: Returns a list of pool ids, grouped by chain id, that are known to be dysfunctional in some way. This list can be
used by front-ends to avoid displaying these pools, and protect users from interacting with these pools.
- info:
name: GET /getPoolList/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPoolList/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns addresses of all pools, in all registries, on a specific chain.
Note: For backward compatibility, in this endpoint the "factory" registry is renamed to "stable-factory"
'
- info:
name: GET /getPools/{blockchainId}/{registryId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPools/:blockchainId/:registryId
params:
- name: blockchainId
value: ''
type: path
- name: registryId
value: ''
type: path
docs: 'Returns information on all pools, in a specific registry, on a specific chain.
Note:
- Doesn''t work for Harmony: its 3pool isn''t in the main registry, and Harmony is lacking a crypto registry
- Doesn''t work for Moonbeam: it''s lacking a main registry
'
- info:
name: GET /getPools/all/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPools/all/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns all pools, in all registries, on a specific chain.
'
- info:
name: GET /getPools/all
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPools/all
docs: 'Returns all pools, in all registries, on all chains.
'
- info:
name: GET /getPools/big/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPools/big/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns all pools whose TVL is ≥$10k, in all registries, on a specific chain.
'
- info:
name: GET /getPools/big
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPools/big
docs: 'Returns all pools whose TVL is ≥$10k, in all registries, on all chains.
'
- info:
name: GET /getPools/empty/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPools/empty/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns all pools whose TVL is $0, in all registries, on a specific chain.
'
- info:
name: GET /getPools/empty
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPools/empty
docs: 'Returns all pools whose TVL is $0, in all registries, on all chains.
'
- info:
name: GET /getPools/small/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPools/small/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns all pools whose TVL is <$10k, in all registries, on a specific chain.
'
- info:
name: GET /getPools/small
type: http
http:
method: GET
url: https://api.curve.finance/v1/getPools/small
docs: 'Returns all pools whose TVL is <$10k, in all registries, on all chains.
'
- info:
name: Lending
type: folder
items:
- info:
name: GET /getLendingVaults/{lendingBlockchainId}/{lendingRegistryId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getLendingVaults/:lendingBlockchainId/:lendingRegistryId
params:
- name: lendingBlockchainId
value: ''
type: path
- name: lendingRegistryId
value: ''
type: path
docs: 'Returns information on all lending vaults, in a specific registry, on a specific chain.
'
- info:
name: GET /getLendingVaults/all/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getLendingVaults/all/:blockchainId
params:
- name: lendingBlockchainId
value: ''
type: path
docs: 'Returns all lending vaults, in all registries, on a specific chain.
'
- info:
name: GET /getLendingVaults/all
type: http
http:
method: GET
url: https://api.curve.finance/v1/getLendingVaults/all
docs: 'Returns all lending vaults, in all registries, on all chains.
'
- info:
name: Tokens
type: folder
items:
- info:
name: GET /getTokens/all/{blockchainId}
type: http
http:
method: GET
url: https://api.curve.finance/v1/getTokens/all/:blockchainId
params:
- name: blockchainId
value: ''
type: path
docs: 'Returns all tokens that can be found in Curve pools, on a specific chain.
Pools need at least $10k TVL for tokens to make this list.
Note that tokens’ `usdPrice` is very simply the usd price of that token reported
by the largest Curve pool on that chain, at that one point in time. There is no effort
made to average or smooth out those prices, they should be used for presentation purposes only.
'
bundled: true