Skip to main content
POST
Ask using the user's browser

Requires a connected browser

Runs an agent turn against the caller’s own local browser using the computer_* tools — the only entry point where those tools are enabled. It runs synchronously and returns the reply directly (no event stream).
The user’s browser extension must already hold a live WebSocket connection. With no connected browser this returns 403 instead of running a turn that couldn’t do anything.
Pass conversation_id to continue a thread; omit it on the first ask to create one. Store the returned conversation_id and send it back on the next ask — the same pattern as the normal turn endpoints.

Authorizations

Authorization
string
header
required

Personal Access Token. Send as Authorization: Bearer hq_pat_....

Body

application/json
text
string
required

The user's request (e.g. "what is this page" / "fill in my name").

conversation_id
string<uuid> | null

The conversation the user is viewing. The browser ask runs in THIS thread (per-thread browser session), so a new thread = a fresh agent session - no inherited stuck-session state. Omit only for legacy clients, which fall back to a deprecated stable per-user thread.

Response

The agent's reply, run against the caller's connected local browser (computer_* tools + browser prompt)

conversation_id
string
required

The conversation the ask ran in. The client stores this and sends it back as conversation_id on the next ask - exactly like the normal / fast turn endpoints. (First ask with no id creates the thread.)

reply
string
required

The agent's reply text.