Changelog¶
Info
Looking for the embeddable chat widget? See the Chat Widget changelog.
Looking for older entries? See the GitHub release notes.
Oct 23, 2026¶
- NEW Added v2 API endpoints to create, update and archive a chatbot's static, timeout and scheduled triggers (
/api/v2/chatbots/{id}/static-triggers/,timeout-triggers/andscheduled-triggers/). Changes apply to the working version, and requests are validated the same way as the trigger forms in the web app. Chatbot inspect now also lists scheduled triggers. See the API documentation.
Oct 16, 2026¶
- CHANGE The Public link channel is now available to every team. It no longer needs a feature flag to appear in the add-channel dropdown. See Deploy your chatbot with a public link.
Oct 15, 2026¶
- NEW Added an Annotation Queues column to the sessions list, showing each queue a session is in with the item's status, and an Annotation Queue filter with a Not in any queue option for finding sessions nobody has reviewed yet. Both require the human annotations feature flag. See Annotation Queues on the Sessions List.
- CHANGE The session CSV export has a new Annotation Queues column directly after Session Tags, formatted
Queue name (Status), .... Every column after it moves one position to the right, so anyone reading the export by column position needs to adjust. The cells are empty for teams without the human annotations feature flag. - NEW Added v2 API endpoints to list, retrieve, create, update and archive a team's source material (
/api/v2/source-material/) and consent forms (/api/v2/consent-forms/). Changes apply to working versions only and reach published chatbots when they are next published. Client-credentials tokens can read these resources but not change them. See the API documentation.
Oct 14, 2026¶
- NEW Added a Copy action to the Evaluators page. It duplicates an evaluator, including its tag rules, with " (copy)" added to its name, and opens the copy for editing. Archived evaluators can also be copied. See copying an evaluator.
Oct 13, 2026¶
- MIGRATION Removed the OpenAI models
o4-mini,o3-mini,gpt-4,gpt-4.1-nanoandgpt-3.5-turboahead of OpenAI's shutdown on Oct 23, 2026. Chatbots, pipelines, assistants and evaluators using them now usegpt-5.6-sol(replacingo4-mini,o3-miniandgpt-4) orgpt-5.6-terra(replacinggpt-4.1-nanoandgpt-3.5-turbo), and affected teams receive an in-app notification. Azure OpenAI versions of these models are not affected. See Model Lifecycle and Deprecation. - NEW The pipeline builder has three additions: a find button (or Ctrl/Cmd+F) that searches the text on every node and opens the matching node, tool-name autocomplete in LLM node prompts for the tools enabled on that node, and a Help button in LLM and Router prompt editors that asks an AI assistant to suggest a revised prompt you can edit, accept or reject. See Search and get prompt help in the pipeline editor.
Oct 12, 2026¶
- NEW
sync_teamhas a new--followflag for the cutover: the command keeps running after the first pass and pulls new rows from the source on a configurable interval (default 10 seconds, set with--interval) until you stop it with Ctrl+C.sync_teamalso now finds the parent of a row the source created during the sync instead of stopping, unless the parent was deleted or belongs to a chatbot that isn't part of the sync. It also retries after rate-limit responses from the source, and keeps edits made on the target to sessions, chats, participants and participant data. See team migration.
Oct 9, 2026¶
- CHANGE Participants can no longer send executable or installer files (such as
.exe,.msior.dmg) to a chatbot on any channel. Email already blocked these; the block now also applies to WhatsApp, the chat widget, the chat API and in-app chat. On the widget, chat API and in-app chat the upload is rejected with an error naming the file. On WhatsApp and email the file is dropped and a note is added to the message text so the chatbot can tell the participant. Windows executables are now also detected from the file contents, so an.exerenamed toreport.pdfis rejected. See channel file support.
Oct 8, 2026¶
- NEW The LLM node has a Metadata Filters setting, shown once an indexed collection is selected, that limits the collection search to rows whose metadata matches every key and value you set, for example
district=Khayelitsha. Matching is exact and case-sensitive, and remote indexes ignore the setting. Filtered searches match on words only, so results can differ from an unfiltered search. See Filter Collection Search by Metadata. - BUG When syncing voices for an ElevenLabs provider fails because the API key lacks a required permission, such as
voices_read, Open Chat Studio now shows the error message returned by ElevenLabs so you can see which permission to add to the key. Previously a generic error was shown. - BUG The Trigger Bot Message API now returns a
400 Bad Requesterror when called for theapi,embedded_widgetorpublicplatforms, which cannot start conversations with participants. Previously these requests failed with a500 Internal Server Error. - NEW ElevenLabs speech providers can now use the v4 and v4 Turbo text-to-speech models. v4 is the highest-quality option and v4 Turbo is the real-time option. Multilingual v2 remains the default.
- NEW CommCare Connect chatbots can now send images and files, from a media collection or a code node, to participants in the Connect app. Attachments are end-to-end encrypted like the message text and expire after 90 days. A file over 2.5 MB, or any file beyond 10 files or 15 MB in one reply, is sent as a download link in the message text instead. Participants on app versions that cannot show attachments see a prompt to update the app in place of the message.
Oct 7, 2026¶
- NEW The Integrations table in Team Settings has a Verification column for LLM providers showing Verified, Check failed (linking to the provider's page with the error), or Not checked, together with when the check ran. Provider types that have no credential check show a dash.
- CHANGE Credential verification no longer tests credentials against a deprecated model, which providers may have withdrawn. A failed check now says the credentials "could not be verified" instead of saying the provider rejected them, since the check can fail for reasons other than the credentials. The notice also says when the check ran, for example "Checked 3 days ago". Results from checks before this change show no time.
- CHANGE Downloading a single evaluation run's results, from the results page, the upload-template page or the runs table, now runs in the background. A progress bar shows while the file is prepared, followed by a download link, so large runs no longer time out. Rows in the file are now grouped by message. A failed run can now be downloaded with its partial results, and the download button is disabled while a run is still in progress.
Oct 5, 2026¶
- NEW OAuth applications can now request a
teamsscope, shown on the consent screen as List your teams. Once granted,/o/userinfo/and the ID token include ateamsclaim listing the slug and name of every team the user belongs to, so a client that connects one team per token can show which teams are already connected and offer to connect the rest. The token is still scoped to a single team. Only global applications can request the scope, and it is not available to client-credentials tokens, which have no user.
Oct 2, 2026¶
- NEW An indexed collection on a local index can take a
.csvor.tsvthrough the new Import CSV/TSV rows entry under Add Files, indexing each row as its own searchable record. Choosing a file shows a preview with the row count and the first five rows as they will be indexed, and you tick up to 16 columns to store as metadata on each row. An import can hold up to 10,000 rows, each at most 2,000 tokens once rendered, and both limits are checked at preview. Remote (OpenAI) indexes don't offer row import. See Import CSV/TSV Rows into a Collection. - NEW Generate Chat Export on a chatbot's Sessions tab now opens a dialog where you choose which columns go into the CSV. Every column is selected to begin with, and Select all and Clear all change them all at once. Message ID and Message Type are always included. The file keeps the export's usual column order whatever order you tick the columns in.
- NEW The Migration card in the Data section of Team Settings now lets Team Admins choose what a team migration exports: the whole team, or selected chatbots. Selecting a chatbot includes all of its versions, and team members, tags, pricing rules and notifications are always exported for the whole team. When a selection is active, the migration banner says how many chatbots are being migrated, and migration mode stops triggers and scheduled messages only for those chatbots — the rest of the team keeps running. The card warns you when a change would leave a chatbot firing on both servers.
- NEW An evaluation run now shows which of its messages failed. The run page has a Failed messages stat, and when more than 5% of the messages failed it also shows a warning grouping the failures by cause — "Generation failed: Provider quota exhausted", for example — with what to do about each. In the results table, failed rows carry a badge and an Errors filter pill shows only those rows; opening a row shows the reason for each failure, naming the evaluator when it was an evaluator that failed. Previously a run whose chatbot or evaluator calls failed looked like a clean run, and the failures were scored as if the chatbot had answered.
- NEW Your team now gets a notification when an evaluation run completes with more than 5% of its messages failed, linking to the run's failed results. A run that fails outright — an evaluator with no model configured, or a stalled batch — now also sends a notification; previously the error was only visible on the run page.
- CHANGE Failed evaluation results no longer count towards aggregates, tag rules or scores, so those numbers now reflect only the messages the chatbot and evaluators actually completed. The results CSV download has a new
generation_errorcolumn. Failed generations are still passed to the evaluators, as before. - CHANGE
sync_teamnow names the chatbots it migrated and states what it did not migrate, and a partial sync no longer requires the team's files bundle — it fetches any missing files from the source server as it goes.sync_team --force-deletestill deletes the whole local team before re-importing, whether the sync is partial or not.
Sep 29, 2026¶
- NEW Annotation queue fields now appear in the order you arrange them. Each field in the schema builder has a drag handle and up/down buttons, and the order you set carries through to the annotation form, the previous-reviews panel, CSV and JSONL exports, the aggregate scores panel, the summary column in the items table, and the delete-confirmation dialog. Re-ordering stays available after a queue's schema has locked, because it changes only how fields are presented, not what was recorded. Existing queues keep the order they show today until someone saves the queue form.
- BUG The summary column in an annotation queue's items table now shows the first three fields in the queue's field order. Previously the three it picked came from how the schema happened to be stored, so they matched neither the order the fields were created in nor any order you could control.
- MIGRATION The team-sync export schema gained the annotation queue
field_orderfield, so its checksum has changed. Self-hosted operators runningsync_teamwith schema enforcement between two servers must upgrade both sides to this release before syncing.
Sep 22, 2026¶
- CHANGE Deleting an evaluator that has already produced results now archives it instead of deleting it, so its results, aggregates and applied tags are kept and past runs and exports still show them. An archived evaluator carries an Archived badge, can still be opened and edited, and no longer appears in the evaluator picker or takes part in new runs — except on an evaluation config that already uses it, where it stays in the picker so you can untick it. Use Unarchive to make it usable again. An evaluator with no run history is still deleted outright, and a config whose evaluators are all archived cannot be run.
- MIGRATION The team-sync export schema gained the evaluator
is_archivedfield, so its checksum has changed. Self-hosted operators runningsync_teamwith schema enforcement between two servers must upgrade both sides to this release before syncing. - MIGRATION The database tables behind the removed OpenAI Assistants feature have been dropped, together with the assistant references on pipeline nodes and custom action operations. Nothing changes in the app — the records themselves were deleted on Sep 16 — but the drop is permanent and cannot be reverted, and the Super Admin role loses its assistants permissions, which no longer grant access to anything. Self-hosted operators who have not yet run the
retire_assistant_file_purposecommand from the previous release should run it before deploying this one.
Sep 21, 2026¶
- NEW The v2 chatbots API can now publish and archive a chatbot. One endpoint publishes a new version of the working draft, taking an optional
version_description; a second reports the chatbot's publish state —pendingwhile a publish is still running, orcompletedwith the newestversion_numberonce it has finished — so a client can poll for the outcome; and a third archives the chatbot. A publish is refused with a422listingpipeline_errorswhen the draft pipeline is not valid, and with a409when a publish or revert is already under way. Archiving is refused with a409listing the channels still attached to the chatbot, each with its id, platform and name, so you can find and remove them in the web app first. - CHANGE The session endpoints (
GET /api/sessions/andGET /api/sessions/{id}/) now return two more fields:ended_at, the time the session ended (nullwhile it is still open), andparticipant_data, the participant's data as it stood after the session's last message. Both were already shown on the session details page. - BUG An LLM evaluator whose model declines to return structured output — it refuses, the provider blocks the reply, or it does not call the tool — now reports
The model did not return structured output:followed by what the model said, or the provider's stop reason if it said nothing, in the sameerror (<evaluator name>)column. Previously the results grid showed'NoneType' object has no attribute 'model_dump'. A schema mismatch is still retried; a declined request is not, since asking again gets the same answer. - BUG A router node whose model declines to return structured output now takes its default route instead of failing the participant's turn. The Extract Structured Data and Update Participant Data nodes skip the part of the input the model gave nothing for and carry on, rather than failing the turn, and Update Participant Data leaves participant data unchanged if nothing at all could be extracted.
- CHANGE The Usage API (
GET /api/v2/usage/) accepts a newparticipant_remote_idfilter, and the participants list endpoint (GET /api/participants/) accepts a newremote_idfilter. Both match the external participant ID supplied asparticipant_remote_idwhen a session is started through the Chat API, so you can query by your own user ID without first looking it up as an OCS participant ID. On the Usage API,participant_remote_idcannot be combined withparticipantorparticipant_identifier.
Sep 18, 2026¶
- NEW OpenRouter can now be added as an LLM provider. OpenRouter routes requests to models from OpenAI, Anthropic, Meta, Google, DeepSeek and others through a single API key, so one provider entry gives your chatbots access to all of them. No models are pre-configured, so after adding the provider, add each model you want to use as a custom model.
- NEW Ten GPT-5 and GPT-6 models can now be selected on the Azure OpenAI provider: GPT-6 Astra, GPT-5.6 Terra, GPT-5.6 Sol, GPT-5.6 Luna, GPT-5.5, GPT-5.4, GPT-5.4 Pro, GPT-5.4 Mini, GPT-5.4 Nano and GPT-5.2. They were previously available only on the OpenAI provider.
- NEW Added Gemini 3.1 Pro Preview and Gemini 3.1 Flash Lite on the Google (Gemini API) provider, Qwen3.8 27B on Groq, and MiniMax-M2.5 on MiniMax.
- CHANGE Seven models that their providers have retired were removed. Chatbots and pipelines using them were switched to a replacement automatically, and affected teams were notified: Anthropic's
claude-3-5-haiku-latest(now Claude Haiku 4.5) andclaude-3-7-sonnet-20250219(now Claude Sonnet 4.6), OpenAI'sgpt-5.3(now GPT-5.4) andgpt-5.3-instant(now GPT-5.4 Mini), Groq'sgemma2-9b-it(now GPT-OSS 20B), and Perplexity'sllama-3.1-sonar-small-128k-chatandllama-3.1-sonar-large-128k-chat(now Sonar and Sonar Pro). See Model Lifecycle and Deprecation. - CHANGE Reported costs have dropped for Claude Sonnet 5, Gemini 3.6 Flash (on both Google and Google Vertex AI), MiniMax-M3 and GPT-5.6 Sol, following price cuts by those providers. Cached-input and cache-write rates were also added for MiniMax-M2 and MiniMax-M3, whose usage of those services was previously reported as free.
- CHANGE Corrected two context window sizes: MiniMax-M2.7 is 204,800 tokens rather than 200,000, and OpenAI's GPT-5.6 Terra, Sol and Luna are 1,050,000 tokens rather than 1,100,000.
Sep 17, 2026¶
- BUG When a chatbot's LLM provider refuses a request for a reason only your team can fix — an exhausted account balance, a revoked or invalid API key, a model the provider has withdrawn — the participant now gets the chatbot's standard error reply and your team gets a notification naming the provider's own explanation. Previously the conversation turn was dropped without a reply. Note that Google Gemini reports an exhausted balance the same way it reports a rate limit, so that case is still treated as temporary and retried rather than reported.
Sep 16, 2026¶
- NEW Chatbot events have a third trigger type: a Scheduled Trigger that fires once at a date, time and timezone you pick, using the Create Scheduled Event button on a chatbot's Events tab. It runs the same actions as the existing triggers — end the conversation, prompt the bot to message the user, trigger a schedule or start a pipeline — against the chatbot's most recent session, and records each attempt in the event logs. Only published chatbots fire, and the trigger's date and time must be in the future.
- CHANGE Deleting a source material that a chatbot still uses is now blocked, with a message naming the chatbots that reference it — the same protection collections already had. Published chatbots and in-progress drafts both count as references. Previously the deletion silently succeeded and the chatbot kept running, quietly dropping that content from its prompt with no error and no warning.
- CHANGE Stored OpenAI assistant records have been deleted, completing the OpenAI Assistants removal. Every assistant, its tool resources, and any custom action operation that was attached to an assistant are gone permanently and cannot be recovered — custom actions themselves, and operations attached to pipeline nodes, are unaffected. A pipeline that still holds an assistant node behaves as before: the node renders as a Removed Node and the pipeline does not build until you replace it with an LLM node. See Migrate Assistants.
- CHANGE The
upload_to_assistantfield has been removed from Python node attachments. It has had no effect since Sep 7, but code that reads or assigns it now fails at runtime, so remove those references.
Sep 14, 2026¶
- NEW The pipeline builder now has undo and redo. Use the two new buttons next to the zoom and fit-view controls, or press
Ctrl+Zto undo andCtrl+Shift+Z(orCtrl+Y) to redo. Adding, deleting, moving and connecting nodes, and changing a node's parameters or label, can all be stepped back and forward. Dragging a node counts as one step, and deleting a node undoes together with the edges that were removed with it. Undo and redo are saved like any other edit, so an undone change survives a page reload, and neither is available on a pipeline you can only view. - BUG When a participant sends something the chatbot cannot use — an image in a format the LLM provider rejects, or a voice note to a chatbot with no speech provider configured for transcription — they now get a reply explaining what to change on every channel. The web chat page, the embedded widget and the Chat API previously discarded that reply and showed raw error text instead, and the occurrence was recorded as a failure even on the channels that did deliver it.
- BUG A voice note now always appears in the chat history and on the conversation's trace, whatever went wrong with it. Previously the reply about a voice note could arrive with the note itself missing from the history, so it read as a non-sequitur.
- CHANGE The Assistant Admin team role has been removed — the last user-visible leftover of the OpenAI Assistants removal. It can no longer be granted to a member or attached to an invitation, and existing memberships in it are gone, leaving seven roles on the members page. It was the only role granting full file management (add, change, delete), so anyone who relied on it for that needs another role — the roles that still reach files are view-only. See User Groups.
- CHANGE The warning shown when changing a collection's LLM provider no longer says the operation might break the assistant. The other three points are unchanged.
- BUG A contact card shared with a chatbot over WhatsApp (Meta Cloud API) no longer causes the message to fail. Contact and location messages are now parsed without error and simply carry no attachment.
- BUG Voice notes sent over a Turn.io WhatsApp channel are downloaded again. A recent fix had dropped their audio, so voice messages could not be transcribed or played back.
Sep 10, 2026¶
- BUG A file that fails to index in a remote-index collection now shows the LLM provider's own explanation — a rejected API key, an exceeded quota, a dropped connection — in the tooltip on its error badge. Previously the tooltip was empty, named only the internal error type, or gave the same generic message whatever the cause, and you had to check the server log to find out why. Note that the text comes from the provider verbatim, so it may include details the provider chose to include.
- BUG A file whose indexing fails in an unexpected way now ends up marked as failed, with the reason shown. Previously such a file stayed In progress indefinitely, its badge spinning against a job that had already stopped.
- BUG A file that belongs to more than one collection now records its indexing status and error reason per collection. Previously a failure in one collection overwrote the file's status in the others.
- BUG Changing a collection's LLM provider now clears the previous provider's indexing error reasons, so old failures no longer show against files waiting to be re-indexed.
- BUG Deprecating an LLM model no longer stops the chatbots using it. Previously those bots started replying with a configuration error the moment the deprecation shipped, and their pipelines could no longer be tested or versioned. A deprecated model now keeps working until it is removed, and the pipeline editor flags each affected node with a warning naming the model and its replacement so you can migrate in your own time. See Model Lifecycle and Deprecation.
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 8, 2026¶
- NEW Team administrators can require two-factor authentication for their team with the new Require two-factor authentication checkbox under Members & access on the team settings page. Once it is on, every member of that team — including the administrator who enabled it — must set up two-factor authentication before they can use Open Chat Studio, on any page and not just that team's. Members of teams that have not enabled it are unaffected. The setting is off by default.
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.
- CHANGE OpenAI Assistants no longer run. The assistant pipeline node has been removed, so a pipeline that still holds one opens in the editor with that node marked as a Removed Node but no longer builds — its chatbot cannot answer participants until you delete the node and put an LLM node in its place. OpenAI retired the Assistants API on 26 August 2026, so these chatbots had already stopped working in practice. Your assistant records are not deleted by this release, but nothing in Open Chat Studio can reach them any more and a later release will remove them for good. See Migrate Assistants.
- CHANGE The
upload_to_assistantfield on a Python node attachment is now inert. It is alwaysFalseand has no effect, and is kept only so that code reading it keeps working.
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. - CHANGE Team Settings has been redesigned as a single page with four sections — Integrations, Members, Developer and Data. Every service provider (LLM, speech, messaging, authentication, tracing) is now a row in one Integrations table you filter by category, reached from a single grouped Add integration button in place of the separate per-category pages. Active members and pending invitations share one searchable, filterable Members table, the team name is edited in place, and one Save key button in the Data section now saves the migration public key and migration mode together. No provider, member or invitation needs reconfiguring.
- BUG An invitation that fails validation now keeps the Invite people dialog open with the error shown. Previously the form closed with no invitation sent and no explanation.
- 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 Merging branches that are optional. - 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.