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

# QA

> Ask questions about a workspace as a conversation

Returns a job. Each call is one turn of a conversation, answered by the
automatic search agent on its own — no routing step and no fixed pipeline. The
agent opens with what a search of the workspace finds for the turn, answers
straight from that when it already holds the answer, and otherwise reads
documents, queries tables, and selects documents from the metadata catalog.

Pass a result's `answer.session_id` as `session_id` to ask a follow-up: the
agent resumes the conversation, so a question like "and for 2023?" means what it
means in context. Only the API key that started a conversation may continue it;
a conversation whose turn is still running answers `409 session_busy`. A
changed scope or access grants starts a fresh conversation and returns a new
`session_id`.

The agent may ask back instead of guessing when a question is genuinely
ambiguous (`allow_clarification`, on by default). The result's
`answer.clarification_questions` then lists the questions and `answer.answer`
is null. Reply with `clarification_answers` and the same `session_id`, or ask a
rephrased question. A turn that sends `clarification_answers` never asks again.

`output_schema` (a JSON Schema, object root) asks for one turn's answer as
JSON: `answer.structured_answer` holds the parsed value, or `null` if the answer
still missed the schema after its corrections. A field the source does not state comes back `null`, whatever type the schema gives it.
It applies only to the turn that
sends it: to keep structured answers across a conversation, send it on every
turn, including the reply to clarifying questions. A clarifying turn returns its
questions with `structured_answer` null.

The result is an `automatic_agent` result: `answer` — citations, SQL receipts
and confidence — and, when the agent answered from a catalog query, a `catalog`
table whose `next_cursor` pages through `POST .../filtered-search`.

Scope a conversation with `path_prefix` (a folder), `paths` (exact uploaded
files, no limit on how many), or both. The two add up. Unknown or inaccessible
paths are refused with `404` before a job exists.

See [Search](/guides/search).

| Path | SDK |
| - | - |
| `POST .../qa` | `client.search.qa` |


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.