@roveapi/browser
v1.1.1
Published
Browser automation SDK for AI agents — Playwright-as-a-Service with accessibility trees
Downloads
71
Maintainers
Readme
@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/browserQuickstart
import { BrowserClient } from '@roveapi/browser'
const client = new BrowserClient({ apiKey: 'rvp_live_...' })
// One-shot screenshot
const screenshot = await client.screenshot({ url: 'https://example.com' })
console.log(screenshot.url) // signed S3 URL
// Session-based workflow
const session = await client.session()
await session.navigate('https://example.com')
const tree = await session.getA11yTree()
console.log(tree.result.tree) // accessibility tree (~26K tokens vs ~114K for screenshot)
await session.click({ label: 'Get Started' })
await session.fill({ selector: '#email', value: '[email protected]' })
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?)→Sessionclient.screenshot({ url, selector?, fullPage?, format? })→ScreenshotResponseclient.extract({ url, schema, waitForSelector? })→ExtractResponseclient.usage()→UsageResponse
Session
session.navigate(url, options?)— load URL, return title + statussession.getA11yTree(options?)— accessibility tree (primary tool for LLMs)session.click({ selector?, label? })— click elementsession.fill({ selector?, label?, value })— type into inputsession.select({ selector?, value? })— select dropdown optionsession.scroll({ direction?, amount? })— scroll pagesession.waitFor({ type, value })— wait for conditionsession.screenshot({ fullPage?, format? })— capture pagesession.getText(selector)— extract textsession.getAttribute(selector, attribute)— get attributesession.evaluate(expression)— run JavaScriptsession.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).
