> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.synthesia.io/docs/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.synthesia.io/docs/_mcp/server.

# Interactive Avatar: Widget versions and status

Once you've pasted a snippet, you shouldn't have to come back to it every time we improve the widget. We ship fixes and compatible improvements to the same script URL, so your page picks them up without any change on your side. To make that safe, we only make changes within a version that keep your existing code working. This page explains what that promise covers, and where to look when the service has a problem.

## How versions work

The script URL carries the major version, as in `/v1/runtime.js`. Within `v1`, we only make compatible changes, so a snippet you've pasted keeps working without any changes on your side.

A compatible change can:

* Add an event.
* Add an error code. That's why your code should treat any code it doesn't recognize as a generic failure.
* Add an attribute or a method.
* Add fields to an event's `detail`.

A compatible change never changes the meaning of an existing event, state, error code, attribute or method, and it never removes one. Anything these pages don't document is internal and can change at any time, so don't build on it.

If we ever need a change that can't be compatible, it ships as a new major version at `/v2/runtime.js`, alongside `v1`. Your `v1` snippet keeps working until the end of its support window.

## Service status

If the widget stops working and nothing on your side has changed, check [status.synthesia.io](https://status.synthesia.io/) for incidents. You can also subscribe there to get updates.