chats
Create Draft
Start a draft and return its poll handle.
Returns 202 with status='pending': the pipeline has NOT run yet. The committed suggestion row is the durability boundary - dispatch after it is best-effort, so a client holding an id can always poll for an outcome even if the process that accepted this request disappears.
Reuse (TOS-6979): unless force_new is set, a draft for the same chat, responder and asker created after the chat's latest message change is returned instead of starting a new run. See draft_jobs.find_reusable_draft for exactly which rows qualify.
Authorization:
- Caller must be an active participant in the chat (404 otherwise, to avoid leaking chat existence to non-participants).
- When responder_identity_id differs from the caller, the responder must also be an active participant (422 otherwise).
- A kind='person' responder other than the caller is rejected (422): a draft is grounded in the responder's own Mind (TOS-4716's async pipeline runs it identity-keyed, and the result is readable via GET .../draft/{id} by any chat participant), so allowing a caller to draft as a co-participant person would ground the response in that person's private Mind and hand the text to someone else. TOS-269 (2026-05-28) deliberately allowed a person responder for the draft-my-own-reply case (responder_id == identity.id); this only closes the gap for a THIRD PARTY person (TOS-5036).
post/api/chats/{chat_id}/draft
Request
- Base URL: https://app.thinqos.com (the document declares no server; this is the origin it was published from)
- URL: https://app.thinqos.com/api/chats/{chat_id}/draft
- Auth: none declared
Path parameters
chat_idstring uuid required
Headers
x-impersonate-identity-idstring nullable
Request body
Response
Successful Response
Changes
No recorded changes to this operation across all 1 revision of this API.