Properties
| Name | Type | Description |
|---|---|---|
| assets | array | One entry per asset in the response. |
| funds | array | Every fund that has started trading. |
| updatedAt | string | Response generation time (UTC, ISO 8601). |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://artifacts.apis.io/cryptoetf-today/json-schema/cryptoetf-today-funds-dto-schema.json",
"title": "FundsDto",
"x-generated": "2026-11-04",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/_original/cryptoetf-today-v1-openapi.json#/components/schemas/FundsDto",
"type": "object",
"properties": {
"assets": {
"description": "One entry per asset in the response.",
"type": "array",
"items": {
"$ref": "#/$defs/AssetNetAssetsDto"
}
},
"funds": {
"description": "Every fund that has started trading.",
"type": "array",
"items": {
"$ref": "#/$defs/FundDto"
}
},
"updatedAt": {
"type": "string",
"description": "Response generation time (UTC, ISO 8601)."
}
},
"required": [
"assets",
"funds",
"updatedAt"
],
"$defs": {
"AssetNetAssetsDto": {
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "Asset ticker symbol."
},
"asset": {
"type": "string",
"description": "Internal asset id."
},
"totalNetAssetsUsdM": {
"type": [
"number",
"null"
],
"description": "Sum of the funds’ net assets in millions of USD, rounded to 0.1."
},
"date": {
"type": [
"string",
"null"
],
"description": "Day the total belongs to (YYYY-MM-DD)."
},
"coinsHeld": {
"type": [
"number",
"null"
],
"description": "Coins held by all US spot ETFs of the asset on `coinsDate`: reported by issuers, estimated where they do not publish coins."
},
"coinsDate": {
"type": [
"string",
"null"
],
"description": "Day `coinsHeld` belongs to (YYYY-MM-DD)."
},
"supplySharePct": {
"type": [
"number",
"null"
],
"description": "`coinsHeld` as a share of the asset’s circulating supply, percent."
}
},
"required": [
"symbol",
"asset",
"totalNetAssetsUsdM",
"date",
"coinsHeld",
"coinsDate",
"supplySharePct"
]
},
"FundDto": {
"type": "object",
"properties": {
"ticker": {
"type": "string",
"description": "Fund ticker."
},
"name": {
"type": "string",
"description": "Fund name."
},
"issuer": {
"type": "string",
"description": "Issuer of the fund."
},
"symbol": {
"type": "string",
"description": "Ticker symbol of the asset the fund holds."
},
"asset": {
"type": "string",
"description": "Internal asset id; works as the {asset} path parameter."
},
"exchange": {
"type": "string",
"description": "Listing exchange."
},
"listedAt": {
"type": "string",
"description": "First trading day on the exchange (YYYY-MM-DD)."
},
"delistedAt": {
"type": [
"string",
"null"
],
"description": "Last trading day of a fund that has closed (YYYY-MM-DD); null while the fund trades."
},
"sponsorFeePct": {
"type": [
"number",
"null"
],
"description": "Sponsor fee, percent per year; null if not stated."
},
"netAssetsUsdM": {
"type": [
"number",
"null"
],
"description": "Current net assets (AUM) in millions of USD, rounded to 0.1; null if unknown."
},
"coinsHeld": {
"type": [
"number",
"null"
],
"description": "Coins held by the fund, as the issuer last reported them (see `coinsHeldDate`); null when the issuer does not publish holdings in coins."
},
"coinsHeldDate": {
"type": [
"string",
"null"
],
"description": "Day `coinsHeld` belongs to (YYYY-MM-DD). Can be a day or two older than `netAssetsDate`."
},
"netAssetsDate": {
"type": [
"string",
"null"
],
"description": "Day the net assets belong to (YYYY-MM-DD); null if unknown."
},
"netAssetsBasis": {
"type": [
"string",
"null"
],
"enum": [
"reported",
"repriced",
"estimated"
],
"description": "reported = the figure the issuer published for that day; repriced = the latest published figure moved to that day by the change in NAV of the other funds; estimated = coins held times the coin price, for issuers that publish no daily holdings."
},
"effectiveFeePct": {
"type": [
"number",
"null"
],
"description": "Fee charged today, percent per year: the sponsor fee, or the lower rate of a fee waiver in effect."
},
"feeWaiver": {
"nullable": true,
"description": "A fee waiver in effect today; null when there is none.",
"allOf": [
{
"$ref": "#/$defs/FundFeeWaiverDto"
}
]
},
"feeRevenueUsdMPerYear": {
"type": [
"number",
"null"
],
"description": "Current net assets times `effectiveFeePct`: the yearly sponsor fee revenue at today’s assets, millions of USD."
},
"supplySharePct": {
"type": [
"number",
"null"
],
"description": "Coins held by the fund (reported, or estimated where the issuer does not publish coins) as a share of the asset’s circulating supply, percent."
},
"staking": {
"nullable": true,
"description": "Staking of the fund; null when not available.",
"allOf": [
{
"$ref": "#/$defs/FundStakingDto"
}
]
}
},
"required": [
"ticker",
"name",
"issuer",
"symbol",
"asset",
"exchange",
"listedAt",
"delistedAt",
"sponsorFeePct",
"netAssetsUsdM",
"coinsHeld",
"coinsHeldDate",
"netAssetsDate",
"netAssetsBasis",
"effectiveFeePct",
"feeWaiver",
"feeRevenueUsdMPerYear",
"supplySharePct",
"staking"
]
},
"FundFeeWaiverDto": {
"type": "object",
"properties": {
"feePct": {
"type": "number",
"description": "Fee charged under the waiver, percent per year."
},
"aumCapUsdM": {
"type": [
"number",
"null"
],
"description": "The waiver covers the first this many millions of USD of assets; null = all assets."
},
"until": {
"type": [
"string",
"null"
],
"description": "Last day of the waiver (YYYY-MM-DD)."
}
},
"required": [
"feePct",
"aumCapUsdM",
"until"
]
},
"FundStakingDto": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"active",
"allowed_not_started",
"pending_amendment",
"no",
"not_stakeable",
"unknown"
],
"description": "active = the fund stakes; allowed_not_started = its documents allow staking but it has not started; pending_amendment = a filing to allow staking is pending; no = it does not stake; not_stakeable = the asset cannot be staked (bitcoin, litecoin, dogecoin, zcash, XRP); unknown = not confirmed in filings."
},
"sharePct": {
"type": [
"number",
"null"
],
"description": "Share of the fund’s coins staked as the issuer last disclosed it, percent."
},
"sharePctDate": {
"type": [
"string",
"null"
],
"description": "Day `sharePct` belongs to (YYYY-MM-DD)."
},
"yieldNetPct": {
"type": [
"number",
"null"
],
"description": "Net staking yield, percent per year. See `yieldBasis` for where it comes from."
},
"yieldBasis": {
"type": [
"string",
"null"
],
"enum": [
"disclosed",
"computed",
"distributions"
],
"description": "disclosed = published by the issuer; computed = growth of coins per share from daily issuer snapshots; distributions = the last cash payout annualised."
},
"rewards": {
"type": [
"string",
"null"
],
"enum": [
"accrue_to_nav",
"cash_distribution",
"mixed",
"to_sponsor"
],
"description": "How rewards reach shareholders: kept in the fund, paid out in cash, partly both, or kept by the sponsor."
},
"providers": {
"description": "Staking providers named in filings or on the issuer’s page.",
"type": "array",
"items": {
"type": "string"
}
},
"filingUrl": {
"type": [
"string",
"null"
],
"description": "The filing the staking status is taken from."
}
},
"required": [
"status",
"sharePct",
"sharePctDate",
"yieldNetPct",
"yieldBasis",
"rewards",
"providers",
"filingUrl"
]
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/cryptoetf-today-funds-dto"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.