Browser Profiles
Why Browser Profiles?
Browser Profiles capture the full browser state (cookies, storage, session files) after a run completes so that future runs can skip the login or warm-up steps. They are ideal when you:
- Need repeatable workflows that stay logged into the same account across days.
- Want to fan out multiple workflows that all reuse the same authenticated browser state.
- Need an audit-friendly way to persist state separate from long-lived browser sessions.
Whereas a browser session is a temporary, real-time browser, a browser profile is a reusable snapshot created from that session (or from a workflow run that persisted its session). Profiles are scoped to your organization and can be reused as often as you need.
How Browser Profiles Work
- Run a workflow with
persist_browser_session: trueor open a persistent browser session. - Close the workflow run or browser session so Skyvern can upload the archived state.
- Create a browser profile from that source once the upload finishes.
- Pass
browser_profile_idto subsequent workflow runs to restore the saved state instantly.
Option A — Create a Profile from a Workflow Run
Use this approach when you already ran a workflow with persist_browser_session: true. Always poll the run (e.g., GET /v1/runs/{run_id}) until it reaches status = "completed" before attempting to create the profile—Skyvern only begins uploading the archived browser state once the run finishes.
Important: Wait for Session Upload
Session persistence finishes asynchronously. Calling create_browser_profile immediately after completion usually returns a 400 such as:
Browser session does not have a persisted session
Add a short retry loop until the archive is ready:
Option B — Create a Profile from a Browser Session
If you opened a persistent browser session directly (without a workflow), close it and then create a profile using the session ID:
Use a Browser Profile in New Workflow Runs
Once a profile exists, pass its ID when running workflows. Skyvern restores the saved cookies, storage, and local files before the first step runs, so the workflow behaves as if it never logged out.
If the workflow also sets persist_browser_session: true, you can capture a fresh profile again at the end and keep the cycle going.

