Skip to main content
Read the Notte skill and follow its setup instructions when setting up Notte or building browser automation. This is the shared source for CLI setup, authentication, and the browser-to-code workflow.
Notte automatically records every action in your browser sessions, allowing you to download video replays for debugging and analysis. Calling session.replay() (or GET /sessions/{session_id}/replay) returns a ReplayResponse with mp4_url — a presigned URL for the MP4 file. Use that URL directly, or download with replay.download().

Quick Start

Get a recording after your session ends:
quick_start.py

What Gets Recorded

Session recordings capture:
  • Page navigation - All page loads and URL changes
  • User interactions - Clicks, fills, scrolls, key presses
  • DOM changes - Dynamic content updates
  • Visual state - What the browser displays
  • Timing - Real-time playback speed

Session Replays

Download as MP4

download_mp4.py

Replay response (mp4_url)

The replay endpoint returns JSON. The field you usually want is mp4_url: REST example:
Full API reference: Session Replay.

Replay by Session ID

Get a replay for any session using its ID:
replay_by_id.py

Agent Replays

After running an agent, get the replay from the session:
agent_replay.py
agent_replay_alt.py

Debugging Failed Runs

Use recordings to understand what went wrong:
debug_failed.py

Best Practices

1. Name Recordings Meaningfully

Use descriptive filenames:
name_recordings.py

2. Record Only on Failures

For production, save recordings only when something goes wrong:
record_on_failures.py

3. Clean Up Old Recordings

Remove old recordings to save disk space:
cleanup_old.py

Recording Limitations

What’s Recorded

  • All page interactions
  • Visual state changes
  • Navigation and reloads
  • Dynamic content

What’s NOT Recorded

  • Audio
  • Network request details (use CDP for this)
  • Console logs (use logging)
  • Session state before first action

Storage

Recordings are:
  • Stored on Notte’s servers after the session ends
  • Accessed via the mp4_url (and optional HLS playlist) returned by session.replay() / GET /sessions/{session_id}/replay
  • Retained for 24 hours
  • Downloadable as MP4 via replay.download() or by fetching mp4_url
Recordings are deleted after 24 hours. Download them promptly if needed for later analysis. Presigned URLs also expire — check expires_at (or replay.expires_at in the SDK) for the expiration time.

Next Steps

Live View

Watch sessions in real-time

Session Lifecycle

Understand session management

Playwright

Connect with Playwright via CDP

File Storage

Upload and download files in sessions