Token Terminal API: готові фінансові метрики для DeFi-аналітики
Ви запускаєте дашборд для порівняння DeFi-протоколів. Кожен запит до RPC — десятки викликів, дані розрізнені, P/E та Revenue доводиться рахувати вручну. Token Terminal API вирішує це: він агрегує фінансові метрики по 100+ протоколам за моделлю, знайомою з традиційних фінансів: revenue, P/E ratio, price-to-sales, TVL, DAU. Наші інженери налаштовують інтеграцію з кешуванням і повною TypeScript-типізацією. Для одного клієнта за 2 дні розгорнули моніторинг 20 протоколів з оновленням кожні 15 хвилин — це знизило навантаження на API в 5 разів.
Як Token Terminal API відрізняється від The Graph Subgraphs?
Головна відмінність — не вимагає написання власних subgraph-запитів та нормалізації даних. Отримання P/E через The Graph зайняло б 3–5 днів розробки, а через Token Terminal — 30 хвилин. API надає готові агрегати за категоріями (DEX, lending, RWAs), що прискорює побудову порівняльних дашбордів. Нижче — порівняння за ключовими параметрами.
| Критерій | Token Terminal API | The Graph Subgraphs | Dune Analytics API |
|---|---|---|---|
| Час на отримання P/E | 30 хв | 3–5 днів | 1–2 дні за наявності підписки |
| Складність інтеграції | Низька (REST, типи) | Висока (GraphQL, налаштування subgraph) | Середня (SQL-запити) |
| Ліміти запитів (безкоштовно) | 100/день | Необмежено (але складно) | 10 запитів/день |
| Покриття метрик | Revenue, fees, TVL, P/E, DAU | Всі on-chain дані, але сирі | Кастомні дашборди |
Структура API та ключові ендпоінти
Token Terminal надає REST API з ключем (нормальний Bearer-токен у заголовку Authorization). Документація покриває всі ендпоінти, ми використовуємо лише необхідні для вашого завдання.
Основні ендпоінти:
GET /v2/projects — список всіх протоколів GET /v2/projects/{project_id} — метрики одного протоколу GET /v2/projects/{project_id}/timeseries — історичні дані (daily) GET /v2/categories — агрегати за категоріями (DEX, lending тощо) Ключові поля у відповіді проекту:
| Поле | Опис |
|---|---|
revenue |
Annualized protocol revenue (не плутати з trading volume) |
fees |
Gross fees (revenue + LP rewards) |
tvl |
Total Value Locked |
ps |
Price-to-Sales ratio |
pe |
Price-to-Earnings ratio — відношення ціни токена до net income |
dau |
Daily active users (on-chain) |
market_cap_circulating |
Market cap по circulating supply |
Важливе розмежування: Token Terminal використовує protocol revenue (частка, що йде протоколу, а не LP) як аналог net income. Для Uniswap без активованого fee switch revenue = 0, всі fees йдуть LP. Це робить P/E Uniswap нескінченним за їхньою методологією — деталь, яку багато хто упускає при порівнянні.
Чому важливо кешувати запити Token Terminal?
Free tier дає 100 запитів на день. Якщо ваш дашборд використовують 10 осіб, кожен перегляд завантажує 5 віджетів — це 50 запитів. Без кешування free tier закінчиться за 2 дні. Paid плани починаються від 10 000 запитів/день, але все одно кеш економить гроші та прискорює завантаження.
Рекомендована схема: Redis з TTL 15 хвилин для поточних метрик (revenue, tvl) та 24 години для історичних даних минулих днів (вони незмінні). При перевищенні ліміту використовуємо exponential backoff, а не retry loop.
Як ми це робимо: приклад інтеграції
Використовуємо TypeScript з viem для роботи з гаманцями (якщо потрібно), але основна логіка — на чистому fetch. Приклад запиту даних з типізацією:
const BASE_URL = 'https://api.tokenterminal.com/v2' type ProtocolMetrics = { revenue30d: number fees30d: number tvl: number ps: number pe: number } async function getProtocolMetrics(projectId: string): Promise<ProtocolMetrics> { const response = await fetch(`${BASE_URL}/projects/${projectId}`, { headers: { 'Authorization': `Bearer ${process.env.TOKEN_TERMINAL_API_KEY}` } }) if (!response.ok) throw new Error(`API error: ${response.status}`) const data = await response.json() return { revenue30d: data.data.revenue_30d, fees30d: data.data.fees_30d, tvl: data.data.tvl, ps: data.data.ps, pe: data.data.pe } } async function getTimeseries(projectId: string, metric: string, days: number) { const params = new URLSearchParams({ metric, granularity: 'daily', from: new Date(Date.now() - days * 86400000).toISOString() }) const response = await fetch( `${BASE_URL}/projects/${projectId}/timeseries?${params}`, { headers: { 'Authorization': `Bearer ${process.env.TOKEN_TERMINAL_API_KEY}` } } ) return response.json() } Ми додаємо обробку помилок, ретраї з backoff та кеш-шар — все входить у стандартну поставку.
Що включає стандартна інтеграція?
- Підключення API: створення ключа, налаштування доступу, документування.
- Розробка TypeScript-клієнта з повною типізацією відповідей (включаючи timeseries).
- Реалізація кеш-шару (Redis або in-memory) з налаштовуваним TTL для кожного ендпоінта.
- Збірка готового дашборда (наприклад, на React + Chart.js) з відображенням ключових метрик та історичних графіків.
- Тестування на rate limits, обробка помилок та моніторинг через Tenderly або аналог.
Строки та формат роботи
Інтеграція займає від 2 до 5 днів залежно від складності дашборда та кількості протоколів. Ми надаємо гарантію на працездатність протягом 30 днів після здачі. Зв'яжіться з нами для безкоштовної оцінки вашого проекту — допоможемо обрати тариф і спроектуємо архітектуру.
Типові помилки при роботі з API
- Не враховувати різницю між
protocol revenueтаfees.revenue— це те, що реально залишається протоколу після LP-комісій. - Не кешувати історичні дані. Вони не змінюються, але щоразу витрачаються запити — можна влетіти в ліміт за годину.
- Ігнорувати
expiredключі. Ключі Token Terminal можуть протухати — налаштовуємо автоматичне оновлення через моніторинг.
Ми реалізували інтеграції для 5+ проектів, включаючи аналітичні платформи та DeFi-дашборди. Отримайте консультацію — ми оцінимо вашу задачу та запропонуємо оптимальне рішення.







