This feature is in preview. The API may change before general availability. To try it out, contact support@intunedhq.com and we’ll enable it for your workspace.
human_in_the_loop to ask a question and get a structured answer back, or hand_over_control_to_human to give an operator the live browser and let them finish the task themselves.
Both helpers call an endpoint on your system, which you register in Intuned.json. Intuned doesn’t provide the operator UI—you decide who gets asked and how.
Time spent waiting on a person does not count toward the attempt’s
request_timeout. The timeout you pass to these helpers is the only limit on the wait. See Human in the loop for the full request and callback contract.Available helpers
human_in_the_loop— Ask a person for data and wait for the answerhand_over_control_to_human— Hand the live browser to a person
Function reference
human_in_the_loop
data_schema.
Parameters
str
required
What you need from the person, in plain language. Shown to whoever handles the request.
type[BaseModel] | dict[str, Any]
required
The shape of the answer you expect. Sent to your endpoint as JSON Schema, and used to validate the callback payload before the automation resumes. Accepts a Pydantic model or a JSON Schema dictionary, like
extract_structured_data.int
default:"3600"
How long to wait for an answer, in seconds. After this, the call raises
HumanInTheLoopTimeoutError.list[SupportingMaterial] | None
Context to help the person answer—a screenshot of the page they’re deciding about, extracted text, or a link. See
SupportingMaterial.dict[str, Any] | None
Arbitrary JSON passed through to your endpoint untouched. Use it to route the request to the right queue, team, or end user.
dict.
Raises
HumanInTheLoopTimeoutError— No valid answer arrived withintimeout.NonRetryableError— No human-in-the-loop endpoint is configured for the project.
hand_over_control_to_human
- The project must run in headful mode (
"headful": trueinIntuned.json). There’s no browser to stream otherwise. - A
handoffEndpointmust be configured. See Configure your endpoints.
str
required
What the person needs to do once they take over. Shown alongside the stream.
int
default:"3600"
How long the session stays open, in seconds. The remaining time is shown to the person in the stream UI. When it expires, the stream closes and the call raises
HumanInTheLoopTimeoutError.list[SupportingMaterial] | None
Context to show next to the stream. See
SupportingMaterial.dict[str, Any] | None
Arbitrary JSON passed through to your endpoint untouched.
None when the person selects Complete.
Raises
HumanInTheLoopTimeoutError— The person didn’t complete the session withintimeout.NonRetryableError— No handoff endpoint is configured, or the project isn’t running in headful mode.
SupportingMaterial
TextMaterial— Plain text. Use it for extracted values, a page excerpt, or an explanation of why the automation stopped.ImageUrlMaterial— An image at a URL your endpoint can fetch.ImageBufferMaterial— An image as rawbytes. Buffers are uploaded by the runtime and delivered to your endpoint as short-lived signed URLs, so apage.screenshot()result can be passed straight through.
Related
- Human in the loop — Endpoint configuration, request payloads, and the callback contract.
- Intuned.json reference —
humanInTheLoopproject configuration. - Pause tracing — Keep credentials out of traces during a handoff.
- Non-retryable errors — Stop a Run instead of asking a person twice.