---
title: "Create a new profile based on a selected fingerprint. Supply the required configuration in the request body, then receive the newly
created profile’s full details."
method: POST
path: "/profiles/new"
tags: ["Profile"]
---

# Create a new profile based on a selected fingerprint. Supply the required configuration in the request body, then receive the newly
created profile’s full details.

`POST /profiles/new`

## Request body

- CreateProfileRequest
  - `fingerprintId` string, nullable — The unique identifier of the fingerprint. This references the fingerprint which should be used to build the new profile. If not provided, a fingerprint will be automatically selected using the recommended fingerprint search defaults, see: https://developer.kameleo.io/tutorials/filtering-fingerprints/
  - `name` string, nullable — Sets a human-readable name for the profile, which is modifiable at any time.
  - `folderId` string, uuid, nullable — Id of the folder the profile should be created in. If null or empty (00000000-0000-0000-0000-000000000000) the profile will be created in root.
  - `tags` string[], nullable — Use tags to categorize profiles by labeling them accordingly.
  - `canvas` 'intelligent' | 'noise' | 'block' | 'off' — Specifies how the canvas will be spoofed. Possible values: 'intelligent': Use intelligent canvas spoofing. This will result non-unique canvas fingerprints. 'noise': Add some noise to canvas generation. 'block': Completely block the 2D API. 'off': Turn off the spoofing, use the original settings.
  - `webgl` 'noise' | 'block' | 'off' — Specifies how the WebGL will be spoofed. Possible values: 'noise': Add some noise to the WebGL generation 'block': Completely block the 3D API 'off': Turn off the spoofing, use the original settings
  - `webglMeta` WebglMetaChoice
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the WebGL vendor and renderer will be spoofed. Possible values: 'automatic': The vendor and renderer values comes from the fingerprint. 'manual': Manually configure WebGL metadata. For optimal results, choose a video card model similar to your device's to ensure realistic profile masking. 'off': Turn off the spoofing, use the original settings
    - `extra` WebglMetaSpoofingOptions — When the WebGL Meta spoofing is used, these settings can override the values in the fingerprint.
      - `vendor` string, nullable — Unmasked vendor
      - `renderer` string, nullable — Unmasked renderer
  - `audio` 'off' | 'noise' | 'block' — Specifies how the audio will be spoofed. Possible values: 'noise': Add some noise to the Audio generation 'block': Completely block the Audio API 'off': Turn off the spoofing, use the original settings
  - `timezone` TimezoneChoice
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the timezone will be spoofed. Possble values: 'automatic': Timezone is automatically set by the IP 'manual': Timezone is manually overridden in the profile 'off': Turn off the spoofing, use the original settings
    - `extra` string, nullable — When the Timezone spoofing is set to manual the timezone in Iana format is required. For example: America/Grenada
  - `geolocation` GeolocationChoice
    - `value` 'automatic' | 'manual' | 'block' | 'off', required — Specifies how the geolocation will be spoofed. Possible values: 'automatic': Automatically set the values based on the IP address 'manual': Manually set the longitude and latitude in the profile 'block': Completely block the Geolocation API 'off': Turn off the spoofing, use the original settings
    - `extra` GeolocationSpoofingOptions — When the Geolocation spoofing is set to manual these extra settings will be used as well.
      - `latitude` number, float, required — From -90 to 90
      - `longitude` number, float, required — From -180 to 180
  - `proxy` ProxyChoice
    - `value` 'none' | 'http' | 'socks5' | 'ssh', required — Proxy connection settings of the profiles. Possible values: 'none': Direct connection without any proxy. 'http': Use a HTTP proxy for upstream communication. 'socks5': Use a SOCKS5 proxy for upstream communication. 'ssh': Use an SSH connection for upstream communication. Basically a SOCKS5 proxy created at the given SSH host.
    - `extra` Server — Represents a server connection. It can be used as a proxy server connection as well.
      - `host` string, required — Gets or sets the hostname where the service is provided from.
      - `port` integer, required — Gets or sets the port where the service is provided from.
      - `id` string, nullable — Gets or sets the identity information provided for the service. This could be a custom id or username or anything which identifies a resource on the remote service. Use it as a proxy username. This field is optional.
      - `secret` string, nullable — Gets or sets the shared secret between the client and the service provider. Use it as a proxy password. This field is optional.
  - `webRtc` WebRtcChoice
    - `value` 'automatic' | 'manual' | 'block' | 'off', required — Specifies how the WebRTC will be spoofed. Possible values: 'automatic': Automatically set the webRTC public IP by the IP 'manual': Manually override the webRTC public IP and private IP in the profile 'block': Block the WebRTC functionality 'off': Turn off the spoofing, use the original settings
    - `extra` WebRtcSpoofingOptions — When the WebRTC spoofing is set to manual these extra settings will be used as well.
      - `publicIp` string, required — The WebRTC public IP address of the machine.
  - `fonts` 'automatic' | 'off' — Specifies how the fonts will be spoofed. Possible values: 'automatic': Spoof fonts based on the browser fingerpint. 'off': Don't spoof fonts, use the real fonts of your machine.
  - `screen` ScreenChoice
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the screen will be spoofed. Possible values: 'automatic': Automatically override the screen resolution based on the fingerprint. 'manual': Manually override the screen resolution. 'off': Turn off the spoofing, use the original settings.
    - `extra` string, nullable — The screen size of the device in CSS pixels. CSS values correspond to bigger physical pixel values when scaled, so provide values accordingly. (Kameleo's default scaling is 1x for desktop and 2x for mobile profiles.) Examples for 1080p: 1920x1080 (desktop), 412x732 (mobile).
  - `hardwareConcurrency` HardwareConcurrencyChoice
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the hardwareConcurrency will be spoofed. Possible values: 'automatic': Automatically set the values based on the fingerprint. 'manual': Manually set the value in the profile. Valid values: 1, 2, 4, 8, 12, 16. 'off': Turn off the spoofing, use the original settings.
    - `extra` integer, nullable
  - `deviceMemory` DeviceMemoryChoice
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the deviceMemory will be spoofed. Possible values: 'automatic': Automatically set the values based on the fingerprint. 'manual': Manually set the value in the profile. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16, 32. 'off': Turn off the spoofing, use the original settings.
    - `extra` number, double, nullable
  - `language` string, nullable — A language or a comma-separated list of languages for the profile. ISO 639-1 language and optionally ISO 3166-1 region code.
  - `startPage` string, uri, nullable — This website will be opened in the browser when the profile launches.
  - `passwordManager` 'enabled' | 'disabled' — Defines whether the browser can save login credentials. Possible values are: 'enabled': Credential saving is allowed. 'disabled': Credential saving is blocked.
  - `extensions` string[], nullable — A list of abolute paths from where the profile should load extensions or addons when starting the browser. For chrome and edge use CRX3 format extensions. For firefox use signed xpi format addons.
  - `notes` string, nullable — A free text including any notes written by the user.
  - `storage` 'local' | 'cloud'

## Response `200`

OK.

- ProfileResponse
  - `id` string, uuid, required — A unique identifier of the profile
  - `name` string, required — Profile name property. The value obtained by file name for existing profiles. For new profiles the value is generated by a random name generator.
  - `tags` string[], required — Profile tags
  - `createdAt` string, date-time, required — Date when the profile was created.
  - `fingerprint` Fingerprint, required — Provides a full view of a fingerprint, which encapsulates real-world browser fingerprint configurations used to instantiate virtual browser profiles.
    - `version` string, required — The version of the fingerprint. As time passes new fingerprint versions will be introduced. It is recommended to use the latest one.
    - `id` string, required — The unique identifier of the fingerprint. You can use this as a reference to create a new profile from this fingerprint.
    - `userAgent` string, required — The user agent of the browser fingerprint.
    - `device` Device, required
      - `type` string, required — Type of the device. Possible values are: 'desktop', 'mobile'.
      - `name` string, nullable — Name of the device. This is only available for mobile profiles.
    - `os` Os, required
      - `family` string, required — Specifies the operating system family. Possible values are 'windows', 'macos', 'linux', 'android', 'ios'.
      - `version` string, required — The specific version of the OS. For example it helps you determine the exact version of the macOS.
      - `platform` string, required — The OS's platform, indicating the processor architecture (e.g., 64-bit, 32-bit)
    - `browser` Browser, required
      - `product` string, required — Product of the browser. Possible values are 'chrome', 'firefox', 'edge', 'safari'.
      - `major` integer, required — Major version of the browser.
      - `version` string, required — Exact version of the browser.
    - `webglMeta` WebglMeta, required
      - `vendor` string, required — The UnmaskedVendor field from WebGL context
      - `renderer` string, nullable — The UnmaskedRenderer field from WebGL context
    - `resolution` string, required — The screen size of the device in pixels.
    - `fonts` string[], required — A list of font types included in the profile.
  - `canvas` 'intelligent' | 'noise' | 'block' | 'off', required — Specifies how the canvas will be spoofed. Possible values: 'intelligent': Use intelligent canvas spoofing. This will result non-unique canvas fingerprints. 'noise': Add some noise to canvas generation. 'block': Completely block the 2D API. 'off': Turn off the spoofing, use the original settings.
  - `webgl` 'noise' | 'block' | 'off', required — Specifies how the WebGL will be spoofed. Possible values: 'noise': Add some noise to the WebGL generation 'block': Completely block the 3D API 'off': Turn off the spoofing, use the original settings
  - `webglMeta` WebglMetaChoice, required
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the WebGL vendor and renderer will be spoofed. Possible values: 'automatic': The vendor and renderer values comes from the fingerprint. 'manual': Manually configure WebGL metadata. For optimal results, choose a video card model similar to your device's to ensure realistic profile masking. 'off': Turn off the spoofing, use the original settings
    - `extra` WebglMetaSpoofingOptions — When the WebGL Meta spoofing is used, these settings can override the values in the fingerprint.
      - `vendor` string, nullable — Unmasked vendor
      - `renderer` string, nullable — Unmasked renderer
  - `audio` 'off' | 'noise' | 'block', required — Specifies how the audio will be spoofed. Possible values: 'noise': Add some noise to the Audio generation 'block': Completely block the Audio API 'off': Turn off the spoofing, use the original settings
  - `timezone` TimezoneChoice, required
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the timezone will be spoofed. Possble values: 'automatic': Timezone is automatically set by the IP 'manual': Timezone is manually overridden in the profile 'off': Turn off the spoofing, use the original settings
    - `extra` string, nullable — When the Timezone spoofing is set to manual the timezone in Iana format is required. For example: America/Grenada
  - `geolocation` GeolocationChoice, required
    - `value` 'automatic' | 'manual' | 'block' | 'off', required — Specifies how the geolocation will be spoofed. Possible values: 'automatic': Automatically set the values based on the IP address 'manual': Manually set the longitude and latitude in the profile 'block': Completely block the Geolocation API 'off': Turn off the spoofing, use the original settings
    - `extra` GeolocationSpoofingOptions — When the Geolocation spoofing is set to manual these extra settings will be used as well.
      - `latitude` number, float, required — From -90 to 90
      - `longitude` number, float, required — From -180 to 180
  - `proxy` ProxyChoice, required
    - `value` 'none' | 'http' | 'socks5' | 'ssh', required — Proxy connection settings of the profiles. Possible values: 'none': Direct connection without any proxy. 'http': Use a HTTP proxy for upstream communication. 'socks5': Use a SOCKS5 proxy for upstream communication. 'ssh': Use an SSH connection for upstream communication. Basically a SOCKS5 proxy created at the given SSH host.
    - `extra` Server — Represents a server connection. It can be used as a proxy server connection as well.
      - `host` string, required — Gets or sets the hostname where the service is provided from.
      - `port` integer, required — Gets or sets the port where the service is provided from.
      - `id` string, nullable — Gets or sets the identity information provided for the service. This could be a custom id or username or anything which identifies a resource on the remote service. Use it as a proxy username. This field is optional.
      - `secret` string, nullable — Gets or sets the shared secret between the client and the service provider. Use it as a proxy password. This field is optional.
  - `webRtc` WebRtcChoice, required
    - `value` 'automatic' | 'manual' | 'block' | 'off', required — Specifies how the WebRTC will be spoofed. Possible values: 'automatic': Automatically set the webRTC public IP by the IP 'manual': Manually override the webRTC public IP and private IP in the profile 'block': Block the WebRTC functionality 'off': Turn off the spoofing, use the original settings
    - `extra` WebRtcSpoofingOptions — When the WebRTC spoofing is set to manual these extra settings will be used as well.
      - `publicIp` string, required — The WebRTC public IP address of the machine.
  - `fonts` 'automatic' | 'off', required — Specifies how the fonts will be spoofed. Possible values: 'automatic': Spoof fonts based on the browser fingerpint. 'off': Don't spoof fonts, use the real fonts of your machine.
  - `screen` ScreenChoice, required
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the screen will be spoofed. Possible values: 'automatic': Automatically override the screen resolution based on the fingerprint. 'manual': Manually override the screen resolution. 'off': Turn off the spoofing, use the original settings.
    - `extra` string, nullable — The screen size of the device in CSS pixels. CSS values correspond to bigger physical pixel values when scaled, so provide values accordingly. (Kameleo's default scaling is 1x for desktop and 2x for mobile profiles.) Examples for 1080p: 1920x1080 (desktop), 412x732 (mobile).
  - `hardwareConcurrency` HardwareConcurrencyChoice, required
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the hardwareConcurrency will be spoofed. Possible values: 'automatic': Automatically set the values based on the fingerprint. 'manual': Manually set the value in the profile. Valid values: 1, 2, 4, 8, 12, 16. 'off': Turn off the spoofing, use the original settings.
    - `extra` integer, nullable
  - `deviceMemory` DeviceMemoryChoice, required
    - `value` 'automatic' | 'manual' | 'off', required — Specifies how the deviceMemory will be spoofed. Possible values: 'automatic': Automatically set the values based on the fingerprint. 'manual': Manually set the value in the profile. Valid values: 0.25, 0.5, 1, 2, 4, 8, 16, 32. 'off': Turn off the spoofing, use the original settings.
    - `extra` number, double, nullable
  - `language` string, required — A language or a comma-separated list of languages for the profile. ISO 639-1 language and optionally ISO 3166-1 region code.
  - `startPage` string, required — This website will be opened in the browser when the profile launches.
  - `passwordManager` 'enabled' | 'disabled', required — Defines whether the browser can save login credentials. Possible values are: 'enabled': Credential saving is allowed. 'disabled': Credential saving is blocked.
  - `extensions` string[], required — A list of extensions or addons that will be loaded to the profile when the profile is started. For chrome and edge use CRX3 format extensions. For firefox use signed xpi format addons.
  - `notes` string, required — A free text including any notes written by the user.
  - `status` StatusResponse, required — Status information about the profile
    - `lifetimeState` 'created' | 'starting' | 'running' | 'terminating' | 'terminated' | 'locked' | 'loading' | 'unknown', required — Represents the lifetime states of a profile, indicating which actions can be performed with the associated browser engine at each state. Possible values are: - Created: Profile is created; the associated browser engine is not started. - Starting: The associated browser engine is starting. - Running: The associated browser engine is currently running. - Terminating: The associated browser engine is in the process of terminating. - Terminated: The associated browser engine is not running but has been started at least once. - Locked: The profile is currently being used by another user. - Loading: The profile data or the browser engine is syncing with the cloud storage. - Unknown: State of the profile is undefined.
  - `storage` 'local' | 'cloud'
  - `folderId` string, uuid, nullable — A unique identifier of the containing folder or empty (00000000-0000-0000-0000-000000000000) if it is not in folder.

## Other responses

- `404` — Fingerprint not found.
- `default` — Error

---

[API](https://skmtc.net/kameleo-io/apis/kameleo-local-api.md) · [All operations](https://skmtc.net/kameleo-io/apis/kameleo-local-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kameleo-io/kameleo-local-api/versions/dc959e78ce25/schema)
