---
title: "Absence — why a factor is NOT in the corpus"
method: GET
path: "/v1/absence"
tags: ["Discovery"]
---

# Absence — why a factor is NOT in the corpus

`GET /v1/absence`

## Request

- Base URL: `https://api.greencalculus.com`
- URL: `https://api.greencalculus.com/v1/absence`
- Auth: none required

Open (no key). The reasoned counterpart to /v1/coverage: where that reports a zero, this reports why. Each record carries the subject, the publisher we checked, the route we tried, a confidence and a review date. Five classifications: "structural" (no publisher issues this anywhere — stop retrying), "not_yet_sourced" (a publisher exists and is named; our backlog), "refused" (we found it and declined; the reason is stated), "held_not_counted" (we DO hold it — see we_hold for the key — and the coverage metric cannot see it), and "coupled" (zero only because another family is zero). These are authored judgements about what the world publishes, not values derived from our corpus, so each carries a review date and reports stale:true once past it.

## Query parameters

- `country` string
- `family` string
- `classification` string

## Response `200`

Absence records + the classification legend + caveat

- Absence: The reasoned counterpart to coverage: what we do NOT hold, and why. A classification tells you whether waiting for us is worth it.
  - `count` integer
  - `classifications` object: The vocabulary and what each class commits us to — structural, not_yet_sourced, refused, held_not_published, not_surveyed.
  - `absence` object: Keyed by pattern (e.g. "*.grid").
  - `caveat` string
  - `evidence` string: Public pointer to the gap classification that produced these records.
  - `docs` string, uri
  - `meta` object
  - `receipt` Receipt: Deterministic tamper-evidence. To verify: remove the `receipt` and `attribution` keys from the response, sort every object's keys recursively, serialise to JSON with slashes and Unicode unescaped, and SHA-256 the result — it equals `receipt.id` with the `gcr_` prefix stripped. The receipt's own `verify` field states the same recipe.
    - `id` string
    - `algorithm` string
    - `mb_version` string
    - `verify` string: Plain-language instructions for recomputing the digest.

## Other responses

- `400`: Unknown classification — the valid set is named in the error

---

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