> ## Documentation Index
> Fetch the complete documentation index at: https://octo-98895abd.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Coverage

> Latest loaded date per dataset — check it before you claim anything is current.

<Note>
  **Parameters, response columns and types are generated** from the SQL catalog and
  render under **Endpoints → Coverage & catalog** in the sidebar. This page carries what a
  schema cannot: the conventions, the nulls that are deliberate, and the traps.
</Note>

### Overview

`coverage` answers **how far the data actually goes**. Call it before reporting a "latest" figure, before reading an empty result as a fund that stopped filing, and before treating a series as up to date. No arguments; one row per dataset, plus one `funds_<family>` row per fund family (families file on different cadences, so one blended date misreads all of them).

```sql theme={null}
api.coverage()
```

### The five columns

| Column | Means |
| - | - |
| `as_of` | The newest period that has landed **and has actually elapsed**: freshness, bounded by today. Null means the dataset is empty. |
| `complete_through` | The newest period classified **complete**; what the default windows serve. `null` for `financials`: no completeness model exists for company filings. |
| `newest_period` | The newest period **key** present, unbounded. Can sit in the future (FIP is keyed 31-December). **Never read as freshness.** |
| `landed_at` | When ingest last **succeeded** (`cvm_ingest_log`, `status = 'ok'` with a finish time). A run in flight has not landed; a later failed run never advances it. Null when none is recorded. |
| `landed_git_sha` | The git commit of the very run that set `landed_at`. Null when that run recorded none (before catalog v34, or outside GitHub Actions); **never borrowed** from an older run. |

`landed_at` is "is the pipeline healthy"; `as_of` is "how far does the data go". A days-old `landed_at` with a current `as_of` means ingest stopped but the data it left is fine. Diff `landed_git_sha` against a fix you are waiting on to know whether the newest rows were parsed before or after it.

### Datasets

