This method is for inbound agents: your agent answers and the Digital Human starts the conversation. If your agent places calls, use Outbound agents instead.
How it connects
Bluejay creates a room inside your LiveKit Cloud project, dispatches your agent into it, then mints a token and joins the Digital Human to the same room. No SIP or trunks involved.Quick start
- Add your LiveKit credentials — in Settings → Integrations, add your LiveKit
api_key,api_secret, andurl. - Set your agent name — in Agent Settings → Connection, enter the name your agent registers with, or leave it blank to dispatch your default agent.
- Create a simulation — go to the Simulations page, click Create in the top right, select your agent, and add or auto-generate Digital Human personas.
- Run it — in the Simulations tab, click Run on the simulation, then click Run calls (the button shows the call count, e.g. “Run 3 calls”).
- Review results — transcripts, recordings, and metric scores.
Token webhook
If you’d rather not store your LiveKit API key and secret with Bluejay, set a Token Webhook URL in Agent Settings → Connection instead. Before each simulated call, Bluejay POSTs to your endpoint and your side mints the room token.Request
Authorization header on this POST (e.g. Bearer <token>). No other authentication is added.
Response
In webhook mode you own agent dispatch: either bake a
RoomAgentDispatch into the token’s room configuration using the agent_name and agent_metadata we send, or dispatch your agent server-side when you handle the request.
Failure behavior
If your endpoint (or a proxy in front of it) responds401 or 403, Bluejay does not retry. The run fails immediately with status NO_CONNECTION and error code LIVEKIT_SESSION_SETUP_FAILED, and the error message states whether the configured Authorization header was sent. The header is sent exactly as configured, so a 401 means your side rejected that exact value. Timeouts and 5xx responses are retried up to 3 times before the run fails.
Room metadata
Optionally include metadata on the room at creation: add JSON to the metadata field in Agent Connection settings.Tool call tracking
Bluejay can capture tool calls your agent makes during a simulation. Publish a data packet to a LiveKit topic and Bluejay ingests it. In Agent Connection settings, set the LiveKit Customer Tool Topic field to the topic your code publishes to (e.g.customer.tool.calls). Then, whenever your agent invokes a tool:
name is required; everything else is optional:
Bluejay buffers packets during the call and persists them when the simulation ends.
Sending traces to Bluejay
Export OpenTelemetry traces from your LiveKit agent so they’re used and displayed in simulation evaluations.session.start(), capture the trace ID from the active span:
Linking data to simulation results
POST trace IDs and tool calls at shutdown viactx.add_shutdown_callback():