Session Recording API
Control session recording programmatically with these methods.
Starting Recording
TraceScout.startSessionRecording()
Start recording user interactions.
const session = TraceScout.startSessionRecording({
maskAllInputs: false,
blockClass: 'sensitive-data'
});
console.log(session);
// {
// sessionId: "ts_1234567890_abc123",
// startTime: 1234567890123,
// status: "recording",
// stop: Function
// }
Options
| Option | Type | Description |
|--------|------|-------------|
| maskAllInputs | boolean | Override global input masking |
| blockClass | string | Override block class |
Return Value
| Property | Type | Description |
|----------|------|-------------|
| sessionId | string | Unique session identifier |
| startTime | number | Recording start timestamp |
| status | string | Current status: 'recording' |
| stop | function | Stop this recording |
Stopping Recording
TraceScout.stopSessionRecording()
Stop the current recording and get session summary.
const result = TraceScout.stopSessionRecording();
console.log(result);
// {
// sessionId: "ts_1234567890_abc123",
// startTime: 1234567890123,
// duration: 45000,
// totalEvents: 156,
// events: [...],
// status: "stopped"
// }
Return Value
| Property | Type | Description |
|----------|------|-------------|
| sessionId | string | Session identifier |
| startTime | number | Recording start timestamp |
| duration | number | Duration in milliseconds |
| totalEvents | number | Total events recorded |
| events | array | All recorded events |
| status | string | Current status: 'stopped' |
Recording Status
TraceScout.getSessionRecordingStatus()
Get the current recording status.
const status = TraceScout.getSessionRecordingStatus();
console.log(status);
// {
// available: true,
// isRecording: true,
// sessionId: "ts_1234567890_abc123",
// eventCount: 45,
// startTime: 1234567890123
// }
Exporting Sessions
TraceScout.exportSessionData()
Export session data in various formats.
// As JSON string (default)
const jsonData = TraceScout.exportSessionData('json');
// As JavaScript object
const objectData = TraceScout.exportSessionData('object');
// As downloadable Blob
const blob = TraceScout.exportSessionData('blob');
TraceScout.exportChunkedSessionData()
Export chunked session data (production mode).
const chunkedData = TraceScout.exportChunkedSessionData('json');
// {
// sessionId: "ts_1234567890_abc123",
// startTime: 1234567890123,
// chunks: [
// {
// chunkId: "ts_1234567890_abc123_chunk_0",
// chunkIndex: 0,
// events: [...],
// eventCount: 25,
// startTime: 1234567890123,
// endTime: 1234567890456,
// size: 45678
// }
// ],
// totalChunks: 3,
// totalEvents: 156
// }
Chunk Management
TraceScout.getSessionChunks()
Get all chunks from the current session.
const chunks = TraceScout.getSessionChunks();
console.log(`Total chunks: ${chunks.length}`);
TraceScout.flushCurrentChunk()
Manually flush the current chunk (uploads immediately).
TraceScout.flushCurrentChunk();
Upload Queue
TraceScout.getUploadQueueStats()
Get upload queue statistics.
const stats = TraceScout.getUploadQueueStats();
// {
// totalUploaded: 15,
// totalFailed: 2,
// totalBytes: 2048576,
// averageUploadTime: 1250,
// lastUploadTime: 1234567890456,
// queueSize: 3,
// failedQueueSize: 0,
// isOnline: true,
// isUploading: false
// }
TraceScout.pauseUploads() / TraceScout.resumeUploads()
Control upload queue processing.
// Pause during low bandwidth
TraceScout.pauseUploads();
// Resume when ready
TraceScout.resumeUploads();
TraceScout.clearUploadQueue()
Clear all pending uploads.
const clearedCount = TraceScout.clearUploadQueue();
console.log(`Cleared ${clearedCount} pending uploads`);
Storage Management
TraceScout.getSessionStorageStats()
Get local storage statistics.
const storageStats = TraceScout.getSessionStorageStats();
// {
// totalSize: 25165824, // 24MB
// sessionCount: 5,
// totalEvents: 1250,
// totalChunks: 45,
// maxStorageSize: 104857600, // 100MB
// maxSessions: 20,
// storageUsagePercent: 24
// }
TraceScout.getStoredSessions()
Get all locally stored sessions.
const sessions = TraceScout.getStoredSessions();
TraceScout.clearSessionStorage()
Clear all local session storage.
TraceScout.clearSessionStorage();
Custom Events
TraceScout.addCustomEvent()
Add a custom event to the session recording.
TraceScout.addCustomEvent('user_action', {
action: 'button_click',
buttonId: 'submit-form',
page: '/checkout'
});
This creates a type 5 (custom) event in the recording:
{
type: 5,
data: {
tag: 'user_action',
payload: {
action: 'button_click',
buttonId: 'submit-form',
page: '/checkout'
}
},
timestamp: 1234567890123
}
Example: Manual Recording Control
// Initialize without auto-start
TraceScout.init({
apiKey: 'ts_api_xxx',
organizationId: 'xxx',
projectId: 'xxx',
environment: 'production',
autoStartRecording: false
});
// Start recording on user action
document.getElementById('start-btn').addEventListener('click', () => {
TraceScout.startSessionRecording();
});
// Stop and export on another action
document.getElementById('stop-btn').addEventListener('click', async () => {
const session = TraceScout.stopSessionRecording();
console.log(`Recorded ${session.totalEvents} events`);
// Export and send to your server
const data = TraceScout.exportSessionData('json');
await fetch('/api/sessions', {
method: 'POST',
body: data
});
});