Skip to main content
A simulation runs your real interview (welcome, screening, questions or flow) with an AI playing the participant. Use simulations to read transcripts, test branches and catch confusing questions before anyone real takes part. Simulated interviews are kept separate from real ones: lists, transcripts and search leave them out unless you ask for them.

Personas

A persona is a third-person brief describing who the simulated participant is, as if you were briefing an actor.
Editing a persona with personas.update only affects future runs. Deleting one keeps the interviews it already produced.

Run a simulation

run returns immediately. The interview continues in the background.
Pass persona= with ad-hoc text instead of persona_id for a one-off, or omit both for a generic participant. Credits are reserved up front. A run that would exceed your balance raises InsufficientCreditsError, and a model_tier your plan doesn’t include raises PermissionDeniedError.

Wait for it to finish

Poll until status is completed or failed:
Rather than polling, you can subscribe to the simulation.completed webhook.

Run several at once

Kick off one run per persona, then wait for all of them:
Or list them with a status filter:

Signals during simulations

If your interview flow has “Send a signal” steps, simulations don’t deliver them to the real endpoints by default. Pass deliver_signals=True to send them. They arrive with event.simulated == True, so your receiver can tell them apart.

Including simulations in results

Deleting a simulation record with simulations.delete keeps the interview it produced.