Export a session transcript
Human-readable export of one session’s transcript, selected by content negotiation on the Accept header: text/markdown for reading, application/jsonl for one JSON entry per line greppable without Narya. This replaces the affordance of a file-based transcript format readable with less and grep. Works on archived sessions. Two independent content toggles select what the export carries, both off by default. Stripping is never silent: an omitted reasoning block leaves a line saying how many blocks were left out, and an omitted tool result leaves the tool it answered, whether it failed, and the byte count it would have carried — so a reader can tell “the agent ran nothing” from “you asked me not to show it”.
Authorizations
Enforced on every transport, with no exempt operation. A person's request — over the default local unix socket exactly as over a TCP listener — must carry a JWT issued by the configured identity provider, which the host verifies itself against that issuer's key set: signature, issuer, expiry, and the person and organisation it names. Requests without a valid one receive 401 NRY-0011. The socket's file permissions are transport and are not an authorisation.
Path Parameters
The session's id.
Query Parameters
Carry the model's own reasoning blocks. Off by default: an export is normally read by a person following the conversation.
Carry the machine channels: what each tool answered, and what each background watcher printed. Off by default, and independent of includeReasoning — an audit of what the agent DID wants this and not the reasoning, and a study of how it THOUGHT wants the opposite. Both channels are text produced outside narya rather than conversation, which is why one parameter governs both; a monitor's NOTICES (started, exited, stopped, throttled) are narya's own sentences about a process and are always carried.
Response
The exported transcript in the negotiated format.
The transcript rendered as Markdown.

