Ask Claude
Input
question requiredThe question/prompt to send as the first message of a new chat.
Output
model requiredWhich model answered, as the conversation records it (e.g. "claude-opus-5") — the server's own name for what ran, not the composer's display label. Null when the conversation carried no model.
answer requiredThe assistant's full answer as the markdown source the model emitted (the turn's `text` blocks, concatenated in order). Not the rendered text: the reasoning card and tool-call cards are separate block types and are excluded. It carries NO citation markup — a cited sentence is plain text here, and which sources it cited is `citations`.
sources requiredEvery source the model's tools surfaced: each result web_search returned and each page web_fetch loaded, deduped by url. This is the CANDIDATE POOL the model could read, NOT what the answer cited — a one-line answer routinely carries a dozen. See `citations` for what it actually attributed. Empty when no tool ran.
citations requiredThe sources the ANSWER ATTRIBUTED a sentence to — the citation pills rendered under the text — in first-cited order, deduped by url. A strict reading of what the answer stood on, as opposed to `sources`, which is everything the tools put in front of it. Empty when the answer cited nothing, which is a real outcome and not a failure: a model answering from training data cites nobody. The span each citation covers is not reported — only which sources were cited.
messageId requireduuid of the assistant message.
stopReason requiredWhy generation ended: "end_turn" for a complete answer, anything else (e.g. "max_tokens") means the answer is truncated.
conversationId requiredConversation uuid, read off the completion endpoint's own URL (never null — claude.ai has no anonymous chat).
webSearchQueries requiredSearch queries the model issued via its web_search tool during this answer. Empty when it didn't search.
