---
title: "Check one claim against the official figure"
method: GET
path: "/api/v1/check"
---

# Check one claim against the official figure

`GET /api/v1/check`

## Request

- Base URL: `https://invokely.ai`
- URL: `https://invokely.ai/api/v1/check`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`
  - none

Check stated figures against the official source: one claim or a batch of up to 20. Use it to fact-check a draft or an article. One call is metered per 5 claims; claims that come back unverifiable are not charged.
You extract each claim into fields; the server does not read sentences. Take the number exactly as written and its scale word separately. Pass period only when the claim names one. Pick the indicator id with search_indicators when unsure (for Spanish municipalities use registered_unemployment_rate).
Examples:
"Spain's unemployment rate fell to 10.5% in the second quarter of 2026" -> {"claims": [{"indicator": "unemployment_rate", "place": "Spain", "period": "2026-Q2", "value": 10.5, "unit_hint": "percent"}]}
"Texas has more than 31 million people" -> {"claims": [{"indicator": "population", "place": "Texas", "value": 31, "unit_hint": "millions", "qualifier": "at_least"}]}
"US inflation was 3.2% in August 2026" -> {"claims": [{"indicator": "cpi_annual_change", "place": "United States", "period": "2026-08", "value": 3.2, "unit_hint": "percent"}]}
"Spain has the third highest unemployment rate in the EU" -> {"claims": [{"indicator": "unemployment_rate", "place": "Spain", "value": 3, "kind": "rank", "rank_within": "EU"}]}
Precision: a claim is read with the precision it states. "3.4%" covers 3.35 to 3.45 and "31 million" 30.5 to 31.5 million, both ends included; when the publisher states fewer decimals than the claim, the publisher's precision is used. Trailing zeros of a whole number are read as rounding to its last non-zero digit, keeping two significant digits: 1200 covers 1,150 to 1,250 and 2500000 covers 2,450,000 to 2,550,000, while 30 and 10 stay stated to the unit; qualifier exact turns this off. "about" doubles the band. at_least and at_most are inclusive bounds: "over 10%" holds for 10.0%.
Verdicts: accurate (within that rounding); approximately_accurate (within 2% of the official value or twice the rounding band, whichever is wider, with the exact gap); inaccurate (with the official value and the gap); outdated (matches an earlier release that was revised, or an earlier period while a newer figure exists; outdated says which, and with as_of whether it was accurate when made); unverifiable (unknown indicator or place, ambiguous place, no data, or units that cannot be reconciled; error says why). Ranks are exact positions; a place tied with others holds every position the tie spans.
Returns {results: [{index, claim, verdict, explanation, confidence: high | medium | low, notes?, official: {indicator, place, period, value, status?, source, transform?, inputs?, computed?, rank?}, comparison: {claimed, official, difference, relative_difference_percent, rounding, approximate_band, claimed_range}, reading?, readings?, outdated?, vintage?, newer_period?, error?}], summary, metered_calls}. comparison.claimed is the claim in the official unit.
When a claim can be read several ways (a year on a monthly series: its last month or its average; a city and its province of the same name; a percent change of a rate: points or relative), every plausible reading is tested, the best one is returned in reading and the others in readings, and confidence is lowered. Say which reading the verdict rests on.
In your answer, quote the official figure with its period and cite official.source.citation or url. Mention status provisional, estimated or low_reliability. Do not call a claim false when the verdict is unverifiable or approximately_accurate. Pass citation_style for formatted references.

## Query parameters

- `indicator` string, required
- `place` string, required
- `value` string, required
- `period` string
- `unit_hint` 'percent' | 'percentage_points' | 'units' | 'thousands' | 'millions' | 'billions' | 'trillions'
- `currency` string
- `qualifier` 'exact' | 'about' | 'at_least' | 'at_most'
- `kind` 'level' | 'yoy' | 'yoy_diff' | 'pct_change' | 'diff' | 'per_capita' | 'per_1000' | 'per_100k' | 'rank'
- `rank_within` string
- `rank_order` 'highest' | 'lowest'
- `country` string
- `as_of` string
- `text` string
- `tolerance_relative` number
- `tolerance_absolute` number
- `citation_style` 'apa' | 'mla' | 'chicago' | 'harvard' | 'bibtex' | 'ris' | 'all'
- `locale` 'en' | 'es'

## Response `200`

Success. The body is {"data": ...}; the remaining allowance is in the x-invokely-remaining header.

- Data
  - `data` unknown, required

## Other responses

- `400`: Invalid argument (INVALID_ARGUMENT).
- `401`: The API key or token is invalid or revoked (UNAUTHORIZED).
- `402`: Allowance used up (QUOTA_EXHAUSTED), or the plan does not include the REST API (PLAN_REQUIRED: Free keys; use the MCP server or upgrade to Builder).
- `404`: Unknown indicator or place, or no data (INDICATOR_NOT_FOUND, PLACE_NOT_FOUND, AMBIGUOUS_PLACE, NO_DATA). hint and suggestions say what to try next.
- `413`: Body over 64 KB (PAYLOAD_TOO_LARGE).
- `415`: POST needs content-type: application/json (UNSUPPORTED_MEDIA_TYPE).
- `429`: Rate limited (RATE_LIMITED). Retry after retry_after_seconds.

---

[API](https://skmtc.dev/invokely/apis/invokely-statistics-api.md) · [All operations](https://skmtc.dev/invokely/apis/invokely-statistics-api/llms.txt) · [OpenAPI document](https://skmtc.dev/invokely/apis/invokely-statistics-api/revisions/3b0f775bccb6?raw)
