Endpoint
Authentication
No authentication required. All endpoints useuserId for session isolation.
Path parameters
string
required
The unique identifier of the tab
Body parameters
string
required
User identifier for session isolation
string
Element reference from snapshot (e.g.,
e1, e2). Either ref or selector is required.string
CSS selector for the target element. Either
ref or selector is required.integer
default:"5000"
Maximum time in milliseconds to wait for the element to become clickable
Response
boolean
Always
true on successstring
The URL after the click (may differ if navigation occurred)
boolean
Whether element references were successfully rebuilt after the click
Click behavior
The endpoint implements a three-tier fallback strategy to handle stubborn elements:- Normal click: Respects visibility, enabled state, and obscuration checks
- Force click: If intercepted by overlay (e.g., consent dialog), retries with force flag
- Mouse sequence: If click fails, dispatches full mouse event sequence:
mouseover→mouseenter→mousedown→mouseup→click
- Waits 500ms for UI updates
- Rebuilds element references
- Updates the current URL
Element reference handling
When usingref parameter:
- If refs are stale (empty), they’re automatically refreshed before the click
- Duplicate role+name combinations are disambiguated using
.nth()based on document order - Refs reset after navigation - call
/snapshotfirst to get fresh refs
Error codes
400- Missing required parameter (userId, or bothrefandselector)404- Tab not found500- Click failed (element not found, timeout, unknown ref)
Error messages
- Unknown ref:
Unknown ref: e99 (valid refs: e1-e50, 50 total). Refs reset after navigation - call snapshot first. - Element not found:
Element not visible (no bounding box) - Timeout:
Timeout 5000ms exceeded
Examples
Click by reference
Click by CSS selector
Click with custom timeout
Error: Unknown ref
Tab locking
Click operations are serialized per tab to prevent race conditions. If another operation is in progress, the request will wait up to 30 seconds before proceeding.Best practices
- Always call
/snapshotafter navigation to refresh element refs - Use
ref(notselector) when possible - refs are more stable and semantic - For dynamically loaded content, increase the
timeoutvalue - Check
refsAvailablein the response - iffalse, call/snapshotbefore next interaction