---
title: "Create a browser profile"
method: POST
path: "/v1/browser_profiles"
tags: ["Browser Profiles"]
---

# Create a browser profile

`POST /v1/browser_profiles`

Create a blank browser profile, or create one from a persistent browser session or workflow run.

## Headers

- `x-api-key` string, nullable — Skyvern API key for authentication. API key can be found at https://app.skyvern.com/settings.

## Request body

- CreateBrowserProfileRequest
  - `name` string, required — Name for the browser profile
  - `description` string, nullable — Optional profile description
  - `browser_session_id` string, nullable — Persistent browser session to convert into a profile. Omit for a blank profile.
  - `workflow_run_id` string, nullable — Workflow run whose persisted session should be captured. Omit for a blank profile.
  - `proxy_location` union — Optional proxy location for this profile's pinned proxy identity.
    - 'RESIDENTIAL' | 'US-CA' | 'US-NY' | 'US-TX' | 'US-FL' | 'US-WA' | 'RESIDENTIAL_ES' | 'RESIDENTIAL_IE' | 'RESIDENTIAL_GB' | 'RESIDENTIAL_IN' | 'RESIDENTIAL_JP' | 'RESIDENTIAL_FR' | 'RESIDENTIAL_DE' | 'RESIDENTIAL_NZ' | 'RESIDENTIAL_ZA' | 'RESIDENTIAL_AR' | 'RESIDENTIAL_AU' | 'RESIDENTIAL_BR' | 'RESIDENTIAL_TR' | 'RESIDENTIAL_CA' | 'RESIDENTIAL_MX' | 'RESIDENTIAL_IT' | 'RESIDENTIAL_NL' | 'RESIDENTIAL_PH' | 'RESIDENTIAL_KR' | 'RESIDENTIAL_SA' | 'RESIDENTIAL_ISP' | 'NONE'
    - GeoTarget — Granular proxy geo-targeting request with country, optional subdivision, and optional city.
      - `country` string, required — ISO 3166-1 alpha-2 country code (e.g., 'US', 'GB', 'DE')
      - `subdivision` string, nullable — ISO 3166-2 subdivision code without country prefix (e.g., 'CA' for California, 'NY' for New York)
      - `city` string, nullable — City name in English from GeoNames (e.g., 'New York', 'Los Angeles', 'London')
    - object
  - `proxy_session_id` string, nullable — Explicit sticky-session id for this profile's pinned proxy identity.

## Response `200`

Successfully created browser profile

- BrowserProfile
  - `browser_profile_id` string, required
  - `organization_id` string, required
  - `name` string, required
  - `description` string, nullable
  - `source_browser_type` string, nullable
  - `proxy_location` union
    - 'RESIDENTIAL' | 'US-CA' | 'US-NY' | 'US-TX' | 'US-FL' | 'US-WA' | 'RESIDENTIAL_ES' | 'RESIDENTIAL_IE' | 'RESIDENTIAL_GB' | 'RESIDENTIAL_IN' | 'RESIDENTIAL_JP' | 'RESIDENTIAL_FR' | 'RESIDENTIAL_DE' | 'RESIDENTIAL_NZ' | 'RESIDENTIAL_ZA' | 'RESIDENTIAL_AR' | 'RESIDENTIAL_AU' | 'RESIDENTIAL_BR' | 'RESIDENTIAL_TR' | 'RESIDENTIAL_CA' | 'RESIDENTIAL_MX' | 'RESIDENTIAL_IT' | 'RESIDENTIAL_NL' | 'RESIDENTIAL_PH' | 'RESIDENTIAL_KR' | 'RESIDENTIAL_SA' | 'RESIDENTIAL_ISP' | 'NONE'
    - GeoTarget — Granular proxy geo-targeting request with country, optional subdivision, and optional city.
      - `country` string, required — ISO 3166-1 alpha-2 country code (e.g., 'US', 'GB', 'DE')
      - `subdivision` string, nullable — ISO 3166-2 subdivision code without country prefix (e.g., 'CA' for California, 'NY' for New York)
      - `city` string, nullable — City name in English from GeoNames (e.g., 'New York', 'Los Angeles', 'London')
    - object
  - `proxy_session_id` string, nullable
  - `is_managed` boolean
  - `workflow_permanent_id` string, nullable
  - `browser_profile_key_digest` string, nullable
  - `created_at` string, date-time, required
  - `modified_at` string, date-time, required
  - `deleted_at` string, date-time, nullable
  - `last_verified_login_at` string, date-time, nullable
  - `linked_credential_name` string, nullable

## Other responses

- `400` — Invalid request - source not found or source archive unavailable
- `409` — Browser profile name already exists
- `422` — Validation Error

---

[API](https://skmtc.net/skyvern-ai/apis/skyvern-api-2.md) · [All operations](https://skmtc.net/skyvern-ai/apis/skyvern-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/skyvern-ai/skyvern-api-2/versions/5116249dfff3/schema)
