---
title: "One normalized fact for an entity at a given period (with source)"
method: GET
path: "/api/v1/entities/{entity_id}/facts/{hub_concept_code}"
tags: ["Entities"]
---

# One normalized fact for an entity at a given period (with source)

`GET /api/v1/entities/{entity_id}/facts/{hub_concept_code}`

## Request

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

Returns the single normalized value for (entity × hub concept × fiscal year × period type), with its source filing (form type, filing date, viewer URL) so the value can be cited.

`404 FACT_NOT_FOUND` when no fact exists for that combination. For a time-series use `/entities/{id}/metrics/{code}/history` ; for the full matrix use `/entities/{id}/financials`.

## Path parameters

- `entity_id` string, required
- `hub_concept_code` string, required

## Query parameters

- `fiscal_year` integer, required: Fiscal year (e.g. 2024).
- `fiscal_period_type` string: FY (default, annual), Q1-Q4, or H1/H2.

## Response `200`

The normalized fact + source.

- ApiResponseFact
  - `success` boolean, required
  - `data` Fact: A single normalized fact returned by `get_fact`.
    - `entity_id` string, required
    - `entity_name` string, required
    - `hub_code` string, required
    - `hub_label` string, required
    - `statement` string, nullable
    - `value` number, nullable
    - `value_text` string, nullable
    - `currency` string, nullable
    - `period_start` string, nullable
    - `period_end` string, required
    - `fiscal_year` integer, nullable
    - `fiscal_period` string, nullable
    - `fiscal_period_type` string, nullable
    - `period_type` string, nullable
    - `source_concept` string, nullable: Original XBRL qname
    - `source` Source, required: Filing source for a fact (always attached so the LLM can cite). `anchor` says what kind of number this is: `tagged` (read off one tag of the issuer) or `derived` (computed by Hub-Equity from several tags, so no single place in the document holds it, by construction). `fact_url` opens the issuer's own document AT the tagged number (the iXBRL element id, resolved in the filing that SERVES the value, which is not always the filing of that fiscal year); it is served by `get_fact` and on the parent of `get_fact_decomposition`, and left empty by `get_metric_history`, whose points carry `anchor` only: one `get_fact` call gives the deep link of the point to cite.
      - `filing_id` string, required
      - `form_type` string, nullable
      - `filing_date` string, nullable
      - `period_end` string, nullable
      - `viewer_url` string, required: Hub-Equity deep link to the filing
      - `external_url` string, nullable: Original filing URL (e.g. SEC EDGAR viewer) when available
      - `anchor` 'tagged' | 'derived', nullable: tagged = the value is one tag of the issuer's document; derived = computed by Hub-Equity from several tags, no single anchor exists by construction
      - `fact_url` string, nullable: The issuer's document opened AT the tagged number (iXBRL viewer anchored on the fact id), served by get_fact and the decomposition parent when the id resolved in the serving filing; empty on history points: call get_fact for the year to cite
    - `is_restated` boolean
    - `as_filed_value` number, nullable: Always the value as printed in the filing cited by `source`; equals `value` unless `is_restated`
    - `restatement_delta_pct` number, nullable
  - `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`: No fact for that entity/concept/period.
- `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)
