Endpoint
Authentication
No authentication required. All endpoints useuserId for session isolation.
Path parameters
The unique identifier of the tab
Body parameters
User identifier for session isolation
Element reference from snapshot (e.g.,
e1, e2). Either ref or selector is required.CSS selector for the target element. Either
ref or selector is required.Maximum time in milliseconds to wait for the element to become clickable
Response
Always
true on successThe URL after the click (may differ if navigation occurred)
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