- JavaScript ships both a React API (provider, components, hooks) and an imperative API (the
Reactorclass). Use React for browser apps, imperative for vanilla JS or fine-grained control. The browser obtains a short-lived JWT token from your server. - Python is an async library for scripts, servers, and computer-vision pipelines. It receives frames as NumPy arrays and authenticates with your API key directly, server-side.
Never ship your API key to the browser. Browser apps exchange it for a JWT on your server; Python
runs server-side and uses the key directly. See Authentication.
Two layers: base SDK and typed SDKs
Reactor SDKs are built in two layers:- The base
Reactorclass is the generic, model-agnostic entry point. It speaks raw JSON over the wire: you callsendCommand(name, payload)and listen for genericmessageevents. It works against any model. This page teaches the base layer, so the examples work no matter which model you connect to. - Typed SDKs (for example,
HeliosModel) extend the base class and expose strongly-named methods (setPrompt(),sendImage(), …) that mirror a model’s schema. They add ergonomics, not capabilities, and every method is still asendCommand()under the hood.
Reactor class when you’re experimenting with a model that has no typed SDK yet, developing locally against an in-progress model, writing a one-off script, or want a single SDK that can talk to several models. For everything else the typed SDK is the recommended path. See Typed model SDKs for the full story and the name-to-name mapping.
For the commands and events a specific model accepts, see the Model API Reference.
Connecting
- JavaScript
- React
- Python
Connect
Disconnect
Receiving model output
The browser SDK delivers the model’s video as a media track you render in a<video> element. Python delivers decoded frames as NumPy arrays for processing.
- JavaScript
- React
- Python
Listen for the
trackReceived event and attach the stream to a video element.Track listener
Sending commands
Commands control what the model does. The available commands depend on the model. See the Model API Reference. Wait for the connection to reachready before sending commands; the model is not available until the connection is fully established.
- JavaScript
- React
- Python
Send command
File uploads
Upload files and pass them to commands. See File Uploads for the full guide.- JavaScript
- React
- Python
File upload
uploadFile() returns a FileRef (JavaScript ·
Python) containing the upload ID, filename, MIME type, and
size. Pass multiple FileRef values in a single command and mix them with scalar arguments like
transition.
Receiving messages
Models can send structured messages back to your app, such as the current frame number, generation state, or custom events.- JavaScript
- React
- Python
Message handler
Sending video input
For models that accept a video input (e.g. video-to-video models), publish a track to the input declared by the model. Publishing is explicit: the model receives nothing until you publish, and connecting on its own never starts sending. Publish once the connection isready, and call unpublishTrack() to stop.
- JavaScript
- React
- Python
Get a media stream and publish it once connected:To stop publishing:
Publish track
Unpublish
The track name (
"webcam") must match the attribute name declared on the model. The model declares which tracks it accepts in its capabilities, which are fetched automatically during connection.Error handling
Handle connection and runtime errors from the SDK.- JavaScript
- React
- Python
Error handler
ReactorError (JavaScript ·
Python) for all error codes and fields.
Reconnection
If a connection drops unexpectedly, the session stays alive on the GPU for 30 seconds. Reconnect within that window to resume without losing server-side state. For more information, see Sessions.- JavaScript
- React
- Python
Reconnect
- JavaScript
- React
- Python
Auto-reconnect
Sharing a session
Multiple clients can connect to one session at the same time. Create a session on one client (or your backend), read its id withgetSessionId(), then adopt it from another client by passing sessionId
to connect(). The creator owns the session lifecycle; clients that adopt it leave it running when
they disconnect.
- JavaScript
- React
Adopt a session
Full API reference
Typed model SDKs
HeliosModel, LingbotModel, and their React layers over the base SDK.JavaScript: Reactor class
The base class for connecting to any model and sending raw commands.
React components & hooks
ReactorProvider, ReactorView, WebcamStream, useReactor, and more.Python: Reactor class
The base Python class, decorators, and types for server-side use.