---
title: "Historical logged_at hydration state and floor"
method: GET
path: "/v1/status/logged-at-backfill"
tags: ["status"]
---

# Historical logged_at hydration state and floor

`GET /v1/status/logged-at-backfill`

## Request

- Base URL: `https://api.ctindex.io`
- URL: `https://api.ctindex.io/v1/status/logged-at-backfill`
- Auth: none declared

How much of the pre-migration-0065 cohort still has `logged_at IS NULL`, and the floor below which `logged_at` is not queryable. `logged_at` is the CT-log leaf timestamp (RFC 6962 §3.4, or the Static CT data-tile equivalent); `first_seen` is CertIndex ingest time — not interchangeable. Both values are `sample_estimate`, read from planner statistics rather than counted: no exact count of a 258M-row, 127 GB table fits a request budget, so `stats_analyzed_at` is the honest freshness of the numbers. The estimate cannot exclude the permanently-null `crt.sh` cohort (crt.sh exposes no per-log SCT timestamps); that cohort measured 0 rows in a 0.02% sample, so it is a rounding error here, not an exclusion. Historical completeness of one column: not enumeration coverage, not all-history recall, not an SLA. Cached 60 s, fail-open, never 5xx.

## Response `200`

Successful Response

- LoggedAtBackfillStatus: Historical ``logged_at`` hydration state for the non-``crt.sh`` cohort.
  - `rows_pending` integer, nullable: Estimated rows with logged_at IS NULL: reltuples x null_frac.
  - `rows_pending_claim_state` string, required: 'sample_estimate' (ANALYZE-derived) or 'unknown' (no value).
  - `oldest_hydrated_ts` string, date-time, nullable: Approximate earliest logged_at — the queryable floor.
  - `oldest_hydrated_ts_claim_state` string, required: 'sample_estimate' (statistics lower bound) or 'unknown'.
  - `stats_analyzed_at` string, date-time, nullable: ANALYZE time behind the estimates — their real freshness. Null after a compute restart resets pg_stat_user_tables; the statistics themselves persist in pg_statistic and stay usable.
  - `snapshot_state` string, required: 'fresh', 'stale' (last good snapshot re-served), 'unavailable'.
  - `lane` BackfillLane: Bounded-backfill lane state and its request budget (#346). The bound is a request ceiling, not a row predicate: measured row density in leaf-index space spans 0.02%-60.5% across logs, so equal row counts cost unequal numbers of origin requests, and ``not_before``/``first_seen`` windows were measured to bound ~82%/~100% of the corpus — i.e. nothing.
    - `enabled` boolean: ENABLE_LOGGED_AT_BACKFILL, default off.
    - `mode` string: 'bounded' — request-budget capped.
    - `daily_request_budget` integer: Origin requests the lane may spend per UTC day. 0 = opt-in.
    - `requests_used_today` integer, nullable: Requests spent today; null when Redis cannot answer.
    - `budget_state` string: 'idle' (off or no budget), 'spending', 'exhausted', or 'unknown' when the counter is unreadable. 'unknown' outranks the rest: an unseen counter is never served as an idle one.
  - `scope` string: What this block does and does not claim.
  - `measured_at` string, date-time: When the served values were computed.

---

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