Create a conversation
Open a conversation by binding an assistant and identifying the end user. Creating a conversation over the API always produces achat, live session — channel and surface are assigned by Feather, not set by you.
Send turns (synchronous)
For standard request/response flows, post a turn and wait for the full reply.If
session_status becomes waiting_for_human or awaiting_approval, stop
sending turns and poll for messages (below) until it returns to active or the
conversation closes. Set include_evidence: true on the request to receive the
knowledge-base chunks used to generate the reply.Stream turns (SSE)
For chat UIs where you want to render tokens as they arrive, use the streaming endpoint. It returns a Server-Sent Events stream with the same request body as the synchronous turn endpoint.event: name, not on any field inside the payload:
Poll messages (for async channels and handoffs)
When your assistant is connected to an asynchronous channel (email, SMS) or the conversation is in a human handoff, poll for new messages rather than holding an open HTTP connection.since_seq=-1 on the first request to retrieve every message. On subsequent polls, pass the previous response’s next_seq to receive only new messages. Both AI replies and human-operator relays arrive on this stream during a handoff.
Close a conversation
Signal that the conversation is resolved by closing it. This finalizes the session for memory sync, extraction, and analytics.A conversation must be closed before it can be deleted. Attempting to
delete a live conversation returns a
409 Conflict.Retrieve the transcript
Fetch a paginated list of messages in a conversation — useful for post-session review, debugging, or exporting logs.cursor=<next_cursor> and limit=<n>. When has_more is false, you’ve reached the end of the transcript. For a bulk, encrypted export across many conversations, use Export Conversations.
What’s next?
Conversations concept
Deep dive into the session model, status lifecycle, and thread keys.
Human-in-the-loop
Handle approvals and operator handoffs during a live conversation.