Skip to content

Public chat API changelog

Every version of the public chat API, with the date, the changes and the migration steps when a change is breaking.

3min readAPI version1.4

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 named suggestFollowUpQuestions, whose arguments.questions lists 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 a POST body without a payload object.

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 the POST route instead of the q parameter. Add the Content-Type: application/json header.

1.2 (2026-10-29)

Changed

  • A session emptied by the workspace retention rule is now refused. Every session route answers 410 with message: "Session expired" and code: "SESSION_EXPIRED". Before, the session answered 200 with messages that had empty content.

Migration

  • Handle 410 on a session route like 401: 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.variables on 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 400 whose body carries code: "MISSING_PROMPT_VARIABLES" and the missing list of variable names.

Migration

  • None. Existing clients keep working: payload.variables is 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?