Reactor class (model name reactor/ltx2), send named commands,
receive events. LTX’s surface adds commands for the avatar photo, the script, delivery style, and
take-level controls like speech rate and seed.
At a glance
The model name is the string you pass when you open a session, e.g.
new Reactor({ modelName: "reactor/ltx2" }); the create-reactor-app CLI and the pricing catalog
use the short slug ltx2. See Pricing & Billing for how billing works.
Key features
Identity lock
One photo fixes the face for the whole take. Identity, framing, and background hold from the
first frame to the last.
Joint video + audio
One generation pass produces the voice and the lip-synced picture together, on a single sample
clock, and streams both as one take.
Scene-driven delivery
A separate scene prompt casts the voice and controls tone, energy, and setting, independent of
the words being spoken.
How a long take holds together
A take is not one continuous render. The model generates it in 20-second windows and opens a new window every 10 seconds, so each window overlaps the one before it by half its length. That overlap is what holds a long take together: each window is generated against the second half of the previous one under the same conditioning, so the face, the voice, and the background carry forward from window to window instead of drifting the way a chain of separate clips would. Frames arrive at 24 fps in wall-clock time, whatever lead generation has built up. Play the stream as it arrives; there is nothing to buffer or poll.Take length defaults to the script length divided by the speech rate you set with
set_wpm. A
duration outside the 4 to 300 second range clamps into it. If your script is shorter than the
requested duration, the avatar holds an idle presence for the remainder instead of looping or
repeating the script.Install
- npm
- pnpm
Quick start
Ltx2Model is the typed client: one named method per command, one subscription per message.
<Ltx2Provider> and useLtx2(), which the
tutorial builds a full app on. If you would rather send raw
commands, the base Reactor class speaks the same wire protocol;
see Typed Model SDKs.
How it works
- Connect to the model.
- Set the avatar image with
set_avatar_image. Required beforestart. - Set the script with
set_script. Required beforestart. - Set optional conditions: a scene/delivery prompt, speech rate, duration, or seed.
- Start the take.
- Control playback with pause / resume / stop.
- Reset to clear the avatar image and start over.
resetis the only way to clear it.