@roveapi/browser
Browser automation SDK for AI agents. Wraps the Rove API — Playwright-as-a-Service with accessibility trees for 77% fewer tokens.
Install
npm install @roveapi/browser
Quickstart
import { BrowserClient } from '@roveapi/browser'
const client = new BrowserClient({ apiKey: 'rvp_live_...' })
const screenshot = await client.screenshot({ url: 'https://example.com' })
console.log(screenshot.url)
const session = await client.session()
await session.navigate('https://example.com')
const tree = await session.getA11yTree()
console.log(tree.result.tree)
await session.click({ label: 'Get Started' })
await session.fill({ selector: '#email', value: 'user@example.com' })
await session.close()
Error Handling
import { BrowserClient, InsufficientCreditsError, RateLimitError } from '@roveapi/browser'
try {
const session = await client.session()
} catch (err) {
if (err instanceof InsufficientCreditsError) {
console.log('Top up credits at roveapi.com')
}
if (err instanceof RateLimitError) {
console.log(`Retry after ${err.retryAfter} seconds`)
}
}
API
BrowserClient
new BrowserClient({ apiKey, baseUrl?, retries?, retryDelay? })
client.session(options?) → Session
client.screenshot({ url, selector?, fullPage?, format? }) → ScreenshotResponse
client.extract({ url, schema, waitForSelector? }) → ExtractResponse
client.usage() → UsageResponse
Session
session.navigate(url, options?) — load URL, return title + status
session.getA11yTree(options?) — accessibility tree (primary tool for LLMs)
session.click({ selector?, label? }) — click element
session.fill({ selector?, label?, value }) — type into input
session.select({ selector?, value? }) — select dropdown option
session.scroll({ direction?, amount? }) — scroll page
session.waitFor({ type, value }) — wait for condition
session.screenshot({ fullPage?, format? }) — capture page
session.getText(selector) — extract text
session.getAttribute(selector, attribute) — get attribute
session.evaluate(expression) — run JavaScript
session.close() — close session, finalize artifacts
Auto-retry on 503 (pool exhausted, browser crash) with exponential backoff. No retry on 402 (insufficient credits) or 410 (session expired).