Control a remote Chrome browser in Kubernetes via HTTP API. Use for web automation, scraping, form filling, navigation, and page inspection. Exposes accessib...
Browser control for AI agents via HTTP API. Workflow: navigate, snapshot, act.
Ensure you have an active session:
POST /api/sessions (HTTP, no WebSocket), or open WebSocket to /ws/{session_id} (DevTools CDP), or run from UIGET /api/stored-sessionsAuthorization: Bearer <token> or X-API-Key, or ?access_token=<token>Base URL: https://rb.all-completed.com (or RBS_BASE_URL). Replace {session_id} in examples. User ID is derived from the token.
GET .../jsonRefs (e0, e1, …) from /json can be used with /action via selector (use ref as selector for e5 → "e5" maps to role/name; for now use CSS selector).
curl -X POST "https://rb.all-completed.com/api/sessions" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{}'
# Optional body: {"session_id": "my-session"}
Sessions idle for 5 min are closed. Use POST .../ping to keep alive.
curl "https://rb.all-completed.com/api/sessions" \
-H "Authorization: Bearer <token>"
curl "https://rb.all-completed.com/api/stored-sessions" \
-H "Authorization: Bearer <token>"
Returns {sessions: [...], count}. Connect via WebSocket to /ws/{session_id} to resume.
curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/navigate" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com"}'
# With timeout (seconds)
curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/navigate" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "timeout": 60}'
# Full tree
curl "https://rb.all-completed.com/api/sessions/{session_id}/json" \
-H "Authorization: Bearer <token>"
# Interactive elements only (buttons, links, inputs) — much smaller
curl "https://rb.all-completed.com/api/sessions/{session_id}/json?filter=interactive" \
-H "Authorization: Bearer <token>"
# Limit depth
curl "https://rb.all-completed.com/api/sessions/{session_id}/json?depth=5" \
-H "Authorization: Bearer <token>"
Returns {nodes: [{ref, role, name, depth, value?, disabled?, focused?, nodeId?}], count}.
# Readability mode (default) — strips nav/footer/ads
curl "https://rb.all-completed.com/api/sessions/{session_id}/text" \
-H "Authorization: Bearer <token>"
# Raw innerText
curl "https://rb.all-completed.com/api/sessions/{session_id}/text?mode=raw" \
-H "Authorization: Bearer <token>"
Returns {url, title, text}. Cheapest option (~800 tokens for most pages).
# JSON with base64
curl "https://rb.all-completed.com/api/sessions/{session_id}/screenshot" \
-H "Authorization: Bearer <token>"
# Raw JPEG bytes
curl "https://rb.all-completed.com/api/sessions/{session_id}/screenshot?raw=true" \
-H "Authorization: Bearer <token>" \
-o screenshot.jpg
# With quality (1-100)
curl "https://rb.all-completed.com/api/sessions/{session_id}/screenshot?quality=50&raw=true" \
-H "Authorization: Bearer <token>" \
-o screenshot.jpg
# Click by selector
curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/action" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"kind": "click", "selector": "button.submit"}'
# Type into element (focus + insertText)
curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/action" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"kind": "type", "selector": "#email", "text": "user@example.com"}'
# Fill (set value directly)
curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/action" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"kind": "fill", "selector": "#email", "text": "user@example.com"}'
# Press a key
curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/action" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"kind": "press", "key": "Enter"}'
# Focus, hover, select, scroll
curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/action" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"kind": "focus", "selector": "input[name=search]"}'
curl -X POST "https://rb.all-completed.com/api/sessions/{session_id}/action" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"kind": "scroll", "scrollY": 800}'
Action kinds: click, type, fill, press, focus, hover, select, scroll. Use selector (CSS) or ref (from snapshot). For press use key (e.g. Enter, Tab).
# Full DOM with inlined CSS (opens in browser)
curl "https://rb.all-completed.com/api/sessions/{session_id}/html" \
-H "Authorization: Bearer <token>"
| Method | Typical tokens | When to use |
|---|---|---|
/text | ~800 | Reading page content |
/json?filter=interactive | ~3,600 | Finding buttons/links to click |
/json | ~10,500 | Full page structure |
/screenshot | ~2K (vision) | Visual verification |
Strategy: Use /text when you only need content. Use /json?filter=interactive for action-oriented tasks. Use full /json for complete page understanding. Use /screenshot for visual checks.
| Var | Description |
|---|---|
RBS_BASE_URL | Base URL (e.g. https://rb.all-completed.com) |
AC_API_KEY | Bearer token or API key (user_id derived from token) |
POST /api/sessions (HTTP), WebSocket, or restore from stored sessions.selector with the ref string (e.g. "e5") when the action API supports ref→DOM resolution; otherwise prefer CSS selectors./text (default) strips nav/footer/ads; ?mode=raw returns full innerText.?filter=interactive on /json reduces nodes by ~75% for action tasks.GET /api/stored-sessions, then connect via WebSocket to resume.ZIP package — ready to use