Changelog¶
Info
Looking for the embeddable chat widget? See the Chat Widget changelog.
Looking for older entries? See the GitHub release notes.
Sep 9, 2026¶
- CHANGE Chatbot events — static triggers, timeout triggers and scheduled messages — are now available to every team. They were previously gated behind the
flag_eventsfeature flag, so a team administrator had to turn them on. Teams that already had the flag enabled see no change.
Sep 7, 2026¶
- BUG Long messages sent over Twilio channels (WhatsApp, SMS) are now split correctly when they contain emoji or special symbols such as em-dashes. Twilio counts those characters twice against its 1,600-character limit, so messages containing them could previously be rejected and never reach the participant.
- CHANGE The Create from assistant button has been removed from the Collections page. It built an indexed collection from an OpenAI assistant's file-search files, a migration path for a feature that has itself been removed. Create an indexed collection and upload the files to it directly instead.
Sep 4, 2026¶
- NEW Added support for OpenAI's GPT-6 Astra model, which can now be selected on the OpenAI provider. It offers a 1,050,000-token context window and configurable reasoning effort (low, medium, high, xhigh, max); temperature and top-p are not supported. Note that prompts longer than 272,000 tokens are billed by OpenAI at a higher rate than the cost Open Chat Studio reports.
- NEW The Export button on a chatbot session's Messages tab now downloads that single session's messages as a CSV.
- CHANGE The chatbot session detail page has been redesigned.
- CHANGE An LLM provider's page now has a single Models tab in place of the separate default chat, custom and embedding model tables. Filter the combined list by role using the chips above it; the counts always match what the list is showing.
- CHANGE An LLM provider's page now shows the standing state of its credentials — verified, never checked, or rejected with the provider's own error message — instead of a flash message that disappeared on the next page load. The save button tells you up front whether saving will verify, and saving again re-runs a check that previously failed. The manual Test Connection button has been removed, since it tested the saved credentials rather than what was on screen. Voyage AI is embeddings-only and is never verified. See LLM Service Providers.
Sep 3, 2026¶
- NEW Macro-enabled Excel workbooks (
.xlsm) can now be attached to a chat and uploaded to a collection. They were previously rejected as an unsupported file type. As with other documents, the file is never executed — only its extracted text is sent to the LLM. - NEW The notifications list now has toggle buttons for filtering by level (Info, Warning, Error) and, if you belong to fewer than three teams, by team — alongside the existing filter panel. A notification that has occurred more than once shows a count of how many times it recurred (
×3), and the notification detail page now names the team in its breadcrumb. - NEW You can now sample the traces sent to Langfuse instead of sending every conversation turn, using a team-wide Sample rate on the Langfuse tracing provider and a per-chatbot Trace sample rate override that inherits the team default when left blank. Setting a chatbot's rate to
0.0stops its Langfuse traces entirely. Builtin tracing is unaffected and still records every turn, and rate changes take effect on the next turn. Thetrace_sample_ratefield is also available on the v2 chatbots write API. See Configure Langfuse Trace Sampling. - NEW A chatbot's consent form can now be collected through the Chat API rather than the separate web page. Starting or polling a session returns a
consentblock saying whether consent is still needed and what the form says, a newPOST /api/chat/{session_id}/consent/endpoint records that the participant accepted it, and sending a message or uploading a file is refused until they have. Republishing the chatbot with an edited consent form asks the participant again. This applies only to chat widgets on version 0.13.0 or later, which will carry the consent panel — existing embeds are unaffected, as are API key and OAuth callers. See Consent Forms. - CHANGE The chatbot inspect API (
GET /api/v2/chatbots/{id}/inspect/) no longer returns anassistantkey on a pipeline node, and theAssistantNodeParamsschema has been removed. Only clients inspecting pipelines that contain an assistant node are affected — those nodes are still listed, with their type reported as before and their stored settings returned in the generic node params shape (minus the internal assistant id). See the Chatbots API reference. - BUG Publishing a version of a chatbot now keeps a copy of its consent form as it read at that moment. Previously every published version pointed at the current working form, so editing that form also changed the wording shown by versions published before the edit. Versions published before this fix keep using the working form until the chatbot is published again.
Sep 2, 2026¶
- CHANGE The OpenAI Assistants pages have been removed. The Assistants entry is gone from the sidebar, and assistants can no longer be created, viewed, edited or archived in Open Chat Studio — the assistant URLs now return a "not found" error. Assistants no longer appear in the delete-team confirmation, no longer block deleting an LLM provider or a custom action, and no longer appear in deprecated-model reporting, and the file-upload controls that assistants added to the chat input bar are gone. File links in historical chat messages now show as plain text instead of downloads. Chatbots and pipelines that use an assistant node still open and still run as before. See Migrate Assistants.
Sep 1, 2026¶
- NEW An embedded widget channel can now require an OAuth token instead of its embed key, using the new Credential mode setting on the channel. In OAuth mode every request is validated against a token minted by your own backend, the embed snippet shown in Open Chat Studio includes a sample
authTokenProviderimplementation, and the widget must be on version 0.12.0 or later. Existing channels keep the embed-key mode they already have. Leaving the channel's allowed domains blank marks the channel as a server-only integration, so any request from a browser is refused. See OAuth credential mode. - BUG A configuration mistake in a Send an email or Render a template node — a template referring to a variable that doesn't exist, or an invalid email address — is now treated as a configuration error rather than a system failure, and the participant receives a generic error response.
- NEW A Meta Cloud API messaging provider's page now reports whether its
new_bot_messagetemplate is usable and which WhatsApp numbers the account owns, with a Refresh button to re-check on demand and a form to send a real test message through the template. The checks run automatically when the provider is created. See Set Up WhatsApp with Meta Cloud API. - NEW LiteLLM can now be added as an LLM provider, for teams running their own OpenAI-compatible model gateway (a self-hosted or third-party LiteLLM proxy). Setup is the same as any other provider except that you also give the proxy's Base URL; no models are pre-configured, so add the backend models your proxy serves yourself. See LLM Service Providers and Add a Custom LLM Model.
- BUG Fixed the model list being blank when adding a provider that has no pre-configured models and no custom models yet. The page now says so instead of showing an empty space.
Aug 31, 2026¶
- NEW Added a Public link channel, which gives a chatbot its own hosted chat page on Open Chat Studio — share the link and anyone can chat, with no embedding required. The channel dialog shows the link with a copy button and a Regenerate link action, and welcome messages and starter questions are configured as channel settings. Visitors always reach the published version, and regenerating the link, disabling the channel or deleting it revokes the old link and ends any conversations still live on it. This feature is gated behind the
flag_public_channelfeature flag. - NEW Evaluator prompts can now read a participant's data and a session's state through the
{participant_data.[key]}and{session_state.[key]}variables, in both message-level and session-level mode, and Python evaluators receive both as keyword arguments. Previously a prompt referring to either of them left an error in every row of the run instead of a score. See Template Variables.
Aug 27, 2026¶
- CHANGE v0.12.0 of the Chat Widget is released, adding OAuth credential mode, tab-scoped session persistence, a version readout on the element, a "Start new chat" button in kiosk mode, and participant timezone reporting. See the widget changelog for details.
- BUG Fixed broadcasts to WhatsApp participants outside the 24-hour service window failing to send. Meta rejects a message template containing line breaks, so multi-paragraph messages never arrived. Such messages now have their line breaks and repeated spaces collapsed into single spaces, arriving as a single paragraph, and the broadcast dialog tells you so before you send. See Out-of-service-window template messages.
Aug 26, 2026¶
- CHANGE The participant allowlist has been removed. Chatbots can no longer be limited to a list of participant identifiers — the setting is gone from the chatbot settings, and WhatsApp, Telegram and Slack channels now answer anyone who messages them. A chatbot whose public web link was switched off by an allowlist is reachable again at its existing link, and its Share dialog no longer hides it. The
participant_allowlistfield has also been removed from the v2 API — sending it when creating or updating a chatbot now returns an error.
Aug 24, 2026¶
- NEW You can now send a one-off Broadcast message to every participant of a chatbot from the chatbot home page, choosing which of its channels to send on. Broadcasting requires permission to invite participants, and only reaches participants who have already messaged the bot on the selected channel.
- CHANGE Various security enhancements for code running in a Python node.
- BUG Fixed augmented assignment (for example
count += 1) raising an error in Python node code. Common in-place operators can now be used as expected. - BUG Fixed an error raised by the code in a Python node causing the message to fail without a reply. The participant now receives a generic error response, and the error is recorded against the message so you can see what went wrong.
Aug 20, 2026¶
- CHANGE Turning off a channel's Enabled toggle now stops new conversations and bot-initiated messages, where before it only stopped incoming ones. Previously a disabled channel still allowed new conversations to be started (from the chat widget, the public web chat link, Slack, or the chatbot management pages) and still sent out scheduled messages, event action messages and API-triggered messages. New sessions on a disabled channel are now refused, and bot-initiated messages to a disabled channel are no longer sent. Two API endpoints are still exceptions — see Known limitations. See Disabling a channel.
Aug 18, 2026¶
- CHANGE When several branches merge into one node, that node now takes its input from the branch that arrived most recently, and
node_inputsholds every input that has arrived so far instead of just one. Previously the input depended on the order the connections happened to be drawn, so the same graph could feed a merge node a different branch — any node with more than one incoming connection may now receive a different input than before. See Which input a node receives. - BUG Fixed merge nodes that wait until they have a set number of inputs (for example a Python node checking
len(node_inputs)) never completing, which made the pipeline return nothing. See Optional Parallel Branches. - BUG Fixed Python node code failing with
NameError: name 'enumerate' is not defined. Theenumeratebuiltin can now be used in your scripts. See Python Node.
Aug 17, 2026¶
- NEW You can now temporarily disable an individual channel instead of deleting it, using the Enabled toggle in the channel's configuration dialog. While a channel is off, incoming messages are not processed or recorded at all, and you can optionally set a static reply that is sent to anyone who messages the channel — leaving it blank keeps the bot silent. Disabled channels are highlighted in the channel list.
Aug 14, 2026¶
- NEW Added support for the Gemini 3.7 Flash model, which can now be selected on both the Google (Gemini API) and Google Vertex AI providers.
- CHANGE Client-credentials OAuth applications can now only chat with the chatbots you select for them. Previously such an application could converse with every chatbot in its team; it is now refused for any chatbot that isn't on its list, and an empty list means no chatbots at all. Only client-credentials tokens are affected; API key and user-authorized access is unchanged. See Getting started with OAuth2.
Aug 13, 2026¶
- CHANGE Chatting to a chatbot from the chatbot management pages now opens the embedded chat widget in a popup on the page, instead of navigating away to the full-page chat. This covers the chat dropdown on the chatbot home page, the chat button on each row of the versions table (which opens a widget pinned to that version), and Continue Chat on a sessions list, which reopens the session in a widget headed with the version it is bound to. The redundant New Session button has been removed from the chatbots list.
Aug 12, 2026¶
- CHANGE The legacy embedded web chat endpoints (the old
/embed/start/iframe flow), deprecated on Jun 4, 2026 with a removal date of 2026-08-03, have now been removed. Sites still using the old embed code get an error pointing at the successor and must move to the current chat widget.
Aug 7, 2026¶
- BUG Fixed the End Session tool failing on chatbots that use a Gemini model. The chat returned an error as soon as the tool was enabled, because Gemini rejected the tool definition Open Chat Studio sent. See Ending Sessions from a Chatbot.
Aug 5, 2026¶
- BUG Fixed an empty participant message breaking the rest of a conversation. Previously, a blank message (such as an empty Connect message or a silent voice transcript) was answered normally but then caused every following message in that session to fail. New empty messages are handled correctly, and sessions already affected recover on their own.
Aug 4, 2026¶
- CHANGE PDF files in collections are now read with a new text extractor that is faster and more accurate, especially on documents with tables, and reads each page separately. A PDF that can't be opened (for example a corrupted or password-protected file) now fails with a clear error instead of being indexed as unreadable text. Because the extracted text differs slightly from before, re-syncing or re-uploading an existing file regenerates its chunks and embeddings even if the file itself hasn't changed. See Indexed Collections.
- BUG Fixed teams being notified more than once about the same deprecated model. Previously, deprecating a new model re-announced every model deprecated before it, so earlier notices flipped back to unread and a second email went out. Each team is now told about a given model once. See Model Lifecycle and Deprecation.
- BUG Fixed the file list in a collection disappearing while a document source was syncing — it was replaced by the sync status on its own, which also stopped the file search box from working.
- BUG Date ranges on a table (two filters on the same column, such as after and before) are now kept in full everywhere. Reloading or sharing a filtered link restores both bounds as two filter rows, and choosing All matching filters when creating an evaluation dataset or adding sessions to an annotation queue no longer drops one of the bounds, which had been quietly including sessions outside the range.
Aug 3, 2026¶
- CHANGE OAuth applications are now registered and managed from your team's admin page instead of your user profile, and every application belongs to a team. Team Admins can now manage their team's applications, and tokens issued for a team's application always act on that team. Applications that existed before this change are not assigned to a team and can only be managed by superusers — any existing client-credentials application needs a team assigned to it before it can issue usable tokens again. See Getting started with OAuth2.
- BUG Fixed a JavaScript error on the evaluation dataset creation form that could occur if the page was still loading, which sometimes left the JSON editors uninitialized.
- BUG Fixed an error that occurred when a chatbot produced an empty response on Telegram. Empty responses are now skipped instead of failing.
Jul 30, 2026¶
- CHANGE When an evaluation run generates a response from your chatbot before judging it, that generation is now recorded and counted towards your team's total cost, as evaluation spend. Team totals may therefore rise if you run evaluations with generation enabled, since this spend was previously not recorded at all. Existing records are unchanged, and no chatbot, participant, or conversation becomes more expensive. See Evaluation cost and usage.
Jul 29, 2026¶
- CHANGE When creating an evaluation dataset from chat sessions, or adding sessions to an existing one, you now choose a selection scope — Selected only or All matching filters — instead of pre-selecting every row. Filtered selections of any size can now be cloned into a session-level dataset, where large selections previously failed; message-level datasets remain capped at 1000 sessions. Datasets of either evaluation level can also now be created empty and populated later. See Create a Dataset.
- CHANGE LLM usage from evaluators (such as LLM-as-judge calls) is now recorded and counted towards your team's total cost and token usage. Team totals may therefore rise if you run evaluations, since this spend was previously untracked. Evaluation spend is never attributed to an individual chatbot, participant, or conversation, so per-chatbot cost is unchanged — and filtering the dashboard's cost panel by chatbot or participant now excludes it, matching the Bot Performance column.
- BUG Fixed an error that caused chat exports to fail when the sessions list was filtered. The filters you selected are now applied correctly to the exported file.
Jul 28, 2026¶
- CHANGE The Show usages page for a service provider now appears immediately with a loading indicator while it searches, and resolves faster. Pipelines that reference the provider from several nodes are now listed once instead of once per node.
- NEW Turn.io WhatsApp messaging providers now have an optional Webhook HMAC Secret. When you set it (and configure the same secret in Turn.io), Open Chat Studio verifies the signature on every inbound Turn.io webhook and rejects requests with a missing or incorrect signature. Leaving it blank keeps the existing behaviour, so existing providers are unaffected. See Set up WhatsApp with Turn.io.
- BUG The Turn.io webhook endpoint now returns a clear error instead of a server error when it receives a non-POST request or a malformed request body.
- BUG The Show usages page for an LLM service provider now lists evaluators that use the provider. Previously these were left out, so a provider used only by evaluators appeared to be unused.
Jul 27, 2026¶
- NEW You can now register client-credentials OAuth applications for machine-to-machine API access. The application is pinned to one of your teams when you register it, and tokens issued with
grant_type=client_credentialsact on that team without any interactive authorization step. Machine tokens are limited to an allow-list of API scopes and cannot use the user-identity scopes (openid,profile) or the/meendpoint. See Getting started with OAuth2. - NEW Self-hosted deployments can now use S3-compatible object storage (such as MinIO, Cloudflare R2, Backblaze B2, Wasabi, or DigitalOcean Spaces) for file storage and WhatsApp voice audio, instead of only AWS S3. Existing AWS deployments are unaffected.
- NEW Added support for the Claude Opus 5 model from Anthropic. Opus 5 offers a 1M-token context window with adaptive thinking and configurable effort levels (low, medium, high, xhigh, max), and can now be selected for chatbots and pipelines.
- NEW Added support for MiniMax as an LLM provider. You can add MiniMax credentials in your Team settings and use MiniMax chat models (MiniMax-M3, MiniMax-M2.7, and MiniMax-M2) in your chatbots and pipelines. See LLM Service Providers.
- NEW Added MiniMax as a speech provider, so chatbots can synthesize spoken audio using MiniMax T2A text-to-speech voices. See Speech Service Providers.
- BUG Fixed an issue where only one filter per column was applied to a table, so date ranges (which use two filters on the same column, such as after and before) returned rows outside the range. All filters on a column are now combined, including in saved filters and dataset auto-population rules.
- BUG Fixed an issue where cancelling a scheduled message by its ID was not restricted to the caller's own participant and chatbot, so a scheduled message belonging to another team could be cancelled. Cancellation is now scoped correctly.
- BUG Fixed an error that occurred when a document source was deleted while its sync was still running. The sync now finishes quietly instead of failing.
- BUG Fixed an error that could cause document collection syncs to fail when several document sources were synced together in one batch. These syncs now run correctly.
- BUG Fixed an error that prevented the OpenAI assistant creation and edit forms from loading correctly. These forms now work as expected.
Jul 24, 2026¶
- CHANGE The Usage API (
GET /api/v2/usage/) can now break usage down byparticipant,chatbot, orplatform(one cursor-paginated row per group) and filter any metric to a singlechatbotorplatform. - BUG The Extract Structured Data node now validates property key names when you save the schema, showing a clear error instead of failing with a server error when a key uses characters that Anthropic models don't allow.
- BUG Fixed an error that could cause a document collection sync to fail when the same document source was synced by two processes at the same time. Only one sync now runs per source at a time, and duplicate syncs are skipped.
Jul 23, 2026¶
- CHANGE Document collection syncs are now more resilient: if a single file fails to process, the rest still sync and index. The sync log reports how many files failed, which ones, and shows a "completed with errors" state.
- CHANGE While a document source is syncing, the files list now shows files as they are added with a running "N files synced so far" count, instead of a spinner until the sync finishes.
- BUG The file search box in document collections now shows a working loading indicator while searching.
- BUG Fixed notification toasts that were hard to read in dark mode.
- BUG Fixed an error that could cause document synchronization to fail when a document had a very long identifier (such as a long URL from a JSON source). These documents now sync correctly instead of causing an error.
Jul 22, 2026¶
- CHANGE The maximum allowed timeout for outgoing HTTP requests (for example from a Code node) has been increased from 30 seconds to 60 seconds.
- BUG Fixed an error that could prevent evaluation scores from saving when an LLM judge's output contained invalid characters. Such characters are now removed automatically so scores save correctly.
Jul 21, 2026¶
- NEW Added a Usage API endpoint (
GET /api/v2/usage/) for querying usage metrics. The first metric available is a participant's message count for the current calendar month, for example?metric=messages&period=current_month&participant=<public_id>. Access requires theusage:readOAuth scope. - BUG Fixed a database connection error that could cause long-running document collection syncs to fail. Large syncs now complete reliably even when fetching documents takes a long time.
Jul 16, 2026¶
- BUG Fixed an error that could occur with Anthropic models when a message contained only whitespace or empty text. Such messages are now handled correctly instead of failing.
- BUG Fixed an error that could occur when viewing the traces table if a trace was not linked to a session. Such traces now display correctly instead of causing an error.
Jul 13, 2026¶
- CHANGE The Surveys feature has been removed. Following its deprecation on 2026-06-10, surveys were read-only for a 30-day export window that has now closed. Surveys can no longer be viewed, created, or linked to chatbots.
- BUG Fixed a validation error that could occur when using newer reasoning models (such as GPT-5.2 and GPT-5.5) with a temperature setting. Parameters that a model does not support are now filtered out automatically instead of causing an error.
- BUG Sending a chat message with no text and no attachment now returns a clear "bad request" error instead of a server error.
Jul 10, 2026¶
- BUG Fixed a
NameErrorwhen using there(regular expressions) orrandommodules directly in a Code node's Python code. Both modules are now available for direct use, alongsidejson,datetime, andtime. - BUG Fixed an error that prevented filtering notifications by date range (for example, "1 day"). Date filters now work as expected.
Jul 8, 2026¶
- CHANGE Generating a chat export now shows a live percentage progress bar instead of an indeterminate spinner, so you can see how far along a large export is.
Jul 7, 2026¶
- NEW Team admins can now download a zip archive of all their team's files from the Team Management page. The export runs in the background with a progress bar, and a download link appears when it's ready.
- CHANGE Deleting a team now requires typing the team's name in the confirmation modal before the delete button becomes active.
- BUG Fixed team member permissions so that only team admins — not all team members — can access the Team Management page.
- BUG Langfuse spans in the trace detail view now display in chronological order (sorted by start time) instead of the order returned by the Langfuse API.
- BUG Fixed the code node's AI code-generation help text, which referenced a non-existent
abort_pipelinefunction. It now correctly referencesabort_with_message, the function exposed to sandboxed code. - BUG Fixed pipelines occasionally returning a blank reply when the LLM sent a message along with a tool call and then followed up with empty content. The pipeline now surfaces the last non-empty response.
Jul 6, 2026¶
- NEW The session detail endpoint (
GET /api/v1/sessions/{id}/) now returns ausageobject with the session's total cost and a per-model breakdown of cost and token counts, so API consumers can see what a conversation cost. It appears only when retrieving a single session, not in list responses. - CHANGE Session responses from the v1 API (for example
GET /api/sessions/andGET /api/sessions/{id}/) now embed a lightweight experiment summary —id,name,description,url, andversion_number— instead of the full experiment representation with its completeversionslist. The/api/experiments/endpoints are unaffected.
Jun 30, 2026¶
- BUG Creating or editing an annotation queue with a name that already exists for your team now shows a clear validation error instead of a server error.
Jun 25, 2026¶
- BUG Fixed a
NameErrorin pipeline Code nodes when using tuple-unpacking assignments (for example,a, b = some_function()). Such assignments now work as expected.
Jun 23, 2026¶
- CHANGE API reference docs are now split by version.
/api/docs/is now a landing page linking to the v1 and v2 references; the v1 reference has moved to/api/v1/docs/and the v2 reference is at/api/v2/docs/. The raw schemas are available at/api/schema/(v1) and/api/v2/schema/. This also fixes v2 endpoints that were previously leaking into the v1 schema.
Jun 22, 2026¶
- CHANGE Reverting a chatbot to a previous version now opens a confirmation modal showing exactly what will change — a field- and node-level diff of the current working state against the target version. A warning appears when the working version has unreleased changes that the revert would overwrite.
Jun 18, 2026¶
- CHANGE The
/api/v2/me/endpoint now includes anemail_verifiedfield indicating whether the authenticated user has confirmed their email address.
Jun 15, 2026¶
- CHANGE The session retrieval endpoint (
GET /api/sessions/{id}/) now includes the session's state in its response payload, so consumers can read a session's stored state alongside its other details without a separate call.
Jun 11, 2026¶
- CHANGE Surveys are deprecated and will be removed on 2026-07-10. They are now decoupled from chatbots — the pre- and post-survey settings have been removed, so surveys are no longer presented to participants before or after a web chat. Existing surveys are read-only (you can no longer create new ones, only view or delete them) for a 30-day window so teams can export their data. A deprecation warning and an in-product notification announce the removal.
Jun 10, 2026¶
- CHANGE The cursor-paginated list endpoints —
/api/sessions/,/api/participants/,/api/experiments/, and/api/v2/chatbots/— now include acountfield (the total number of matching records) on the first page of results, so consumers can show real progress while paging through a full sync. The field is omitted on subsequent (cursor-following) pages and is optional, so existing consumers are unaffected. - NEW Added support for the Claude Fable 5 model from Anthropic. Fable 5 offers a 1M-token context window with adaptive thinking and configurable effort levels (low, medium, high, max), and can now be selected for chatbots and pipelines.
Jun 9, 2026¶
- CHANGE Chat sessions started through the API now require a per-session token to read their transcripts.
POST /api/chat/start/returns asession_token, which must be sent as theX-Session-Tokenheader on subsequent session calls (or an authenticated user with access to the session). This prevents session transcripts from being read by anyone who obtains a session ID. Breaking change for direct API consumers: send the returnedsession_tokenon subsequent calls, or opt out withuse_session_token: false. Token access to sessions inactive for more than 7 days is rejected. - NEW Added a read-only v2 chatbots API:
GET /api/v2/chatbots/(list) and/{id}/(retrieve), plus/{id}/inspect/?version=, which returns a single denormalized view of a chatbot's full configuration — settings, channels, pipeline nodes with their resources inlined, and event triggers. The response is self-documenting via the OpenAPI schema, making it well suited to LLM-agent consumers. - BUG Fixed an error when opening a chatbot's home page via a URL pointing to a version snapshot of the chatbot. Users are now redirected to the canonical URL of the active version instead of hitting an error.
Jun 8, 2026¶
- CHANGE WhatsApp channels using a Twilio provider now have their webhook configured at Twilio automatically when the channel is created, edited, or deleted. If auto-configuration isn't possible (for example, on a Twilio sandbox number), the manual setup instructions are shown instead.
- CHANGE The
POST /api/participants/endpoint now returns the full participant detail in its response, including the CommCare Connectconnect_channel_idfor each chatbot. Connect channels are created synchronously during the request, so callers no longer need to poll for the channel ID after updating a participant.
Jun 5, 2026¶
- CHANGE Any annotation reviewer (any team member) can now mark or unmark a submitted annotation as authoritative. This was previously restricted to queue admins.
- NEW Added a Clear all button to the evaluation runs page. Users with delete permission can wipe a config's entire run history in one action; this also un-applies the tags those runs added to their targets (chats and chat messages), returning them to their pre-evaluation state. Tags applied by hand are left untouched.
- CHANGE The number of reviews required on an annotation queue can now be edited even after annotation has started. Saving the new value recomputes the status of every queue item: raising the requirement can move completed items back to Awaiting resolution, while lowering it leaves unresolved multi-review items awaiting resolution rather than silently marking them complete. A confirmation dialog warns before the change is applied.
Jun 4, 2026¶
- CHANGE The legacy embedded web chat endpoints (the old
/embed/start/iframe flow) are now deprecated and will be removed on 2026-08-03. Responses from these endpoints now includeDeprecation,Sunset, and successorLinkheaders per RFC 8594. Sites still embedding chat via the old iframe flow should migrate to the current chat widget.
Jun 3, 2026¶
- CHANGE Published chatbots now automatically reflect updates to their linked collections — scheduled document-source syncs to RAG indexes and manual edits to media (attachment) collections — instead of staying pinned to the snapshot captured at publish time. Existing published bots pick up this live behaviour the next time they're republished.
- NEW The trace table now has a Session ID filter, and quick links let you jump from a trace detail page or a chatbot session transcript straight to a trace table pre-filtered to that session, chatbot, or participant.
- BUG Fixed a crash that could occur with Azure text-to-speech when a voice was asked to speak text in a language it doesn't support. Azure could return a corrupted audio file in this case; the bot now detects the invalid output and gracefully falls back to a text response instead of erroring out.
Jun 2, 2026¶
- CHANGE The Annotation Reviewer role now includes chat-view permission by default, so reviewers can open the sessions attached to the queue items they're working on without needing the chat viewer role granted separately. Trace icons are also now only rendered for users who have permission to view traces.
- BUG Bot messages pushed directly through the Trigger Bot Message API with
message_text(verbatim delivery, no LLM) are now captured in tracing alongside LLM-generated messages, so they appear in the session trace and observability views.
Jun 1, 2026¶
- NEW WhatsApp channels now accept inbound images and documents across all three providers — Meta Cloud API, Twilio, and Turn.io. Incoming media is downloaded, persisted, attached to the session, and forwarded to the LLM alongside the user's message.
- BUG Fixed a 404 that could occur when downloading attachments received over the email channel. The
ChatAttachmentrecord required by the authorized download endpoint was not being created during inbound email hydration, so links generated for the bot's attachments resolved to "not found".
May 29, 2026¶
- CHANGE The chatbot UI now surfaces a warning wherever a chatbot is viewed if no consent form is configured, making it easier to spot bots that may be collecting participant data without a consent mechanism in place.
May 28, 2026¶
- CHANGE Rerunning an evaluation now reconciles tags applied by its evaluators' tag rules. After a rerun, any tag managed by those rules that no longer matches the latest evaluator output is removed from the affected message or session — even if it had originally been applied by a human. FULL reruns reconcile every row in the dataset; DELTA reruns only reconcile the rows in their scope. PREVIEW runs do not apply or remove tags.
- CHANGE Reorganised the evaluation dataset edit page: Add Sessions now opens a dedicated sub-page with a simplified selection UI (mirroring the annotation-queue Add Sessions surface), and the Manual entry and CSV upload forms are hidden behind a new Add dropdown until selected.
- BUG Fixed a retrieval-quality bug affecting local indexed collections that use Voyage AI or Google embedding models. Documents were previously embedded in "query" mode rather than "document" mode, weakening retrieval accuracy. OpenAI collections are unaffected.
- BUG Fixed local indexing for OpenAI providers configured against an OpenAI-compatible proxy or gateway (e.g. LiteLLM). The provider's custom base URL is now passed through to the embedding client during indexing, which previously always hit
api.openai.comand failed with a 401.
May 25, 2026¶
- NEW Added a Concordance view under Evaluations that compares an LLM judge's output against human annotations on a shared categorical field. The view shows side-by-side judge vs. human values per session, an overall agreement count and percentage, and matched / eval-only / human-only buckets with deep links per row. This feature is alpha and gated behind the
flag_assessments_concordancefeature flag. - NEW Added a Show usages button to each service-provider edit page that lists the chatbots, assistants, pipelines, collections, and channels referencing that provider, with version badges and direct links to each working version. A staff-only Find provider by API key admin tool also lets administrators look up providers across teams by full key, suffix, or substring — useful for credential rotation and leaked-key triage.
- BUG Fixed an error that could appear when opening an evaluation dataset whose ingestion task was still queued. The dataset edit page now shows a "Queued. Waiting for task to start..." message instead of erroring out.
- BUG Fixed a
ValidationErrorraised when theAppend to Participant Datatool was called with a dictionary value (for example, multi-part responses from anLLM Response With Promptnode). Dict values are now accepted and appended to the participant data list as a single entry. - BUG Fixed a
ValueErrorthat could prevent file downloads (notablyvoice_note.ogg) when an underlyingFilerecord had no stored content. Empty files are no longer created, and the download view now returns a 404 instead of erroring out for any pre-existing empty entries.
May 22, 2026¶
- BUG Message exports now include AI messages that don't have an associated human input message (e.g. pre-tracing data), which were previously omitted. The "Trace ID" column is now sourced from each message's own trace info, so AI response rows will be empty where they previously inherited the trace ID from the input message.
May 20, 2026¶
- NEW Evaluations can now be edited and deleted from the UI. A new Edit button on the evaluation detail page opens the configuration form, and Delete actions are available both on each row of the evaluations list and on the detail page. Deleting an evaluation cascades to its runs and results.
- NEW Multi-reviewer annotation queues now support authoritative answers for resolving conflicting annotations. Queue admins can mark one annotation as the authoritative response from a "Mark authoritative" button next to each annotation. Items with all required reviews submitted but no authoritative pick enter a new Awaiting resolution status, surfaced with an amber banner on the annotate page and
resolved / awaitingcounts on the queue detail. Aggregations prefer the authoritative annotation per item (falling back to all submitted when none is set), and CSV/JSONL exports now include anis_authoritativecolumn. - BUG Fixed CSV transcript exports so that special characters (curly apostrophes, accented letters, etc.) render correctly when opened directly in Excel.
May 19, 2026¶
- CHANGE Outbound emails sent by the bot now use the
email_subjectvalue from session state as the subject line when set, falling back to "New message" when absent. Inbound reply threads continue to reuse the original subject. - CHANGE The Trigger Bot Message API now returns the session details (
session_id,url,team, andchannel) in its 200 response, so callers can reference the session immediately without a follow-up lookup. - CHANGE The session list and detail API responses now include a
statusfield, exposing the current state of a session (setup,pending,active,complete, etc.) to API consumers. - CHANGE The session list and detail API responses now include a
platformfield, identifying the channel through which the session was created (e.g.web,api,slack).
May 15, 2026¶
- NEW Session-level evaluation datasets can now be auto-populated from a source chatbot. Configure one or more filter-driven rules on a dataset, and matching new sessions are continuously ingested on a 5-minute polling cycle. When a rule is linked to an evaluation config, evaluators run automatically over only the newly added rows.
- NEW The Trigger Bot Message API now accepts an optional
message_textparameter that delivers the exact text to the participant's channel without LLM processing. Requests must include eitherprompt_text(for an LLM-generated reply, existing behaviour) ormessage_text(for verbatim delivery), but not both. - NEW Session-level evaluation datasets can now be populated by importing sessions from an annotation queue. From a session-level dataset's edit page, choose Import from Annotation Queue and pick any team queue that contains session items. Imports are de-duplicated against the existing sessions in the dataset.
- NEW Reviewers can now edit their own submitted annotations on a queue item. An Edit button appears next to each of your annotations, opening the form pre-filled with your existing responses; saving updates the annotation and recomputes the queue's aggregate stats.
May 13, 2026¶
- NEW Added a
GET /api/participantsendpoint to list participants for your team along with their per-chatbot data. The endpoint supports filtering byidentifier,platform, andexperiment(chatbot public id), and is cursor-paginated. A newparticipants:readOAuth scope is required for read access. - CHANGE The
ParticipantDataAPI fieldexperimenthas been renamed tochatbot(chatbot name) andchatbot_id(chatbot public id) to align with user-facing terminology.
May 6, 2026¶
- NEW Added a Create action to the Participants page, letting you add a single participant by hand without using the bulk CSV importer. The form takes an identifier, platform, and optional name, and shows an inline link to the existing participant if one already exists for that platform and identifier.
- CHANGE v0.7.0 of the Chat Widget is released. See widget chagelog for details.
May 5, 2026¶
- CHANGE Increased the HTTP request size limit from 512 KB to 1 MB and the response size limit from 1 MB to 5 MB for the restricted HTTP client used in pipelines.
Apr 30, 2026¶
- NEW Added Email as a messaging channel. Users can now communicate with chatbots via email — inbound messages are received through a webhook, routed to the correct chatbot, and replied to in a threaded email conversation. This feature is gated behind the
flag_email_channelfeature flag. - NEW The email channel now supports bidirectional file attachments. Inbound attachments (PDFs, CSVs, images, etc.) are saved and made available to the LLM or pipeline; oversized or blocked file types are surfaced as inline notes so the bot can explain the rejection. Outbound files produced by the pipeline (e.g. via
add_file_attachment()in a Python node) are sent as MIME attachments in the same threaded reply. - NEW Trace detail pages now include a Performance Metrics section showing LLM turn count, tool call count, total tokens, input tokens, and output tokens for each pipeline execution. Metrics are collected across all LLM nodes (Router and LLM nodes); pipelines without LLM nodes display "—" for all metrics.
Apr 29, 2026¶
- NEW Added Voyage AI as a local embedding provider. Teams can now configure a Voyage AI service provider to embed and semantically search documents in collections using models such as
voyage-4-large,voyage-4, andvoyage-3.5.
Apr 28, 2026¶
- NEW LLM evaluators can now automatically tag sessions or messages based on evaluation results. A new Tag Rules section on the evaluator form lets you define conditions (equals a value, or falls within a numeric range) that apply a tag when matched. Applied tags are recorded in an audit log and shown in the Applied Tags column on the run results page.
Apr 25, 2026¶
- NEW Added intron.io as a Text-to-Speech (TTS) provider. Teams can configure an intron provider with an API key to access 90 voices across 45 African and international accents (male and female), including Afrikaans, Hausa, Igbo, Kinyarwanda, Swahili, Yoruba, Zulu, and more.
Apr 23, 2026¶
- NEW Pipeline structure and event trigger data are now provided as context to the chat widget when viewing a pipeline, enabling you to ask the assistant questions about the pipeline you are currently viewing.
- BUG Fixed a
SyntaxErrorin the evaluator form that prevented the variable autocomplete feature from loading correctly.
Apr 22, 2026¶
- NEW Evaluation datasets now support session-level evaluation, allowing evaluators to judge an entire conversation holistically rather than individual message pairs. When creating a dataset, choose "Message level" (existing behavior) or "Session level" (new). Session-level datasets can be populated by cloning sessions, and incompatible evaluators are automatically filtered out when configuring evaluations.
- BUG Fixed a
TypeErroron mobile Safari that prevented the trends chart from rendering when the chatbot table was dynamically loaded.
Apr 21, 2026¶
- NEW Annotation exports (CSV and JSONL) now include three additional fields:
session_id(the UUID of the linked session),flagged(whether the item is flagged), andflagged_reason(the list of flag entries). Flagged items with no annotations are also included in the export. - BUG Fixed an error that occurred when rapidly removing filters in the UI.
- BUG Fixed an API error that occurred when serializing sessions whose
external_idcontained a dot character (e.g., Slack-format identifiers). The sessions API endpoint now correctly handles allexternal_idformats.
Apr 12, 2026¶
- BUG Fixed an issue where document indexing failed for certain markdown files containing multi-byte UTF-8 characters.
Apr 10, 2026¶
- NEW Added date range and participant filters to the annotation queue view, making it easier to find specific sessions.
Apr 8, 2026¶
- NEW Python Node code in pipelines can now call
end_session()to programmatically end the current session, enabling more complex and deterministic session-ending logic.
Apr 2, 2026¶
- NEW Added the ability to import sessions from an existing evaluation dataset into an annotation queue.
Mar 31, 2026¶
- NEW Added three session selection modes when adding sessions to an annotation queue: Selected only (default, hand-pick via checkboxes), All matching filters (bulk-add every session matching the current filter), and Sample (add a random percentage of matching sessions using a configurable slider). A confirmation modal is shown for bulk operations.
Mar 27, 2026¶
- NEW When uploading files to a media collection, it will now indicate which channels cannot send this file. Hovering over a channel will also show the reason why it cannot send the file.
Mar 26, 2026¶
- BUG Fixed an issue where chat poll API responses could not generate correct URLs due to missing request context in the response serializer.
- NEW Added ElevenLabs as a speech service provider, supporting text-to-speech (TTS) and speech-to-text (STT). Providers can sync voices from the ElevenLabs catalog, and custom voices created in ElevenLabs are automatically synced to Open Chat Studio.
- BUG Fixed an authentication error that occurred when an invalid
chatbot_idwas provided in API requests.
Mar 25, 2026¶
- NEW The Meta Cloud API WhatsApp provider now supports media messages. Users can send and receive images, videos, audio, and documents through WhatsApp channels.
Mar 24, 2026¶
- BUG Fixed an error that could occur when displaying file sizes for files with no recorded content size.
Mar 23, 2026¶
- NEW The Meta Cloud API WhatsApp provider now supports template messages as a fallback when the 24-hour service window has expired. When a bot cannot send a message due to an expired window, it automatically sends a pre-configured WhatsApp template instead of silently dropping the message.
- BUG Fixed an issue where timeout triggers stopped firing after publishing a new experiment version. Sessions created before the publish were silently excluded from timeout detection.
- CHANGE The default timeout for Custom Action HTTP calls has been increased from 10 seconds to 30 seconds to better accommodate complex or slow external services.
Mar 19, 2026¶
- NEW Python Node code in pipelines can now use
print()to capture debug and diagnostic output. Printed output is collected and visible asconsoledata in the node's trace span, including in Langfuse. - NEW The Meta Cloud API WhatsApp provider now supports voice messages in addition to text messages.
- NEW Excel and Word document attachments are now automatically converted to text before being sent to the LLM, enabling these file types to be processed in conversations alongside PDFs and images.
Mar 18, 2026¶
- NEW Added support for Meta Cloud API as a new WhatsApp messaging provider, enabling direct integration with the WhatsApp Business Platform without requiring a third-party intermediary. Configure it using your WhatsApp Business Account ID, System User Access Token, App Secret, and Webhook Verify Token.
- NEW Added a Set Session State Key and Get Session State built-in tools that allow LLM nodes to read and write data from the session state during a conversation.
- NEW Added Append to Session State and Increment Session State Counter built-in tools, mirroring the existing participant data tools for managing lists and counters in session state.
Mar 17, 2026¶
- BUG Fixed an issue where pipelines triggered by events (e.g. conversation end, timeout) silently discarded updates to participant data, session state, and session tags. These state changes are now correctly persisted.
Mar 16, 2026¶
- NEW Session CSV exports now include a Session State column containing the data stored in the
session_statefield, making it easier to inspect pipeline state alongside conversation history. - NEW Session detail views now display participant data as of the latest trace, with a timestamp note. AI messages that triggered participant data changes show a diff icon — click it to see a color-coded popover of what was added, removed, or modified.
Mar 11, 2026¶
- NEW Added an Annotation Reviewer team role that grants scoped access to annotation queues. Users with this role can view and annotate queues they are assigned to, but cannot manage queues, add sessions, export results, or access other parts of the app.
Mar 10, 2026¶
- NEW Participant data changes are now tracked per trace. The trace detail page shows a color-coded summary of what data was added, removed, or modified during each conversation turn, and CSV exports include a Participant Data column with the data snapshot at each message.
- CHANGE The Send Email pipeline node's subject and recipient fields now support Jinja2 templates, and a new optional body field also accepts Jinja2 templates — the same variables available in the Render Template node. Existing pipelines are unaffected.
Mar 9, 2026¶
- NEW Natural language filtering is now available to all users. Type plain-English queries (e.g., "sessions from last week excluding WhatsApp") on session, message, traces, participants, and notifications tables and click ✨ Generate to automatically build filter rows.
Mar 4, 2026¶
- NEW Teams now receive in-app notifications when LLM models are deprecated or removed.
Archive¶
Note
You can find older entries in the GitHub release notes.