Skip to main content
POST
Call this from the visitor’s browser. It takes the embed’s public widget key in X-MITHUNAI-Widget-Key, and the browser’s Origin must be allowed by both the deployment’s allowed_origins and the platform-wide widget allowlist. See Website widget. You must also send the thread’s X-MITHUNAI-Visitor-Token. The token is checked before the question is recorded or any model is called. A missing token, another thread’s token and an unknown conversation all return the same 404. The answer is generated from the assistant’s own knowledge, with citations. When the knowledge does not contain the answer, the assistant abstains: the response is still 201, with answer.abstained set to true and no citations. See How answers work. When the organisation has used its monthly answer allowance, a question is refused with 429 and the code quota_exceeded; the widget tells the visitor the limit has been reached and offers no retry. A thread answers one question at a time. Sending a question while the previous answer is still being generated returns 409. To retry safely after a dropped connection, send the same idempotency_key: if that question was already answered, you get the original turn back and the model is not called again. To show the answer as it is written, use Stream a widget message instead. A refusal made before the key and the origin are accepted (a missing or invalid key, an origin the deployment does not allow, or the per-address limit checked before the key is read) carries no Access-Control-Allow-Origin header, so in a cross-origin browser request fetch rejects with a network error instead of exposing the error body. Once the key is accepted and the origin is allowed, every response carries the header, refusals included, so your page can read a 404, a 429 and its Retry-After.
string
required
The conversation’s ID (UUID).
string
required
The deployment’s public widget key, mithunai_wk_….
string
required
The visitor token returned when this thread was started.
string
required
Set by the browser. It must exactly match an origin allowed for this deployment. When you call from outside a browser, set it yourself.
string
required
The question. Up to 16,000 characters, and not empty after surrounding whitespace is trimmed. Newlines and tabs are allowed; other control characters are refused.
string
Your own key for this question, up to 128 characters of A-Z, a-z, 0-9, _, ., : and -. Resending a key that was already answered in this thread returns that earlier turn instead of asking again.
object
Your own string labels for the question. At most 20 entries; keys are 1 to 64 characters of lowercase a-z, 0-9, _, . and -, starting with a letter; values are up to 512 characters.

Response

Returns 201 Created with the updated conversation, the question and the answer.
object
required
The conversation after this turn, with the same fields as Get a widget conversation. If the thread was started without a title, its title is taken from the first line of the first question, shortened to 80 characters.
object
required
The visitor’s message, with role set to user. Same fields as answer.
object
required
The assistant’s message.
Last modified on November 7, 2026