GET
/api/v1/etf/{asset}/dailyHobbyist tier+ · 30 req/minDaily per-ticker flow breakdown, newest first.
Same `flows` array you see embedded in the summary route, returned as a first-class resource so clients that only need the time series can skip the rest of the envelope.
Path parameters
Segments of the URL path, validated server-side.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| asset | enum | required | — | bitcoin | ethereum | btc | eth bitcoinethereumbtceth |
Query parameters
All query parameters are optional unless marked required.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| days | number | optional | 30 | Trailing window. Max 365. |
Response shape
Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.
data payloadtypescript
// Wrapped in the standard envelope:
// {
// data: /* shape below */,
// meta?: { total?: number; limit?: number; offset?: number; ... }
// }
{
asset: "BTC" | "ETH";
days: number;
flows: Array<{
date: string; // YYYY-MM-DD
tickerFlows: Record<string, number>; // $M per ticker
total: number; // $M
}>;
}Example
Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.
Requestbash
curl -sS "http://localhost:3000/api/v1/etf/eth/daily?days=7" \
-H "Authorization: Bearer cg_live_YOUR_KEY"Responsejson
{
"data": {
"asset": "ETH",
"days": 7,
"flows": [
{
"date": "2026-04-17",
"tickerFlows": { "ETHA": 22.1, "FETH": 18.4 },
"total": 40.5
}
]
},
"meta": { "total": 1, "days": 7, "asset": "ETH" }
}Next
Check the error code reference, or get an API key to try the request against your own account.