Skip to main content
BETA. The response_format field and the shape it produces may change in a future minor version while in beta. /v1/query only — /v1/chat has no response_format field and can never produce structured_answer.
Add "response_format": "structured" to a /v1/query request to get a structured_answer field alongside the normal answer/citations fields — the same answer, reshaped into sections and citation-bound claims for callers that want to render or route the answer programmatically instead of parsing markdown. This is additive only: omit the field, or set it to "text" (the default), and the response is unchanged, byte for byte. Nothing is removed or replaced, and response_format never changes which HTTP status the endpoint returns — only what’s in the body.

Always branch on status first

You MUST branch on structured_answer.status first. It is a required field with one of five values — never infer the outcome from sections/citations being empty.
A failed or truncated generation is surfaced as status: "error" with structured_answer.error populated and sections/citations always empty — it is never reshaped into a section that looks like a normal cited answer, even when the top-level answer field still carries a partial fragment for a text-mode caller. deferral and crisis each carry one non-empty section with pre-approved copy (see StructuredSection.kind in the schema reference) so that even a client that only renders sections[].body never shows a blank card for a self-harm query.

Example response

What the fields mean

  • sections — the answer broken into sections. Today’s pipeline emits one markdown answer with no section boundaries, so a normal answer is always a single-element array. Empty when status is error; exactly one synthetic section when status is deferral or crisis.
  • claims — claims within a section, each bound to the citation ids that ground it. Today this is at most one claim covering the whole section body, bound to every citation returned for the answer — never a fabricated sentence-level binding. A section with no supporting citations has zero claims, not a claim with an empty citation_ids. Always empty on a crisis or deferral section.
  • citations — the same citations as the top-level citations field, through the same Citation schema. Empty unless status is answered or ungrounded.
  • disclaimer — a versioned “research summary, not medical advice” notice. Populated only when status is answered or ungrounded; null for deferral/crisis/error, which carry their own dedicated safety framing instead.
  • format / format_version / schema_version — which adapter rendered this payload and its versions. generic is the self-service public shape.

Crisis responses in structured mode

On a crisis short-circuit, status is "crisis", the mirrored structured_answer.crisis field carries the same category/locale/originalQuery/resources payload as the top-level crisis field, and sections contains exactly one section with kind: "crisis" holding pre-approved safety copy. The same contract applies as everywhere else in the API: show crisis resources verbatim — do not reorder, summarise, or omit fields — and route the user away from research framing. See the full StructuredAnswer, StructuredSection, and StructuredClaim schemas in the API Reference tab.