> ## Documentation Index
> Fetch the complete documentation index at: https://docs.twirx.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Live Provenance Lab API

> Catalog, typed invocation, result, provenance, bundle, and discovery endpoints.

> **Authority:** Explanatory API reference · **Status:** Implemented candidate · **Applies to:** E2 · **Verified against:** current checkout · **Source:** `internal/labapi`, `generated/e2/openapi.json`

The same-origin HTTP API is read-only and catalog-only:

```text theme={null}
GET  /api/v1/status
GET  /api/v1/origins
GET  /api/v1/origins/{origin_id}
GET  /api/v1/origins/{origin_id}/schema
GET  /api/v1/origins/{origin_id}/operations
POST /api/v1/invoke
GET  /api/v1/results/{result_id}
GET  /api/v1/results/{result_id}/provenance
GET  /api/v1/results/{result_id}/bundle
GET  /.well-known/twirx
```

```json theme={null}
{
  "origin_id": "world-bank-indicators",
  "operation_id": "development.getIndicator",
  "mode": "replay",
  "input": {
    "country": "CHL",
    "indicator": "SP.POP.TOTL",
    "year": 2024
  }
}
```

Unknown properties, duplicate keys, wrong JSON types, values outside contract
allowlists, and origin-operation mismatches are rejected. The server resolves
the reviewed endpoint; no request field can supply or override a URL.

JSON Schema, OpenAPI, MCP tool definitions, and the CLI reference are generated
from `contracts/e2/contracts.json`. The public OpenAPI document is `/openapi.json`.
Catalog records expose admission state, source class, attribution, fresh-mode
availability, and an explicit `not_probed` health state. E2 does not promote a
successful historical invocation into a current origin-availability claim.
