Session Recordings

Capture detailed recordings of your browser sessions for debugging, compliance, and monitoring.

Recording Types

Type Format Size Use Case
HAR .har (JSON) ~1MB/min Network debugging, performance analysis
Screenshots .png ~200KB each Visual validation, diff testing
Video .webm ~5MB/min Full replay, bug reproduction

Enable Recording

const session = await sk.sessions.create({
  stealth: 'max',
  recording: {
    har: true,
    screenshots: true,
    video: true,
  },
})

Retrieve Recordings

After destroying a session, recordings are available for 24 hours:

// Destroy session and get recording URLs
const result = await sk.sessions.destroy(session.id)

console.log(result.recordings)
// {
//   har: 'https://recordings.sessionkit.dev/sess_abc/network.har',
//   screenshots: ['https://.../.../0001.png', '...'],
//   video: 'https://recordings.sessionkit.dev/sess_abc/recording.webm',
// }

Screenshot Triggers

Configure when screenshots are automatically captured:

const session = await sk.sessions.create({
  recording: {
    screenshots: true,
    screenshotTriggers: [
      'navigation',    // On every page navigation
      'network-idle',  // When network becomes idle
      'interval:5s',   // Every 5 seconds
    ],
  },
})

Manual Screenshots

Take screenshots on demand via the API:

const screenshot = await sk.pages.screenshot(session.id, {
  fullPage: true,
  format: 'png',
  quality: 90,
})

// Returns a base64-encoded image or URL
console.log(screenshot.url)

HAR Analysis

HAR files capture all network requests and responses:

const har = await sk.sessions.getHar(session.id)

// Analyze requests
for (const entry of har.log.entries) {
  console.log(`${entry.request.method} ${entry.request.url}${entry.response.status}`)
}

Storage & Retention

Plan Retention Storage per Session
Free 1 hour 50 MB
Pro 24 hours 500 MB
Scale 7 days 2 GB
Enterprise 30 days Unlimited