Skip to main content
The agent can need something from you at two points: before the demo starts, when your task is unclear, and while it records, when it reaches a sign-in page or a verification code.

Before the demo: questions about the task

POST /demos/check and POST /demos read your task first. If something is unclear, you get the questions instead of a demo:
  • /demos/check answers 200 with status: "needs_answers".
  • /demos answers 422 with the error code needs_answers, and the same result in error.details.
Send the same request again with the check_id and your answers. A check_id is valid for 1 hour.
Send site_login: { "username", "password" } with the request if the demo needs one. It’s encrypted on arrival, used only by the agent, never logged and never returned. A login question can also be answered with the choice later: the agent then asks for the login when it reaches the sign-in page.

While recording: logins and codes

If the agent reaches a sign-in page without a login, or the site sends a verification code, the demo pauses:
  • status becomes input_required;
  • you get a demo.input_required webhook;
  • the demo has an input_request:
Each request asks for one value. For a login, the agent may ask for the username and then the password, one after the other.

Answer it

From your code

POST /demos/{id}/input-requests/{request_id}/answer with {"value": "..."}. Works for every kind.

From a person

Send someone the answer_url. It opens the demo in the app with the question ready to answer.
Answers are single use. A request that isn’t answered by expires_at expires: the agent carries on without the answer if it can, and otherwise the demo fails with a message saying what was missing.
AI assistants never accept logins or codes. Over MCP, the assistant gives the person the answer_url instead, so a password never goes through a chat.