# Coverage certificate

A coverage certificate records coverage for one source on one day. It contains a `source_id`, a `partition_date`, and a status of `complete`, `partial`, or `missing`. It also includes a `row_count`, which is JSON null when the status is `missing`.

Updated 2026-08-26. Corpus figures come from a running server.

## The object

```
{
  "source_id": "sec.edgar",
  "partition_date": "2023-03-10",
  "status": "complete",
  "row_count": 3124,
  "scope": {
    "scope_id": "sec.edgar.forms.v1",
    "selection": "form_allowlist",
    "forms": [
      "10-K", "10-K/A", "10-Q", "10-Q/A", "13D", "13D/A", "13G", "13G/A",
      "4", "4/A", "6-K", "6-K/A", "8-K", "8-K/A",
      "SC 13D", "SC 13D/A", "SC 13G", "SC 13G/A"
    ],
    "scope_sha256": "d17340d6247e3e26ea015c6bcbf5ad5a6f5fa8881f689508455e0b9985e5e2af"
  }
}
```

A `row_count` of null means the day was never ingested. A `row_count` of zero means the day was fetched, but the publisher issued no matching records. For example, EDGAR publishes no daily index on 2023-03-11 or 2023-03-12. Both days have a `missing` certificate with a null count.

## Complete is scoped

A `complete` status is scoped. It certifies only the form set named in the certificate, not every item issued by the publisher that day. For example, `sec.edgar` tracks 18 form types from the EDGAR daily index. On 2023-03-10, it certifies 3,124 rows out of 5,461 in the index. Every `sec.edgar` certificate includes that form set and its `scope_sha256` for `complete`, `partial`, and `missing` statuses. A certificate with no `scope` makes no claim about the publisher’s full row set.

## Coverage keys in the envelope

Every API response includes an envelope wrapper. Inside the envelope, `coverage.touched` and `coverage.missing` contain coverage keys instead of full certificates. A key uses one of two formats.

| Shape | Example | What it identifies |
| --- | --- | --- |
| Partition | `sec.edgar/2023-03-10` | One source, one UTC day. |
| Identity | `identity.ticker/FB@2023-03-10` | One ticker’s identity, one UTC day. |

Tickers contain no `/`, so partition keys and identity keys do not collide. Both use daily granularity. If a key appears in `missing`, its `count` is JSON null.

An identity key in `missing` means no interval matches that ticker at the requested `as_of` timestamp. This occurs if the ticker was never curated, the interval lapsed, or the symbol was renamed. For example, querying `ticker=FB` at `as_of=2023-03-10` returns a missing key because CIK 1326801 became META on 2022-06-09, even though the SEC partition for that day is complete.

## Zero rows and no coverage

|  | Certified day, nothing matched | Day not ingested |
| --- | --- | --- |
| HTTP | 200 | 409 |
| `status` | `ok` | `coverage_missing` |
| `count` | `0` | JSON `null` |
| `results` | `[]` | `[]` |
| What it records | The coverage is held and nothing matched the cut. | The coverage is not held, so the number of matching rows is unknown. |

Fetch certificates using `GET /v1/coverage`, or `GET /v1/sample/coverage?example=svb` without an API key. Requesting a source and date that were never ingested returns a missing certificate instead of a 404.

## Coverage in this corpus

The `sec.edgar` source contains 303 daily partitions: 204 certified complete and 99 missing (88 of which are weekends). Federal Register public inspection contains 182 complete and 91 missing. In the contiguous window from 2022-11-01 to 2023-03-31, 151 SEC days carry a certificate: 103 complete and 48 missing (42 weekend days and six federal holidays).

## Related

- [Coverage, month by month](https://pit.aqx.llc/docs/coverage)
- [As-of queries](https://pit.aqx.llc/glossary/as-of)
- [Lookahead bias](https://pit.aqx.llc/glossary/lookahead-bias)
- [API reference](https://pit.aqx.llc/docs/api)
