---
title: "Entity data-quality grade (A+/A/B/C/D) — confidence transparency"
method: GET
path: "/api/v1/entities/{entity_id}/quality"
tags: ["Entities"]
---

# Entity data-quality grade (A+/A/B/C/D) — confidence transparency

`GET /api/v1/entities/{entity_id}/quality`

## Request

- Base URL: `https://api.hub-equity.com`
- URL: `https://api.hub-equity.com/api/v1/entities/{entity_id}/quality`
- Auth: HTTP bearer

Confidence transparency snapshot for an entity.

The grade answers: *for the latest reported fiscal year, how much of this company's essential financial statements is actually readable at Hub-Equity?* It is the **worse of two gates**, both measured on that single year:

* **Gate 1 — mandatory core** (`core_universal_covered` / `_total`): the 18 core concepts every listed issuer must publish whatever its sector and capital structure (17 for an IFRS filer). A+ requires 100 %.
* **Gate 2 — reported concepts** (`core_applicable_covered` / `_total`): the core concepts this company actually reports, so a company with no inventories is not graded on inventories. A+ requires 95 %.

Stated limit: gate 2 is built on our own extractions, so it cannot see a concept we have never managed to extract for a given company — which is why the absolute counts are returned next to the letter.

Served from a snapshot refreshed daily. `grade` is **null** when no fiscal year is served for the entity, and in the on-the-fly fallback mode (`is_fallback=true`), which cannot compute the two gates. A null grade is an absence of measurement, not a bad grade: do not render it as D, and filter it out before ranking.

Entity-level grade (A+/A/B/C/D) — distinct from the per-filing A-F grade at `/filings/{id}/quality-grade`. Open to every plan: the screener serves the same grade on each row.

## Path parameters

- `entity_id` string, required

## Response `200`

Entity quality grade.

- ApiResponseDataQualityResult
  - `success` boolean, required
  - `data` DataQualityResult
    - `entity_id` string, required
    - `entity_name` string, required
    - `grade` string, nullable: A+ | A | B | C | D: the WORSE of the two gates. **None** when no grade is available for this entity (no served fiscal year, or `is_fallback` is true). A missing grade is not a bad grade: never render None as D, and filter it out before ranking.
    - `core_universal_covered` integer: Gate 1 numerator: mandatory core concepts served on `graded_fiscal_year`.
    - `core_universal_total` integer: Gate 1 denominator: 18, or 17 for an IFRS filer.
    - `core_applicable_covered` integer: Gate 2 numerator: reported concepts served on `graded_fiscal_year`.
    - `core_applicable_total` integer: Gate 2 denominator: core concepts this company reports at all. Built from our own extractions, so a concept we never extracted for this company is absent from it (stated limit, see module docstring). **Always read this against `core_reference_total`**: a hole removes a concept from the numerator AND the denominator at once, so it makes this ratio look better, never worse.
    - `core_reference_total` integer: The FULL core-concept reference: 43, or 40 for an IFRS filer. `core_applicable_total` well below this means either a genuinely simple balance sheet or concepts we never extracted: this field is what makes the difference visible at all.
    - `graded_fiscal_year` integer, nullable: The fiscal year the grade is computed on. None when nothing is served.
    - `avg_confidence` number, nullable
    - `direct_count` integer, required
    - `derived_count` integer, required
    - `has_gaap` boolean, required
    - `has_ifrs` boolean, required
    - `latest_filing_date` string, nullable
    - `freshness_days` integer, nullable: Days since latest_filing_date. None when no filing recorded.
    - `is_fallback` boolean: True when computed on-the-fly because no precomputed snapshot exists for this entity. In that mode the two gates cannot be computed and `grade` is None (an incomparable grade is not served as a grade).
    - `notes` string[]
  - `error` ApiError: API error details.
    - `code` string, required
    - `message` string, required
    - `details` object, nullable
  - `meta` ApiMeta: API response metadata. Pagination fields (``page`` / ``per_page`` / ``total``) are populated on collection endpoints only. They are omitted from the payload on single-resource endpoints.
    - `timestamp` string, date-time
    - `request_id` string, nullable
    - `page` integer, nullable
    - `per_page` integer, nullable
    - `total` integer, nullable
  - `links` ApiLinks: HATEOAS-style pagination cursors. Host-relative path + query links for a collection page. Present on collection endpoints, ``null`` fields where a page doesn't exist (``next`` on the last page, ``prev`` on the first). The whole ``links`` object is omitted from single-resource responses (see ``ApiResponse`` serializer).
    - `self` string, nullable
    - `first` string, nullable
    - `prev` string, nullable
    - `next` string, nullable
    - `last` string, nullable

## Other responses

- `404`: Entity not found.
- `422`: Validation Error

---

[API](https://skmtc.dev/hub-equity/apis/hub-equity-api.md) · [All operations](https://skmtc.dev/hub-equity/apis/hub-equity-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hub-equity/apis/hub-equity-api/revisions/e8eeda5dc13e?raw)
