Skip to main content

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

name
string
required
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.