defillama
Original:🇺🇸 English
Translated
DefiLlama API integration for DeFi analytics - TVL, stablecoin yields, vault/APY ranking, protocol revenue, fees, DEX volume, chain flows, bridges, and treasury data. Best for DeFi research, stablecoin farming, yield strategy screening, and protocol/chain market intelligence.
3installs
Added on
NPX Install
npx skill4agent add starchild-ai-agent/official-skills defillamaTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →DefiLlama API
Trit: -1 (MINUS - Validator/Data Source)
Color: #4A90D9 (Cold blue, 210°)
Comprehensive DeFi data from DefiLlama's API ecosystem.
Matching Keywords (intent triggers)
Use this skill when users ask about any of the following:
- TVL: TVL ranking, protocol TVL, chain TVL, TVL changes, DeFi market share
- Stablecoin yield: stablecoin yield, USDC/USDT APY, low-risk yield pools, safe yield, fixed-income-like DeFi
- Yield / Farming: APY ranking, yield pool screening, vault yield, lending APY, borrow rates, LSD/LRT yield
- DEX / Fees / Revenue: DEX volume, protocol fees, protocol revenue, revenue growth, which DEX revenue is growing fastest
- Flows / Rotation: capital flows, chain inflow/outflow, stablecoin netflow, liquidity rotation
- Protocol Research: protocol fundamentals, multi-protocol comparison, sector comparison, DeFi snapshot/report
Typical user prompts this skill should match:
- “Which DEX has seen the strongest revenue growth recently?”
- “Find me some low-risk stablecoin yield options with decent returns.”
- “Create a DeFi market snapshot for today (TVL / volume / fees).”
- “Compare ETH vs SOL on-chain flow changes over the last 30 days.”
Base URLs
| API | Base URL | Auth |
|---|---|---|
| Free API | | None (no key needed) |
| Pro API | | Key in path |
| Bridge API | | None |
Key rule: Usefor all free endpoints (TVL, chains, DEX, fees, prices). Usehttps://api.llama.fiONLY for pro endpoints (yields, derivatives, emissions). Env var:https://pro-api.llama.fi/{API_KEY}— used in pro URL path, NOT as HTTP header.DEFILLAMA_API_KEY
Most Common Endpoints (Start Here)
For 90% of DeFi analytics tasks, use these free endpoints ():
api.llama.fi| Task | Endpoint | Example |
|---|---|---|
| TVL Top N protocols | | Sort by |
| Single protocol detail | | e.g. |
| Chain TVL history | | |
| DEX volumes | | |
| Protocol fees | | |
| All chains TVL | | Sum |
⚠️ Pro endpoints (,/yields/*, etc.) require/emissionsin the URL path.DEFILLAMA_API_KEY
Proxy Requirement (sc-proxy)
When using fake API keys (for example ), requests must go through sc-proxy so the key can be replaced upstream.
fake-defillama-key-12345- Env key name:
DEFILLAMA_API_KEY - Auto proxy detection envs: ,
PROXY_HOSTPROXY_PORT - If /
HTTP_PROXYare unset, direct requests may hit upstream and return key errors.HTTPS_PROXY
Python template (recommended)
python
import os
import requests
host = os.getenv("PROXY_HOST")
port = os.getenv("PROXY_PORT")
session = requests.Session()
if host and port:
if ":" in host and not host.startswith("["):
host = f"[{host}]" # IPv6-safe
proxy = f"http://{host}:{port}"
session.proxies.update({"http": proxy, "https": proxy})
# Free endpoint (no key needed):
r_free = session.get("https://api.llama.fi/protocols", timeout=25)
print("Free:", r_free.status_code)
# Pro endpoint (key in URL path):
api_key = os.environ["DEFILLAMA_API_KEY"]
r_pro = session.get(f"https://pro-api.llama.fi/{api_key}/yields/pools", timeout=25)
print("Pro:", r_pro.status_code)Quick test commands
bash
set -a && source .env && set +a
python3 - << 'PY'
import os, requests
s = requests.Session()
host, port = os.getenv('PROXY_HOST'), os.getenv('PROXY_PORT')
if host and port:
if ':' in host and not host.startswith('['):
host = f'[{host}]'
p = f'http://{host}:{port}'
s.proxies.update({'http': p, 'https': p})
# Free endpoint
r1 = s.get('https://api.llama.fi/protocols', timeout=25)
print('free /protocols:', r1.status_code)
# Pro endpoint
k = os.environ['DEFILLAMA_API_KEY']
r2 = s.get(f'https://pro-api.llama.fi/{k}/yields/pools', timeout=25)
print('pro /yields/pools:', r2.status_code)
PYQuick Reference
TVL & Protocols
bash
# All protocols with TVL
GET /protocols
# Single protocol detail
GET /protocol/{slug}
# Chain TVL
GET /v2/chains
GET /v2/historicalChainTvl/{chain}Prices
bash
# Current prices (chain:address format)
GET /coins/prices/current/{coins}
# Historical
GET /coins/prices/historical/{timestamp}/{coins}
# Chart data
GET /coins/chart/{coins}?period=30dYields (Pro)
bash
GET /yields/pools # All yield pools
GET /yields/chart/{pool} # Pool history
GET /yields/poolsBorrow # Borrow rates
GET /yields/perps # Perp funding
GET /yields/lsdRates # LSD ratesVolume
bash
GET /overview/dexs?excludeChart=true # DEX volumes (recommended)
GET /overview/dexs/{chain}?excludeChart=true # Chain DEX
GET /summary/dexs/{protocol} # Protocol detail
GET /overview/options?excludeChart=true # Options
GET /overview/derivatives?excludeChart=true # Derivatives (Pro)Fees & Revenue
bash
GET /overview/fees?excludeChart=true # All fees/revenue (recommended)
GET /overview/fees/{chain}?excludeChart=true # Chain fees
GET /summary/fees/{protocol} # Protocol fees
# dataType: dailyFees | dailyRevenue | dailyHoldersRevenueBridges
bash
# Base: https://bridges.llama.fi
GET /bridges # All bridges
GET /bridge/{id} # Bridge detail
GET /bridgevolume/{chain} # Volume by chain
GET /transactions/{id} # Bridge txsDAT (Digital Asset Treasury)
bash
GET /dat/institutions # All institutions
GET /dat/institutions/{symbol} # e.g., MSTRUsage Script
clojure
;; See scripts/defillama.bb for full implementation
(require '[defillama :as dl])
;; TVL
(dl/protocols)
(dl/protocol "aave")
(dl/chain-tvl "Ethereum")
;; Prices
(dl/price "ethereum:0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48")
(dl/price-chart "coingecko:ethereum" {:period "30d"})
;; Yields
(dl/yield-pools)
(dl/pool-chart "747c1d2a-c668-4682-b9f9-296708a3dd90")
;; Volumes
(dl/dex-overview)
(dl/dex-protocol "uniswap")
;; Fees
(dl/fees-overview)
(dl/fees-protocol "hyperliquid")Endpoint Categories
Free Endpoints
- ,
/protocols,/protocol/{slug}/tvl/{slug} - ,
/v2/chains/v2/historicalChainTvl - ,
/coins/prices/*/coins/chart/* - ,
/overview/dexs/overview/options - ,
/overview/fees/summary/fees/*
Pro Endpoints (API Key Required)
- - All yield endpoints (stablecoin pools, APY ranking, borrow/perps/LSD)
/yields/* /overview/derivatives/tokenProtocols/{symbol}/inflows/{protocol}/{timestamp}/chainAssets- ,
/emissions/emission/{protocol} - ,
/categories,/forks/oracles - ,
/entities/treasuries - ,
/hacks/raises - ,
/etfs/*/dat/* - Bridge endpoints on bridges.llama.fi
Response Patterns
TVL Response
json
{"id": "2269", "name": "Aave", "tvl": 5200000000, "chains": ["Ethereum"]}Price Response
json
{"coins": {"ethereum:0x...": {"price": 0.999, "symbol": "USDC", "confidence": 0.99}}}Yield Pool Response
json
{"pool": "uuid", "chain": "Ethereum", "project": "aave-v3", "apy": 3.5, "tvlUsd": 1500000000}GF(3) Integration
This skill serves as MINUS (-1) validator in triads:
- Provides authoritative DeFi data
- Validates protocol metrics
- Constrains analysis with real data
Compose with:
- (+1): Execute based on data
aptos-agent - (0): Enrich with web context
exa-search
Output Format Guidelines (Chinese/English Queries)
Always format DeFi data responses as human-readable markdown. Support both Chinese and English queries.
Number Formatting
- TVL ≥ $1B → ; TVL ≥ $1M →
$X.XXB$XXXM - APY →
XX.X% - 24h changes → or
+X.X%-X.X% - Always include units: ,
$,%(billion),B(million)M
Recommended Output Templates
TVL Leaderboard:
markdown
| # | Protocol | TVL | Chains |
|---|--------------|-----|-----------|
| 1 | Aave V3 | $24.7B | Ethereum, Arbitrum |Yield Pools:
markdown
| Pool | APY | TVL | Risk |
|---------|-----|-----|---------|
| USDC | 5.2% | $500M | ✅ Low risk |Market Snapshot:
markdown
| Metric | Value |
|------------|-----------|
| Total TVL | $96B |
| DEX 24h volume | $5.7B |
| Fees 24h | $49M |Risk Labels
Always include risk indicators for yield pools:
- — stable APY < 20%, no IL risk
✅ Low risk - — APY 20-100%, or IL risk present
⚠️ Medium risk - — APY > 100% (likely incentive-driven, unsustainable)
🔴 High risk
Tip: excludeChart Parameter
For volume/fee overview endpoints, always add to reduce response size:
?excludeChart=truebash
GET /overview/dexs?excludeChart=true # DEX volumes (much faster)
GET /overview/fees?excludeChart=true # Fee data (much faster)Common Pitfalls & Gotchas
1. Wrong Base URL for Free Endpoints
❌ WRONG: → returns 404 "Path needs to start with /yields/..."
✅ CORRECT:
https://pro-api.llama.fi/protocolshttps://api.llama.fi/protocolsFree endpoints NEVER go through .
pro-api.llama.fi2. Pro Endpoint Without API Key
❌ WRONG: → 401 or wrong route
✅ CORRECT:
https://pro-api.llama.fi/yields/poolshttps://pro-api.llama.fi/{DEFILLAMA_API_KEY}/yields/poolsThe API key is in the URL path, not in a header.
3. Missing excludeChart=true
for Volume/Fee Endpoints
excludeChart=trueWithout this param, returns large chart history arrays.
Always add for summary queries.
/overview/dexs?excludeChart=true4. Handling TVL Null Values
When sorting protocols by TVL, filter first:
python
valid = [p for p in protocols if isinstance(p.get('tvl'), (int, float)) and p['tvl'] > 0]5. Stablecoins vs TVL
DefiLlama's chain TVL includes ALL DeFi assets, not just stablecoins.
For stablecoin-specific flows, use the API (separate from pro-api).
When asked about "stablecoin flows", the chain TVL change is a reasonable proxy.
stablecoins.llama.fi6. Yields Pool UUID
The field in is a UUID like .
Use this UUID (not token address) for history.
pool/yields/pools"747c1d2a-c668-4682-b9f9-296708a3dd90"/yields/chart/{pool}7. Stablecoin Yield Screening Baseline
For “conservative stablecoin yield” requests, start with this baseline filter:
stablecoin == truetvlUsd >= 50_000_000- between
apyand2(drop extreme incentive spikes)20 ilRisk == "no"- Prefer for conservative profiles
exposure == "single"
Workflow Examples (Agent Recipes)
Recipe 1: DeFi TVL Top 10 (1 call)
python
r = requests.get("https://api.llama.fi/protocols")
protocols = r.json()
top10 = sorted([p for p in protocols if p.get('tvl',0) > 0], key=lambda x: x['tvl'], reverse=True)[:10]
# Output: markdown table with | # | Protocol | TVL | Chain |Recipe 2: ETH vs SOL 30-day TVL comparison (2 calls)
python
r1 = requests.get("https://api.llama.fi/v2/historicalChainTvl/Ethereum")
r2 = requests.get("https://api.llama.fi/v2/historicalChainTvl/Solana")
# Filter last 30d: [d for d in r1.json() if d['date'] >= time.time() - 30*86400]
# Output: | Chain | TVL 30d ago | TVL today | Change % |Recipe 3: Stablecoin yield shortlist (1 call)
python
r = requests.get(f"https://pro-api.llama.fi/{API_KEY}/yields/pools")
raw = r.json()
pools = raw.get('data', raw) if isinstance(raw, dict) else raw
safe = [p for p in pools
if p.get('stablecoin') is True
and (p.get('tvlUsd') or 0) >= 50_000_000
and (p.get('apy') or 0) >= 2
and (p.get('apy') or 0) <= 20
and p.get('ilRisk') == 'no']
top = sorted(safe, key=lambda x: x.get('apy', 0), reverse=True)[:10]
# Output: | Project | Chain | Symbol | APY | TVL | Risk |Recipe 4: DeFi Market Snapshot (3 calls)
python
chains = requests.get("https://api.llama.fi/v2/chains").json()
dexs = requests.get("https://api.llama.fi/overview/dexs?excludeChart=true").json()
fees = requests.get("https://api.llama.fi/overview/fees?excludeChart=true").json()
# total_tvl = sum(c['tvl'] for c in chains if isinstance(c.get('tvl'), (int,float)))
# Output: snapshot table with TVL, DEX 24h vol, Fee 24hRecipe 5: Protocol TVL spike analysis (2 calls)
python
r1 = requests.get("https://api.llama.fi/protocols") # find protocol with big change_1d
r2 = requests.get(f"https://api.llama.fi/protocol/{slug}") # get chainTvls detail
# Output: | Hypothesis | Explanation | How to verify | (table + step-by-step verification)Stablecoin Data
For stablecoin-specific analytics (distinct from general TVL), use the stablecoins API:
bash
# Stablecoins overview (separate from pro-api)
GET https://stablecoins.llama.fi/stablecoins?includePrices=true
# Chain-specific stablecoin data
GET https://stablecoins.llama.fi/stablecoincharts/{chain}
# chain = "Ethereum", "Solana", "BSC", etc.
# All chains stablecoin summary
GET https://stablecoins.llama.fi/stablecoinchainsWhen users ask about "stablecoin net flows" or "stablecoin inflows":
- Use for 30-day stablecoin TVL change (more accurate than general TVL)
stablecoincharts/{chain} - Or use as proxy if stablecoin API is unavailable
/v2/historicalChainTvl/{chain}
Yields Pool Data Handling
The response is :
/yields/pools{"data": [...], "status": "success"}python
r = session.get(f"https://pro-api.llama.fi/{api_key}/yields/pools")
raw = r.json()
pools = raw.get('data', raw) if isinstance(raw, dict) else raw
# Filter example: TVL > $50M and APY > 0
filtered = [p for p in pools if p.get('tvlUsd', 0) >= 50_000_000 and (p.get('apy') or 0) > 0]Key pool fields:
| Field | Type | Description |
|---|---|---|
| UUID string | Unique pool identifier |
| string | Chain name |
| string | Protocol name |
| string | Token pair (e.g. "USDC-WETH") |
| number | TVL in USD |
| number | Current APY % |
| number | Base APY (lending/trading fees) |
| number | Incentive APY (token rewards) |
| "yes"/"no" | Impermanent loss risk |
| "single"/"multi" | Single vs multi-asset exposure |
| number | APY change past 7 days |