---
title: "One question's whole history"
method: GET
path: "/v2/workspaces/{id}/inquiries/{inquiry}"
tags: ["Inquiries"]
---

# One question's whole history

`GET /v2/workspaces/{id}/inquiries/{inquiry}`

## Request

- Base URL: `https://api.infolang.ai`
- URL: `https://api.infolang.ai/v2/workspaces/{id}/inquiries/{inquiry}`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP bearer

The audit view, INCLUDING what had no effect. Four things only this route answers:

- **what narrowed into what**, and what a split decomposed into — the "is the thing being answered today the thing that was asked?" audit.
- **what was abandoned, and did anything reverse it.** Each abandon carries `effective` (did it clear the IR5 floor) and `reversed_by` (did a later reopen outrank it). Two different reasons a question is not abandoned, never collapsed into one.
- **what is merely LATENT** — records naming this question that no `open` has activated yet (A5). Not errors: work already queued, which activates by itself when the referent arrives.
- **who grouped it with what**, effective or not.

`status: null` means nothing in this workspace ever OPENED this id — a different fact from `abandoned`.

**`fold_size` here counts the question's CLASS, never the workspace**, and must never be used as an "is this feature in use" probe; the agenda is the whole-workspace read.

**`status_caveat`** names a real upstream defect: the scoped class load selects a `narrow`/`split` from either end but not the other end's `open`, so that record folds LATENT here and a narrowed parent reads `open`. The agenda has it right; believe the agenda.

**Refining a question is not answering it, and similarity cannot retire a question.**

`narrow` marks the parent `narrowed`, which is a LIVE status: the parent STAYS on the agenda (IR2). `split` leaves the parent `superseded` with recorded lineage, never `answered` (IR3) — and never `split`, a status in the wire vocabulary that the fold never produces.

An `answer` must NAME an assertion (IR4), and a memory NEVER answers a question by arriving on its subject key. The match would be exact, which is exactly why it looks defensible; the rule it breaks is IR4. Pass `answers_inquiry` on a `remember` to state one.

An agenda ROW is an equivalence CLASS, not a question (IR6): two questions joined by `same_as` are ONE row with two members, and `outstanding` counts ROWS. `same_as` groups the VIEW and merges no identity, no lineage and no history.

`abandon` and `same_as` are authority-floored; a below-floor record is written and folds INERT, never rejected (D4). There is NO delete: reopening an abandonment is an append that cites ONE specific abandon record.

Requires the `coord:read` scope. Accepts all three lanes: a session JWT (bounded by the caller's role on this workspace) or an `il_*` machine credential whose own scope set, workspace set and validity window cover it — both ceilings apply and neither can raise the other, so a credential carrying `coord:read` is still refused where the role does not permit it.

A credential with no scope record resolves to `LEGACY_DEFAULT`, which does NOT include `coord:read` — mint a key with it explicitly (`POST /v2/workspaces/{id}/keys`).

## Path parameters

- `id` string, required
- `inquiry` string, required

## Response `200`

Everything the log holds about this question

- object
  - `inquiry` string, required
  - `question` object, required
    - `inquiry` string, required
    - `prompt` string, nullable, required
    - `subject` string, nullable, required
    - `status` string, nullable, required
    - `live` boolean, required
  - `status` string, nullable, required
  - `opened_by` unknown[], required
    - unknown
  - `narrows` unknown[], required
    - unknown
  - `narrowed_from` unknown[], required
    - unknown
  - `splits` unknown[], required
    - unknown
  - `split_from` unknown[], required
    - unknown
  - `answers` unknown[], required
    - unknown
  - `abandons` unknown[], required
    - unknown
  - `same_as` unknown[], required
    - unknown
  - `latent` unknown[], required
    - unknown
  - `latent_note` string, required
  - `status_caveat` string, required
  - `fold_size` number, required
  - `fold_size_note` string, required

## Other responses

- `401`: Missing/invalid credential, or `credential_expired` — the credential is outside its `[not_before, expires_at)` window and must be replaced
- `403`: `insufficient_scope` — the credential's own scope set, or the caller's role on this workspace, does not cover the scope this route requires (the missing scope is named in the message). Or `forbidden` — the credential is not scoped to this workspace, or holds no grant on it
- `501`: The inquiry verbs are not compiled into this deployment (`kernel-verbs` is off upstream)

---

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