This page lists every version of the public chat API. The current version is 1.4. Minor versions add things and keep existing clients working. Major versions can break clients and come with a deprecation period. See the versioning and deprecation policy.
1.4 (2026-11-06)
Added
- Follow-up questions: when the agent suggests some, a reply of
get a session has a
toolCalls[]entry namedsuggestFollowUpQuestions, whosearguments.questionslists short questions the user can send next.
Migration
- None. Clients that ignore unknown tool names keep working. To show the questions, read this entry on the last reply.
1.3 (2026-10-30)
Added
- Send a message and stream the reply
with
POST /public/v1/agents/{embedToken}/sessions/{sessionId}/messages/stream. The message travels in the JSON body, so it no longer reaches URL limits or access logs. The response is the same stream. - The stream-level error
Invalid request body, for aPOSTbody without apayloadobject.
Deprecated
GET .../sessions/{sessionId}/messages/stream?q=..., which sends the message in the URL. It stays served on v1 and returns the same stream.
Migration
- None required. To move, send
{ "payload": { "content": "..." } }as a JSON body to thePOSTroute instead of theqparameter. Add theContent-Type: application/jsonheader.
1.2 (2026-10-29)
Changed
- A session emptied by the workspace retention rule is now refused. Every session route
answers
410withmessage: "Session expired"andcode: "SESSION_EXPIRED". Before, the session answered200with messages that had emptycontent.
Migration
- Handle
410on a session route like401: discard the stored session and create a new one. You can tell the user that the previous conversation expired.
1.1 (2026-10-22)
Added
payload.variableson create a session: an agent can declare{{variables}}in its instructions, and the caller supplies their values at session start. Each value is substituted into the agent’s prompt before every reply.- A declared variable without a caller value falls back to the default configured on the agent’s Embed tab.
- When a declared variable has neither a caller value nor a default, the session is refused
with a
400whose body carriescode: "MISSING_PROMPT_VARIABLES"and themissinglist of variable names.
Migration
- None. Existing clients keep working:
payload.variablesis optional, and agents that declare no{{variables}}behave exactly as before.
1.0 (2026-09-09)
Added
- First versioned release of the public chat API, under
/public/v1/agents/{embedToken}/. - Five routes: agent configuration, create a session, read a session, read MCP App card HTML, send a message and stream the reply.
- The reference page documents the routes, the server-sent events, the error codes, the CORS behavior and the limits.
Migration
- None. This is the first published version of the contract.
Last updated: November 6, 2026
Was this article helpful?
Thanks for your feedback!