Resume from cursor. Events after this point will be backfilled then streamed live.
Filter by event type(s). Comma-separated or repeated param.
The stream sends a :heartbeat comment every 15 seconds. Supported event types for Playwright: console, page.crash, page.dialog, page.domcontentloaded, page.download, page.filechooser, page.frame_attached, page.frame_detached, page.navigated, page.load, page.popup, page.request, page.error, page.request_failed, page.request_finished, page.response, page.websocket, page.worker, page.closed, context.page_created, context.closed.
Examples
// The SDK uses this endpoint internally to power page.on().
// You typically don't call it directly — just use event listeners:
import { Bctrl } from '@bctrl/sdk';
const bctrl = new Bctrl({ apiKey: process.env.BCTRL_API_KEY! });
const pw = await bctrl.session.playwright();
pw.page.on('console', (msg) => {
console.log(`[${msg.type()}] ${msg.text()}`);
});
pw.page.on('request', (req) => {
console.log('Request:', req.url());
});
await pw.page.goto('https://example.com');
Response
Sent immediately on connection with { sessionId, cursor, eventTypes }.
Emitted for each matching event with { sessionId, cursor, event }.
event: connected
data: {"sessionId":"sess_abc123","cursor":null,"eventTypes":null}
event: session.event
data: {"sessionId":"sess_abc123","cursor":"2025-01-15T10:00:01Z|evt_1","event":{"id":"evt_1","sessionId":"sess_abc123","sessionType":"browser","eventType":"page.navigated","eventData":{"url":"https://example.com"},"createdAt":"2025-01-15T10:00:01Z"}}