GET /v1/etf/flows
#GET /v1/etf/flowsgetEtfFlows
One asset's spot ETF flows per fund and in total, daily or quarterly
| Scope | market:read |
|---|---|
| Lowest tier | sandbox |
| Weight (units) | 1; 5 over 366 days |
| History each tier may read | Sandbox: 30 days; Starter: 365 days; Elite (included): 365 days; Developer: 1825 days; Business: all recorded |
| SDK | Python client.market.etf_flows ยท JavaScript cd.market.etfFlows |
Parameters
| Parameter | In | Type | Description |
|---|---|---|---|
asset required | query | string | btc, eth, sol ... (see /v1/etf/summary). |
resolution | query | "daily" | "quarterly" | daily (default) or quarterly filings. |
from | query | string | Start, inclusive: unix seconds or RFC 3339. |
to | query | string | End, exclusive: unix seconds or RFC 3339. Default now. |
Errors
400invalid_param, invalid_cursor401unauthorized: missing, unknown, revoked or expired key403insufficient_scope, tier_required404not_found, not_available, not_in_sandbox422window_too_large429rate_limited (per minute) or quota_exhausted (month; X-Quota-* headers, Retry-After = seconds to the next month); see Retry-After503api_disabled, overloaded
Example
curl "https://api.chartdeck.trade/v1/etf/flows?asset=btc" \
-H "Authorization: Bearer $CHARTDECK_API_KEY"from chartdeck import Client
client = Client() # reads CHARTDECK_API_KEY
r = client.market.etf_flows(asset="btc")
print(r.data, r.meta["attribution"])import { ChartDeck } from '@chartdeck/api';
const cd = new ChartDeck(); // reads CHARTDECK_API_KEY
const r = await cd.market.etfFlows({ asset: "btc" });
console.log(r.data, r.meta.attribution);