GET /api/summary Summary
Returns a single-screen overview of the dataset — asset counts grouped by (type, status), per-type price-data date envelopes, and an FX-collection summary. Built for tools that need a quick “what does this dataset look like?” answer without unwinding to the symbol level.
Request
curl https://api.bytetree.io/api/summary
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
format | string | No | Response format: json (default), csv, or toon |
Response
| Field | Type | Description |
|---|---|---|
generatedAt | string | ISO timestamp captured when the server ran the aggregations. Within the 60-second cache window the same value is echoed on repeated calls |
assets | object[] | Asset counts grouped by (type, status) — only non-empty pairs appear, an absent pair means zero |
assets[].type | string | One of stock, crypto, etf, index, commodity |
assets[].status | string | One of pending, active, inactive |
assets[].count | number | Number of assets in this (type, status) bucket |
priceData | object[] | Per-type date envelopes from the PriceData collection |
priceData[].type | string | One of stock, crypto, index, commodity (FX is reported separately under fx) |
priceData[].earliestDate | string | ISO YYYY-MM-DD of the oldest record for this type |
priceData[].latestDate | string | ISO YYYY-MM-DD of the most recent record for this type |
priceData[].totalRecords | number | Total row count across all symbols of this type |
fx | object | Single object (not array) summarising the FX collection |
fx.records | number | Total row count of FxData |
fx.earliestDate | string | ISO YYYY-MM-DD of the oldest FX record |
fx.latestDate | string | ISO YYYY-MM-DD of the most recent FX record |
{
"generatedAt": "2026-05-07T13:23:39.271Z",
"assets": [
{ "type": "commodity", "status": "active", "count": 32 },
{ "type": "crypto", "status": "active", "count": 3 },
{ "type": "index", "status": "active", "count": 1 },
{ "type": "stock", "status": "active", "count": 211 }
],
"priceData": [
{ "type": "commodity", "earliestDate": "2005-01-03", "latestDate": "2026-05-07", "totalRecords": 168129 },
{ "type": "crypto", "earliestDate": "2009-10-05", "latestDate": "2026-05-07", "totalRecords": 12043 },
{ "type": "index", "earliestDate": "2005-01-03", "latestDate": "2026-05-07", "totalRecords": 5662 },
{ "type": "stock", "earliestDate": "2005-01-03", "latestDate": "2026-05-07", "totalRecords": 1050910 }
],
"fx": { "records": 264447, "earliestDate": "2005-01-03", "latestDate": "2026-05-07" }
}
Caching
Responses include Cache-Control: public, max-age=60. Aggregations are recomputed on miss; generatedAt reflects the recompute moment, not the request moment.
Surface boundary
/api/summary is intentionally dataset-wide. For per-symbol coverage and field-level detail use:
/api/assets— asset rows with metadata and latest score/api/prices,/api/prices/:symbol— price coverage by symbol/api/fx,/api/fx/:symbol— FX scores and metrics/api/metrics/latest,/api/metrics/:symbol/latest— computed metric coverage
Engine-state and task-log information is not exposed here; that surface is private.
Notes
- Requires an API key.
- Designed as the single tool call backing the public ByteTree MCP’s
summarise_dataset— concise enough for an LLM to ingest in one round-trip.