Create, set up, and use Browser Context Profiles from the Agent API
Use the Browser Context Profiles API to create persistent browser state, set it up once, and reuse it in future
Agent API runs. The happy path is simple: create a profile, save a logged-in setup session, then pass
use_profile: true when you run automation.
Browser Context Profiles are API-controlled saved state. The hosted setup UI is a manual helper; API
users should bring their own Playwright, Puppeteer, or CDP controller and connect to the setup session’s
cdp_url. Use base_url only for TinyFish HTTP session endpoints such as /pages; do not pass
base_url to Playwright.
1
Create or list profiles
Create a named Browser Context Profile with /v1/profiles, or list existing profiles and choose one.
2
Start setup
Call POST /v1/profiles/{profileId}/setup-session and keep the returned session_id,
cdp_url, base_url, timeout_seconds, and expires_at.
3
Connect and log in
Connect your browser automation framework to cdp_url, then log in manually or programmatically.
4
Save or discard
Save with POST /v1/profiles/{profileId}/save and { "session_id": "..." }. Cancelling
setup or letting it time out discards unsaved setup state.
5
Run with saved state
Pass use_profile: true, or pass both use_profile: true and profile_id for a specific
profile.
Connect to cdp_url with Playwright, Puppeteer, Selenium, or another CDP client. For example,
with Playwright:
import { chromium } from "playwright";const CDP_URL = "<cdp_url from setup-session response>";const browser = await chromium.connectOverCDP(CDP_URL);const page = browser.contexts()[0].pages()[0];await page.goto("https://app.example.com/login");// Automate the login form here, or use your own CDP tooling to complete login.
The setup browser is temporary. If you do not save it before expires_at, or if you cancel it, TinyFish
discards the unsaved setup state. Cancel explicitly when you know you do not want to save:
For authenticated workflows, pair Browser Context Profiles with Vault so stale sessions can be repaired:
{ "url": "https://app.example.com/dashboard", "goal": "Check the dashboard and summarize anything urgent", "use_profile": true, "use_vault": true}
The Browser Context Profile starts the run with saved logged-in state. If the session expires and a matching
Vault credential is available, TinyFish can use the credential to sign in again and repair the saved
state for future runs.