get_universe
The coverage picture: the last complete interval, how many markets are in the universe for a scope, how much history sits behind them, and how densely it is populated. Pick bar (1d, the default, or 1h on a Pro key) to describe completed days or completed hours. The range counts cover the last 7 days at bar: 1h (pass days, 1..30, to widen them) and the whole published range at bar: 1d. A compact SUMMARY by default — pass top_n (1..50) only if you need the per-market counts.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bar | No | `1d` (the default) for completed UTC days, `1h` for completed UTC hours. An interval, at either grain, is stamped by the instant it **closes** — an hourly `…T09:00:00Z` is the hour that ended at 09:00. | |
| day | No | The day or hour to describe: `YYYY-MM-DD` or `latest` at `bar: 1d`, a completed `YYYY-MM-DDTHH:00:00Z` (the hour that *ended* there) or `latest` at `bar: 1h`. | |
| days | No | How many days of completed intervals the range counts cover, 1..30. Defaults to 7 at `bar: 1h` — the hourly source publishes one object per completed hour, so an unbounded inventory would open every hour ever published — and to the whole published range at `bar: 1d`, whose source is one object per month. The window the counts actually covered is `interval_start`..`interval_end`, and `notes` says when it was bounded. | |
| scope | No | `crypto` (the default), `hip3`, or `all`. | |
| top_n | No | Per-market detail is off by default; passing a value (1..50) returns that many markets, listed by name, alongside the summary. |
Output Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| bar | Yes | The grain this answer was computed at: `1d` or `1h`. | |
| as_of | Yes | The interval the per-population counts describe. | |
| coins | No | Per-market detail, only when requested. Markets are listed by name. | |
| notes | Yes | ||
| scope | Yes | ||
| source | Yes | ||
| row_count | Yes | Rows in scope over the counted range. | |
| truncated | Yes | True when more markets exist than the detail list returned. | |
| interval_end | Yes | The newest interval the counts below cover — the same interval `as_of` describes, since the counts are the history behind those populations. | |
| matched_count | Yes | Markets the counted range actually represents — the ones with at least one row in it, which is every market in `eligible_count` at the described interval. | |
| visible_count | Yes | Markets in your plan's slice on the described interval, before any scope class is applied. | |
| eligible_count | Yes | Distinct markets in scope over the counted range. | |
| interval_count | Yes | Distinct intervals in the range the counts below cover. | |
| interval_start | Yes | The oldest interval the counts below cover: the published range start, the caller's history floor when the plan clips it, or the start of the window `days` bounded them to. The response says which, in `notes`. | |
| months_covered | Yes | ||
| market_count_hip3 | Yes | Markets with a deployer prefix on the described interval. | |
| market_count_total | Yes | Distinct markets in scope over the counted range. | |
| market_count_crypto | Yes | Markets without a deployer prefix on the described interval, whatever scope was asked for. | |
| coverage_from_manifest | Yes | True when the interval range came from the published coverage manifest, false when it had to be read from the data or the object listing itself. | |
| rows_per_market_interval | Yes | `row_count` divided by (intervals × markets) — how densely the counted range is populated. Below 1.0 means some markets are missing some intervals. |