| Dataset | `as_of` is |
| - | - |
| `quotes` | The most recent B3 cash session, all tickers and boards. |
| `funds` | The most recent filing period in the fund registry. |
| `fund_nav` | The most recent period in the monthly fundamentals fact. |
| `derivatives` | The most recent session across options and termo (`tpmerc` `070`, `080`, `030`). |
| `financials` | The newest reference date any ITR/DFP filing has reached, read from the filing index. |
| `anbima_classes` | The newest boletim reference month. |
| `fidc_cedentes` / `fidc_sacados` / `fidc_sectors` / `fidc_scr` | The newest month landed per [FIDC concentration](/api-docs/fidc) tab; `notes` states where each starts (tab I's cedente slots 2019-11, tab X 2023-10). |
| `fidc_tranches` / `fidc_aging` | The newest month landed for the [FIDC tranche and aging](/api-docs/fidc-structure) tabs; both begin in **2013-01** (CVM's yearly HIST archive through 2024-12, the monthly informe after). |
| `fnet_documents` | The newest delivery day held in the [FNET document register](/api-docs/fnet-documents); `complete_through` is the day before it. History begins at Silo's first crawl or backfill, and fund links come from a fortnightly sweep, so the newest documents may have no cnpj yet. `landed_at` is the register crawl alone. |
| `inflation` | The newest month of headline IPCA (SGS 433); cores, classifications and groups publish the same day. `landed_at` is the SGS ingest alone, never a PTAX or Focus run. |
| `inflation_items` | The newest month of IBGE's item tree; `notes` states the 2020-01 structure change (SIDRA 7060 replaced 1419, item codes changed, `item_number` is the continuity). |
| `company_events` | The newest IPE delivery date held ([company events](/api-docs/company-events)); `complete_through` is null. History starts in 2015; filings CVM published without a protocol number are not held. `landed_at` is the IPE ingest alone. |
| `macro_series` | The newest elapsed observation of any of the nine [macro series](/api-docs/macro); `newest_period` can sit in the future (the Selic target is published ahead). `landed_at` is the SGS ingest. |
| `ptax` | The newest PTAX business day held; `landed_at` is the PTAX ingest alone, never an SGS run. |
| `di_futures` / `reference_curves` | The newest B3 session held for the [DI1 contracts and reference curves](/api-docs/rates); each `landed_at` is its own file's ingest. History starts 2018-01-02 and 2008-01-02; long curve vertices are B3's extrapolation. |

**Not covered**: `fund_holdings` and `fund_debentures` have no row yet; read the newest `period` off the rows themselves.

`notes` carries a caveat the dates cannot and is null when there is none. Rows with one today: `funds_fidc` (the 2020-11 delinquency regime break), `funds_fip` (why `newest_period` runs ahead of the calendar), `fund_nav` (see `catalog().applicability`), the four FIDC concentration rows, the two FIDC structure rows, the five B3 lending / flow rows (the ratchet), the two inflation rows, `company_events`, and `macro_series` / `ptax` (units and cadences).

### Example

<CodeGroup>
  ```bash curl theme={null}
  curl -s -X POST "$SILO_URL/rpc/coverage" \
    -H "apikey: $SILO_ANON_KEY" \
    -H "Content-Type: application/json" \
    -d '{}'
  ```

  ```python Python theme={null}
  rows = requests.post(f"{URL}/rpc/coverage", headers=H, json={}).json()
  as_of = {r["dataset"]: r["as_of"] for r in rows}
  ```
</CodeGroup>

```json theme={null}
[
  { "dataset": "quotes",    "as_of": "2026-08-26", "complete_through": "2026-08-26", "source": "b3_cotahist", "notes": null,
    "newest_period": "2026-08-26", "landed_at": "2026-08-27T06:12:44Z",
    "landed_git_sha": "5162e28d0c6f4f1f0f7e3c1b9a6d2e4f8a0b1c2d" },
  { "dataset": "funds_fidc", "as_of": "2026-07-31", "complete_through": "2026-07-31", "source": "cvm",
    "notes": "regime break at 2020-11-30: delinquency (tab VI's filed total, from 2013-01) is null through 2020-10-31 for a fund with no tab VI row that month, and filed on every row from 2020-11-30. A null is not zero, not clean books." },
  { "dataset": "funds_fip",  "as_of": "2025-12-31", "complete_through": "2025-12-31", "source": "cvm",
    "newest_period": "2026-12-31", "landed_at": "2026-08-27T06:31:02Z",
    "notes": "files annually, keyed to 31-December: newest_period is a year-end key that can sit in the future. Never read newest_period as freshness." }
]
```

### Notes

* **The dates are supposed to differ.** B3 quotes arrive daily; CVM fund filings lag one to two months. A `fund_nav` date two months behind `quotes` is normal.
* **Read the `funds_<family>` rows before a window claim.** `complete_through` is what an omitted `p_to` clamps to. `funds` and `fund_nav` carry the blended value, the *most lagging* family's bound.
* **`derivatives` and `quotes` are reported separately** though they share a COTAHIST file: the segments can land independently. Check `derivatives` before claiming an option chain is current.
* **`fund_nav.as_of` is a month key**: `2026-06-01` means the June 2026 period.
* **These are dataset-wide maxima**, not per-instrument. An individual fund can be months behind while still filing normally; use [`fund_profile`](/api-docs/funds)'s `last_period`.
* **A window past a dataset's `as_of` is not an error.** It returns nothing for the months that do not exist yet; the API never extends a series.

### Regime boundaries

`complete_through` tells you where a series ends, not where it **changes meaning**. That is `notes`, and machine-readably `catalog().regime_breaks` (dataset, column, boundary, before, after, never). Today's boundary is FIDC `delinquency` at 2020-11: filed from 2013-01, but null before 2020-11 for a fund with no tab VI row that month, and on every row from 2020-11. Counting reporting funds across it, or reading its nulls as zero, manufactures a move the funds never made. Check it before differencing any fund series.

### metric\_coverage

`metric_coverage` answers **does this family file this metric at all, and since when?**

```bash theme={null}
curl -s -X POST "$SILO_URL/rest/v1/rpc/metric_coverage" \
  -H "apikey: $SILO_ANON_KEY" -H "Content-Type: application/json" -d '{}'
```

```json theme={null}
[
  { "entity_type": "fidc", "metric": "delinquency",
    "first_period": "2025-01-31", "last_period": "2026-08-31",
    "filed_rows": 73259, "total_rows": 178928 }
]
```

| Field | What to know |
| - | - |
| `first_period` / `last_period` | Oldest and newest periods carrying a **non-null** value for that pair. |
| `filed_rows` / `total_rows` | Density. `filed_rows` well below `total_rows` means the metric is filed *sometimes*, which differs from always and from never. |

**Note**: an absent pair is not-applicable, not late. Only pairs with at least one filed value appear (`("fip", "quotaholders")` is missing because FIP never files it). Use `metric_coverage` rather than inferring a start date from nulls in a series, which is how a format change gets read as a credit event. It is measured off the warehouse on every refresh, so `catalog().metrics.<m>.coverage` points here rather than carrying a date.

### Errors

No arguments to get wrong. `401` means the key headers are missing; `404` (`PGRST202`) means you sent arguments to a function that takes none.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.