Skip to main content
GET
/
v1
/
sessions
/
{id}
/
events
List Events
curl --request GET \
  --url https://api.bctrl.ai/v1/sessions/{id}/events \
  --header 'Authorization: Bearer <token>'
{
  "events": [
    {
      "id": "<string>",
      "sessionId": "<string>",
      "sessionType": "<string>",
      "eventType": "<string>",
      "eventData": {},
      "createdAt": "<string>"
    }
  ],
  "nextCursor": {}
}
id
string
required
Session ID.
limit
string
Maximum number of events to return.
after
string
Cursor for pagination. Format: &lt;ISO-8601 timestamp>|&lt;event-id>.
eventTypes
string | string[]
Filter by event type(s). Comma-separated or repeated param.
Only Playwright sessions support event type filtering. For other drivers, eventTypes must be omitted or the request will return a 400 with EVENT_UNSUPPORTED.

Examples

// The SDK consumes events via page.on() internally,
// but you can also poll the REST endpoint directly.
const response = await fetch(
  `https://api.bctrl.ai/v1/sessions/${sessionId}/events?limit=50`,
  { headers: { Authorization: `Bearer ${apiKey}` } }
);
const { events, nextCursor } = await response.json();

Response

events
array
required
Array of session event objects.
nextCursor
string | null
required
Cursor for the next page, or null if no more results.
Response Example
{
  "events": [
    {
      "id": "evt_1",
      "sessionId": "sess_abc123",
      "sessionType": "browser",
      "eventType": "page.navigated",
      "eventData": {
        "url": "https://example.com",
        "pageId": "page_1"
      },
      "createdAt": "2025-01-15T10:00:01Z"
    },
    {
      "id": "evt_2",
      "sessionId": "sess_abc123",
      "sessionType": "browser",
      "eventType": "console",
      "eventData": {
        "type": "log",
        "text": "Hello world"
      },
      "createdAt": "2025-01-15T10:00:02Z"
    }
  ],
  "nextCursor": "2025-01-15T10:00:02Z|evt_2"
}