---
title: "Verify Observation"
method: GET
path: "/api/v1/verify/{run_id}/observation"
tags: ["Verify"]
---

# Verify Observation

`GET /api/v1/verify/{run_id}/observation`

## Request

- Base URL: `https://api.africadb.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.africadb.com/api/v1/verify/{run_id}/observation`
- Auth: none declared

Return the single row this run wrote for `(indicator, country, date)`.

Response shape::

    {
        "run_id": "...",
        "requested": {indicator, country, date, expected_value},
        "found": {indicator_id, country_code, date, value, unit,
                  source_id, run_id, transform_hash, ingested_at},
        "checksum": "af38ff77ae5a54ab",  # 16-char sha256 prefix of value fields
        "matches": true | false | null    # only present when expected_value given
    }

Returns 404 if the row is not in the run. That is itself a useful
verification signal — it means the citation is claiming something
the run did not produce.

## Path parameters

- `run_id` string, required

## Query parameters

- `indicator` string, required: Indicator ID from the citation
- `country` string, required: ISO-2 country code from the citation
- `date` string, required: Observation date (YYYY-MM-DD or YYYY)
- `expected_value` number, nullable: If provided, the response's ``matches`` boolean confirms whether the stored value equals it (within 1e-6).

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/africadb/apis/africa-data-bank-api.md) · [All operations](https://skmtc.dev/africadb/apis/africa-data-bank-api/llms.txt) · [OpenAPI document](https://skmtc.dev/africadb/apis/africa-data-bank-api/revisions/2a50da82945b?raw)
