From the Curve team · every figure re-read from source on 20 August 2026, 16:00 UTC · Ethereum block 25,797,373 · Optimism block 155,821,049 · Arbitrum block 496,561,229
Hi team — first of all, thank you for supporting Curve in your API. We really appreciate the work you've put into it.
We've shipped a fair number of changes on our side since the integration was built, including Llamalend V2, and a few things in your Curve pages have drifted out of date. We've gathered everything in one place below so it's as little work as possible on your end. Whenever you have the capacity, we'd be very grateful if you could take a look — and of course we're happy to answer questions, hop on a call, or provide anything else that would help.
The pages this refers to: docs.yield.xyz/docs/curve and docs.yield.xyz/docs/curve-1.
Curve Lending now runs on a second factory, and the current docs cover V1 only. The V2 vaults expose exactly the same ERC-4626 interface (deposit / withdraw / convertToAssets), so nothing structural changes on your side.
Factory addresses, if you'd like to enumerate them yourselves — use market_count() and markets(uint256); note there is no vaults() getter on V2:
0x8f6b56ec5ddf1f2691a1059f1d3cd97ac9eab0bd (4 markets)0x5f94073e3f51c1fff92ffc6b4b06b7af193b3640 (3 markets)0xea6876dde9e3467564acbee1ed5bac88783205e0 (48), Arbitrum 0xcaec110c784c9df37240a8ce096d352a75922dea (22), Optimism 0x5ea8f3d674c70b020586933a0a5b250734798bef (5)| Collateral | Lends | Supplied | Lend APY | Vault (ERC-4626) | Controller |
|---|---|---|---|---|---|
| sfrxUSD | crvUSD | $11,278,536 | 2.31% | 0x3Da0F110079012387F47C6Fc6e878F10262E300a | 0x3cD4d86a2c65e57ce4b4121b67E2D2224BA41bbe |
| sDOLA | crvUSD | $7,639,302 | 1.86% | 0x2b5a321C3cb1F33e1ABECD047C2649D0b4C47eBa | 0xC77d97cF01737EB7aCE46cAb7cd9F60eC51a40c0 |
| syrupUSDC | crvUSD | $3,976,500 | 1.04% | 0xD0D347E14fbF1872affeaCb49d0b8B7182680E6C | 0x2fb54c8eae57767A9A509A395b9C4FA0702e2675 |
| svZCHF | crvUSD | $224,437 | 0.17% | 0xCb6e2c3d9Dba8fe6245B2c969320F2485dFce2FD | 0xFd85e847cDd2549f213E276e4B57B0690169F043 |
The receipt token is cvcrvUSD, the same as your existing entries, so your current ID scheme carries over unchanged — for example ethereum-crvusd-cvcrvusd-0x3da0f110079012387f47c6fc6e878f10262e300a-4626-vault.
| Collateral | Lends | Supplied | Lend APY | Vault (ERC-4626) | Controller |
|---|---|---|---|---|---|
| wstETH | WETH | $534,414 | 4.63% | 0x638eF78599C404A90545C6CFB460EFCfF8a019F7 | 0x745422BF49f3F6e4A8E12E4abD19339E7910F8C9 |
| wstETH | USDC | $375,383 | 3.76% | 0xaB504518C7B83ED6C67718877C4FFc2B52b29436 | 0xb5EC7A3D591877A66BE4f3eafdC4205E98A1BCAA |
| WBTC | USDC | $333,970 | 2.99% | 0xfF9a3085ed83dA377a94e32dd4745bB57411Ea24 | 0x9fC15ac3EF97093832f49B7997A58E29b49C56dE |
One thing worth flagging: these lend WETH and USDC rather than crvUSD, so the receipt tokens are cvWETH and cvUSDC, and the crvusd-cvcrvusd-… template doesn't map directly.
Three entries in the LP list are YieldBasis pools rather than Curve pools — specifically YieldBasis’ earlier v2-generation pools (each reports version() = v2.1.0d on-chain, against v3.0.0 for the current ones). YieldBasis is a separate product with its own app, and deposits into these markets are executed there, not through Curve. The Curve pool underneath is operated by the YieldBasis LEVAMM contract, which holds effectively the entire LP supply:
| Entry | Pool address | LP held by YieldBasis contracts |
|---|---|---|
| YB WBTC | 0xd9ff8396554a0d18b2cfbec53e1979b7ecce8373 | 99.95% |
| YB cbBTC | 0x83f24023d15d835a213df24fd309c47dab5beb32 | 99.96% |
| YB tBTC | 0xf1f435b05d255a5dbde37333c0f61da6f69c6127 | 99.94% |
Versions and LP shares in this section were re-read at Ethereum block 25,797,373.
In practice this means someone adding liquidity from a wallet does not end up with a YieldBasis position and won't earn what the listing implies — which is why we'd rather they weren't surfaced as Curve LP opportunities.
We'd love to do these properly, as a separate integration. YieldBasis markets take wrapped BTC and wrapped ETH, and we'd be glad to work with you on a dedicated YieldBasis integration so users can deposit into them through your API, matching the markets YieldBasis runs today. Happy to start that conversation whenever it suits you.
Two related notes. Please keep 0xec977f46467a3021785cff88894886e617abd65b (YB/crvUSD) — that one is an ordinary Curve pool for the YB token, with no YieldBasis contract holding LP.
And these are the current (v3) YieldBasis pools. They are the largest Curve pools absent from your catalog, so they may look like obvious additions — they're the same machinery and are best left out of the Curve LP list too. These four are the markets we'd cover in the dedicated YieldBasis integration:
0x862cb4e988fb66e72f128d1183829f8c05b6c6a0 — $91,617,524 — version() = v3.0.0, 99.99% of LP held by its LEVAMM0x313698667d7fdd6789a9bc70821309ff891e729a — $59,829,699 — v3.0.0, 99.99%0x656341ef90b622c6634e0573772ffb7f3669b9f3 — $56,572,958 — v3.0.0, 99.99%0x4f52c3a81e33521e5a9a47fd9d3be475d2279c2e — $36,171,140 — v3.0.0, 99.99%One more of the older generation, in case it comes up: YB WETH 0x6e5492f8ea2370844ee098a56dd88e1717e4a9c2 ($8,198,236) also reports version() = v2.1.0d and is 99.96% LEVAMM-held — same story as the three above, please don't add it either.
Of the 37 lending markets currently listed on your Curve page, these six are the ones we'd prioritise removing. We re-read the controller balance of every one of the 37 to make sure the list is complete — no other market on your page is in this state. In each, the vault's entire balance is lent out — the liquid borrow-token balance on the controller is zero, so maxWithdraw is zero for every depositor. A one-click deposit into them would leave users unable to withdraw.
| Collateral | Chain | Supplied | Liquid | Utilization | Lend APY | Vault |
|---|---|---|---|---|---|---|
| CRV | ethereum | $2,944,876 | 0 | 100% | 0.00% | 0xcea18a8752bb7e7817f9ae7565328fe415c0f2ca |
| IBTC | arbitrum | $82,106 | 0 | 100% | 0.00% | 0xe296ee7f83d1d95b3f7827ff1d08fe1e4cf09d8d |
| UwU | ethereum | $54,200 | 0 | 100% | 0.00% | 0x7586c58bf6292b3c9defc8333fc757d6c5da0f7e |
| FXN | arbitrum | $27,901 | 0.22 | 100% | 0.00% | 0xeba51f6472f4ce1c47668c2474ab8f84b32e1ae7 |
| pufETH | ethereum | $1,094 | 0 | 100% | 14.60% | 0xff467c6e827ebbea64da1ab0425021e6c89fbe0d |
| WETH | optimism | $132 | 0 | 100% | 12.75% | 0xe8dd743e376eca40cc9547236d46ed83e06fd471 |
The CRV market is the notable one — $2.94M supplied, zero liquidity and 0% lend APY, so depositors can neither withdraw nor earn.
Your Curve page notes that lending opportunities should exceed $10,000 TVL. Eleven of the markets you list are currently under it; two of those (pufETH and WETH on Optimism) are already in section 3 above, so here are the other nine. Entirely your call — they may just be adding noise:
| Collateral | Chain | Supplied | Vault |
|---|---|---|---|
| USDe | ethereum | $9,374 | 0xc687141c18f20f7ba405e45328825579fddd3195 |
| ynETHx | ethereum | $5,857 | 0xfc05ee9dec7275a273b1e1a8a821da3cdf752f9b |
| CRV | optimism | $5,707 | 0x2297d47020d2abd71fcf1b6dba0168b5c2d4380f |
| ycvxCRV | ethereum | $4,047 | 0xe5ee62f37825eed77215c9d2e9d424b79c62124a |
| sDOLA | ethereum | $3,081 | 0x14361c243174794e2207296a6ad59bb0dec1d388 |
| tBTC | arbitrum | $2,342 | 0x0e6ad128d7e217439beea90695fe7ec859c7f98c |
| ARB | arbitrum | $224 | 0x65592b1f12c07d434e95c7bf87f4f2f464e950e4 |
| EYWA | arbitrum | $8 | 0x747a547e48ee52491794b8ea01cd81fc5d59ad84 |
| WBTC | optimism | $3 | 0x451200382d931f62b2d2bc9c215d99aa106dc8d0 |
Borderline and working normally, so we'd leave them alone: sUSDS, asdCRV (Arbitrum), XAUM and sFRAX — all just above the threshold.
While cross-checking, we swept every chain the Curve API covers and found 31 pools above $1M TVL that aren't in the catalog (the only other ones above $1M are the four YieldBasis pools in section 2). The flagship ETH/stETH pool is the one that stands out. No obligation at all — sharing in case it's useful:
| Pool | Chain | TVL | Address |
|---|---|---|---|
| Curve.fi ETH/stETH | ethereum | $93,555,558 | 0xdc24316b9ae028f1497c275eb9192a3ea0f67022 |
| Curve.fi Factory Pool: stETH-ng | ethereum | $22,093,092 | 0x21e27a5e5513d6e65c4f830167390997aa84843a |
| apyUSD-apxUSD | ethereum | $19,450,831 | 0xe41be7b340f7c2eda4da1e99b42ee1b228b526b7 |
| strUSD/trUSD | ethereum | $10,076,597 | 0x25a637c80ad90177d0b3ff28aa2d3f74f7165ccb |
| World Liberty USD1 Pool | ethereum | $10,048,442 | 0xc09e82f81cb811db0922dd48206fc2e212322caf |
| USAT/USDT | ethereum | $10,006,963 | 0x0bdb2c3af83ee1d3196fa64d3162e54624b5f6b0 |
| USDC/USDat | ethereum | $9,567,076 | 0xf4d0cf32908b2c7f1021339c43df0f77f06896d7 |
| apxUSD-USDC v3 | ethereum | $7,069,192 | 0x6f63deedc9870d6c16fc644c6654748352cdc87c |
| trUSD/USDC | ethereum | $5,151,394 | 0xb723a224c9acf3891b20437b4d55dd45600f5fa3 |
| AUSD/USDC | ethereum | $5,002,372 | 0xe79c1c7e24755574438a26d5e062ad2626c04662 |
| frxUSD/trUSD | ethereum | $4,878,821 | 0xd1d954bc94c843815ec7b8119f2de00af27fa6ff |
| frxUSDFXB20291231 | fraxtal | $3,643,862 | 0xee454138083b9b9714cac3c7cf12560248d76d6b |
| HemiBTC/cbBTC/WBTC | ethereum | $3,500,844 | 0x66039342c66760874047c36943b1e2d8300363bb |
| evaUSDC/evaUSDT | ethereum | $3,366,549 | 0x3c0965582db7a0f660d491aa6174b9438f911c21 |
| Curve.fi USD-BTC-ETH | fantom | $2,845,074 | 0x3a1659ddcf2339be3aea159ca010979fb49155ff |
| iREET/pmUSD | ethereum | $2,804,979 | 0x57129759d0e23116c1e7402dbc084e53d2e209a2 |
| FIDD/USDC | ethereum | $2,747,634 | 0xe47e8ced9d94aa43c922627782e29b41a93202af |
| USD3/frxUSD | ethereum | $2,543,126 | 0x7ba89bc658c07569cfa6d7947adaa80181a24568 |
| wfrxETH/sfrxETH | fraxtal | $2,410,690 | 0xf2f426fe123de7b769b2d4f8c911512f065225d3 |
| pmUSD/frxUSD | ethereum | $2,385,642 | 0xbf5047039f2980c21eb5692c790bad8a9533b900 |
| DUSD/frxUSD | ethereum | $2,214,797 | 0x104d6a1b97a6cef88d905d7b865a378d90be932a |
| alUSD/frxUSD | ethereum | $2,202,870 | 0x17f9682c9cd1a448b31c0428f1d0783ed13a9fa3 |
| pmUSD/crvUSD | ethereum | $2,127,859 | 0xecb0f0d68c19bdaadaebe24f6752a4db34e2c2cb |
| USG/frxUSD | ethereum | $1,925,948 | 0xefc056790bb19702b2164ec6ea6ba3ae01d81195 |
| ftUSD/USDC | ethereum | $1,876,381 | 0xafec61e7a604f8f81f7cab64ec75bfa07c542630 |
| FIDD/USDT | ethereum | $1,750,402 | 0x8273cb2cf9af3228fd14af25b5b1de2a9676c372 |
| Curve.fi Factory Crypto Pool: cbETH/WETH | base | $1,642,658 | 0x11c1fbd4b3de66bc0565779b35171a6cf3e71f59 |
| frxUSDFXB20261231 | fraxtal | $1,590,184 | 0xbc3705b2bfd42d38e8fa2c8efdc3fdda645c3b2a |
| USG/USDC | ethereum | $1,463,765 | 0x97ba10115da528c113462ede9c20d7adc806d93f |
| frxUSD/sDOLA | ethereum | $1,013,492 | 0x9d8afd5ce19a3b948049468188f1de13951a4383 |
| USDQ/USDT | ethereum | $1,000,406 | 0x5a8c7623fee10542614e492c670a67e3dfe922f8 |
Today the integration surfaces the native yield only — lending APY, or trading fees for LP. Every Curve market also has a gauge that streams CRV on top: the receipt token (cvcrvUSD for lending, the LP token for pools) is staked in the gauge, and CRV accrues to the staked position — claimed through the Minter on Ethereum, or with claim_rewards() on the gauge itself on other chains. All 37 lending markets currently in your docs, and all four new V2 markets, have one.
If the staked leg is something your architecture can accommodate, users would earn lending APY plus CRV rather than lending APY alone, and the integrator collects the CRV. We'd be glad to send the full spec and help with the implementation — just let us know whether it looks feasible on your side.
api.curve.finance/v1/getLendingVaults/all, then independently re-enumerated from the factory contracts on-chain. The counts matched exactly: Ethereum V1 48/48, Arbitrum V1 22/22, Optimism V1 5/5, Ethereum V2 4/4, Optimism V2 3/3.symbol(), asset(), totalAssets(), controller() and factory(), plus the borrow-token balance of the controller — the liquidity a depositor can actually withdraw — via Multicall3.balanceOf / totalSupply reads at the block above; the holder addresses were found from the pools' Transfer logs and their contract names read from the verified sources.If anything here is unclear, or you'd like it in a different format — a CSV, a JSON payload, a PR against your docs — just say the word and we'll put it together. Thanks again for the integration.