Experimental features
What is experimental right now, what that word promises, and how to turn each one on. Included with Studio and above.
Some capabilities ship before their shape is settled. Rather than hide them behind a flag you have to ask us for, they are on your account from Studio up, opt-in per call, and listed here so you can see exactly what you are taking on.
What "experimental" promises
It is a statement about the request shape, not a warning about quality:
- The shape may change in a minor release, without the deprecation window a stable field gets. Pin an exact SDK version if that matters to you.
- It may be inert while it rolls out. A call that asks for an experimental capability always connects and always behaves like a normal call; the extra behaviour may simply not happen yet. Nothing errors and nothing is billed differently.
- It is off unless you ask. Omit the field and your call is byte-identical to one made before the feature existed, so nothing that ignores this page can be affected by anything on it.
What the word never covers is a trust boundary. Inputs that are server-owned stay server-owned on every call — experimental or not — and that is enforced at the mint, not by convention. If a capability lets a conversation change something, the bounds are still yours to write and still unreachable from a browser.
The register
Everything currently experimental, in full. When this list changes, this page changes with it — the plan bullet and this table read the same register.
Runtime edit
The set behind your character is re-dressed while the call is running, following the conversation within a brief you write.
| Turn it on | video.edits.live — see the reference |
|---|---|
| Today | Accepted and carried end to end: the call connects and runs normally, and your brief is applied to the session. The re-dress itself does not reach every capacity tier yet, so a call may run to the end on its opening set. Nothing fails and nothing is charged differently when it does. |
| Included with | Studio and above |
Using one
Experimental capabilities are configured exactly like stable ones — in your session policy, server-side, next to your key. There is no separate endpoint, header or flag to set:
session: async ({ avatarId }) => ({
instructions: character.prompt,
video: {
edits: {
instruction: "her studio at golden hour", // stable: the opening set
live: { // experimental: runtime edit
rules: "only change the room and the light, never her face or clothes",
cooldownSeconds: 30,
},
},
},
})Because the opt-in is a field rather than an account setting, you can ship a call path that uses one and a call path that does not, in the same app, on the same avatar.
Telling us it went wrong
These are the surfaces we most want to hear about, and the ones where a small report is worth the most. Include the session_id from the grant — it is the one handle that finds a specific call.