Інтеграція з DeBank API
DeBank агрегує DeFi-портфелі користувачів по 100+ протоколам та 30+ чейнам. Замість самостійного індексування позицій у Aave, Uniswap, Compound та ще двох десятків протоколів на Ethereum, Arbitrum, Polygon та BNB Chain одночасно — достатньо одного API-вызова. Це й є цінність DeBank: готова агрегована картина портфеля без власної індексуючої інфраструктури.
Структура DeBank API
DeBank OpenAPI надає кілька груп эндпоінтів:
Token балансы — /v1/user/token_list: всі ERC-20 токени на всіх підтримуваних чейнах з поточною ціною в USD та вартістю позиції.
Позиції у протоколах — /v1/user/protocol: конкретний протокол та його позиції (LP, staking, lending). /v1/user/complex_protocol_list — всі протоколи відразу.
Історія транзакцій — /v1/user/history_list з пагінацією.
NFT — /v1/user/nft_list.
const headers = { AccessKey: process.env.DEBANK_API_KEY }
// Всі токени користувача на всіх чейнах
const tokens = await axios.get(
`https://pro-openapi.debank.com/v1/user/all_token_list?id=${userAddress}&is_all=true`,
{ headers }
)
// Позиції у конкретному протоколі
const aavePositions = await axios.get(
`https://pro-openapi.debank.com/v1/user/protocol?id=${userAddress}&protocol_id=aave3`,
{ headers }
)
Модель даних: що повертає API
Кожен токен у відповіді містить: chain (ідентифікатор чейна), id (адреса контракту), amount (кількість), price (поточна ціна USD), usd_value (сума). Для LP-позицій та протокольних позицій структура складніша — вкладені об'єкти з detail_types, що описують тип позиції (lending, staking, vesting тощо).
Важливий нюанс: DeBank повертає price: 0 для токенів без ліквідності або з ціною нижче порога. Не інтерпретуйте це як помилку — нормальна ситуація для хвостових токенів.
Rate limiting та кеширование
DeBank Pro API має лімити по запитам у секунду. Для приложень з великою кількістю користувачів — обов'язкове server-side кеширование. Дані про балансы змінюються рідко відносно часу RPC-запиту. Кеш з TTL 60-300 секунд підходить для більшості use-cases.
Паттерн: при запиті даних користувача — повернути кешовані дані одразу, запустити background update. Користувач бачить актуальні дані при наступному запиті.
async function getUserPortfolio(address: string) {
const cacheKey = `portfolio:${address}`
const cached = await redis.get(cacheKey)
if (cached) {
// Запустити background update
updateInBackground(address, cacheKey)
return JSON.parse(cached)
}
const fresh = await fetchFromDeBank(address)
await redis.setex(cacheKey, 120, JSON.stringify(fresh))
return fresh
}
Обробка ошибок та fallback
DeBank API — зовнішній сервіс, він буває недоступним. Приложення повинне коректно обробляти 503, 429 (rate limit) та timeout. При timeout — повернути кешовані дані з позначкою про час останнього оновлення, не показувати порожній екран.
Для критичних функцій (наприклад, розрахунок коефіцієнта залогу для кредитного продукту) — не покладатися тільки на DeBank. Резервний канал: прямі RPC-вызови до контрактів через wagmi/viem для найважливіших позицій.
Орієнтири за часом
Базова інтеграція DeBank API (токени + позиції у протоколах + історія) — 1-2 дні. З кешуванням, обробкою ошибок та UI-компонентами портфеля — до 5 днів.
Вартість розраховується індивідуально.







