---
title: "Verify a claimed figure against the official series"
method: GET
path: "/v1/verify"
---

# Verify a claimed figure against the official series

`GET /v1/verify`

## Request

- Base URL: `https://statcite.com`
- URL: `https://statcite.com/v1/verify`
- Auth: none declared

Returns verdict match | close | mismatch | cannot_verify with the official value, difference, diagnostics (wrong year, percent-vs-decimal, unit scaling), and the citation for the correct number.

## Query parameters

- `indicator` string, required
- `country` string
- `period` string, required
- `value` number
- `claimed_value` number
- `tolerance_abs` number
- `tolerance_pct` number
- `strict_source` boolean
- `as_of` string

## Response `200`

Verdict with citation

- VerifyResult
  - `verdict` 'match' | 'close' | 'mismatch' | 'cannot_verify'
  - `claimed_value` number
  - `official_value` number, nullable
  - `is_projection` boolean: True when the matched official observation is an IMF WEO/Fiscal Monitor estimate/projection, not a final outturn. Kept for compatibility; observation_status carries the finer-grained classification.
  - `observation_status` 'actual' | 'modeled_estimate' | 'estimate_or_actual' | 'projection' | 'unknown': The honest status of the matched observation, as one of five values. 'actual' means a series StatCite classifies as outturn data (registry World Bank indicators not flagged as modelled, and explicit worldbank/ WDI ids), subject to routine revision. 'modeled_estimate' (added 1.4.1) means the registry flags the indicator as a modelled series, such as the World Bank's ILO-modelled unemployment and labour force participation estimates. That is a published figure, but a model output rather than a measured outturn. 'estimate_or_actual' means an IMF WEO/Fiscal Monitor observation before the projection boundary. The IMF's true latest-actual year varies by country and is not exposed by the data path, so recent values may be staff estimates, and this should never be read as a confirmed actual. 'projection' means at or after the heuristic boundary. 'unknown' means no observation matched the period, or the series is an explicit id outside StatCite's classification. Arbitrary DBnomics series can be forecast datasets, so consult the source.
  - `status_method` 'horizon_heuristic' | 'as_published': How observation_status was determined. 'horizon_heuristic' applies to IMF WEO/Fiscal Monitor series, where the boundary is derived from the response's own data: the payload's projection horizon on the DataMapper channel, and the dataset-code vintage year on the DBnomics channel. It is a heuristic, not IMF per-country metadata. 'as_published' applies otherwise.
  - `period` string
  - `difference` number, nullable
  - `relative_difference_pct` number, nullable
  - `explanation` string
  - `diagnostics` string[]
  - `series` object
  - `country` object
  - `citation` Citation: Every numeric payload carries one of these. Reproduce citation_text when presenting the number.
    - `source` string
    - `dataset` string
    - `series_id` string
    - `series_name` string
    - `source_url` string
    - `api_url` string
    - `license` string
    - `attribution` string
    - `retrieved_at` string
    - `citation_text` string
    - `notices` string[]
    - `export_formats` object: Ready-to-paste citation strings derived from this citation's own fields, so they can never disagree with citation_text.
      - `bibtex` string
      - `apa` string
  - `notes` string[]
  - `fallback_used` boolean: Present and true when the official value came from a fallback source because the primary failed. A transient primary failure demotes the verdict to cannot_verify with the fallback value reported as indicative (a substitute source can differ by definition or vintage far beyond the verdict bands, and the primary may recover and serve a different number); when the primary permanently lacks the series/country, the fallback is the stable serving source and the verdict is judged normally with disclosure. Absent otherwise.
  - `as_of` object: Present only when the as_of parameter was used, and absent otherwise. It marks historical IMF-VINTAGE verification: the verdict was checked against a dated IMF WEO edition, not today's live data.
    - `requested` string: The as_of date as passed by the caller.
    - `resolved_vintage` string: The IMF WEO edition (YYYY-MM) resolved from it.
    - `resolution` 'conservative_month_calendar': How the vintage was resolved: with a conservative month calendar (editions flip on 1 May and 1 November), NOT the IMF's exact release days. So a date late in a release month resolves to the previous edition even if the new one had already been published. A note discloses this for dates inside release months.
    - `verification_scope` 'imf_weo_historical_vintage': What was verified against: the IMF WEO historical archive, the only dated-vintage source this server has.
    - `normal_primary_source` string: The source the live (non-as_of) path serves this indicator from first (e.g. 'World Bank WDI', 'IMF Fiscal Monitor (via the DataMapper API)').
    - `source_changed_for_as_of` boolean: True when the live primary differs from the WEO archive by source or IMF database. A claim originally made from the live primary can then legitimately differ from the WEO edition for methodological reasons, not only because of revisions.

## Other responses

- `400`: Malformed, missing, unknown or repeated query parameter. The message names the parameter and lists what the route accepts.
- `405`: Method not supported on this endpoint. The Allow header lists what is.
- `422`: The request was well formed but cannot be answered, e.g. the source does not publish this series for this economy.
- `502`: An upstream statistical source could not be read. error.code is upstream_unavailable and the failure is usually transient, so retry.

---

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