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 GET /sessions/{session_id}/network/logs or CDP)
  • Console logs (use logging)
Recording starts when the session is created, so the video also covers the time before your first action.

Storage

Recordings are:
  • Stored on Notte’s servers after the session ends
  • Available once the session is closed (session.replay() waits for the video to be ready)
  • Accessed via the mp4_url (and optional HLS playlist) returned by session.replay() / GET /sessions/{session_id}/replay
  • Downloadable as MP4 via replay.download() or by fetching mp4_url
Presigned URLs expire 1 hour after they are issued. Check expires_at (or replay.expires_at in the SDK), and call session.replay() again to get fresh URLs.

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