Overview
Browser profiles persist cookies, local storage, and session state between browser tasks. Create a profile once, then pass its profile_id to any browser task to reuse the logged-in state.
Authentication
All profile endpoints require X-Agent-ID header (wallet address). Profiles are scoped to your agent.
Create Profile
Human-readable profile name (1-100 characters).
curl -X POST https://win.oneshotagent.com/v1/tools/browser/profiles \
-H "Content-Type: application/json" \
-H "X-Agent-ID: 0xYourWalletAddress" \
-d '{"name": "my-github-bot"}'
{
"id": "prof_abc123",
"name": "my-github-bot"
}
List Profiles
Returns all profiles for your agent.
curl https://win.oneshotagent.com/v1/tools/browser/profiles \
-H "X-Agent-ID: 0xYourWalletAddress"
[
{ "id": "prof_abc123", "name": "my-github-bot" },
{ "id": "prof_def456", "name": "linkedin-scraper" }
]
Delete Profile
curl -X DELETE https://win.oneshotagent.com/v1/tools/browser/profiles/prof_abc123 \
-H "X-Agent-ID: 0xYourWalletAddress"
Using Profiles with Tasks
Pass profile_id to any browser task to reuse the profile’s session state:
// First task: log in (state saved to profile)
await agent.browser({
task: "Log in to github.com with the provided credentials",
profile_id: profile.id,
secrets: { "github.com": "user:token" },
});
// Second task: reuse the logged-in session
const result = await agent.browser({
task: "Go to github.com/notifications and list unread items",
profile_id: profile.id,
});
Combine profile_id with secrets for the first task to log in, then use just profile_id for subsequent tasks that reuse the session.