Profiles
Create, update, delete, start/stop browsers, and list profiles.
GET
/api/v1/profiles
List profiles
Returns a paginated profile list. The list response is kept light and does not include full fingerprint data.
Query parameters
| Parameter |
Type |
Required | Default |
Description |
page |
int |
No |
1 |
Current page. |
page_size |
int |
No |
30 |
Items per page. |
search |
string |
No |
- |
Search keyword by profile name. |
sort |
int |
No |
0 |
0=newest, 1=oldest, 2=name A-Z, 3=name Z-A. |
Example response
{
"success": true,
"data": {
"current_page": 1,
"per_page": 30,
"total": 2,
"last_page": 1,
"data": [
{
"id": "37f783ac-2635-4d53-ab8d-a300c790ecdc",
"name": "Profile 01",
"group_id": "all",
"storage_path": "C:\\GPMLogin\\profiles\\37f7...",
"raw_proxy": "socks5://127.0.0.1:5000",
"browser": { "name": "chrome", "version": "137.0.7151.41" },
"os": "windows",
"note": "",
"created_at": "2026-06-08 10:00:00",
"updated_at": "2026-06-08 10:00:00",
"tags": []
}
]
},
"message": "OK",
"sender": "GPMLogin Global v1.0.0"
}
GET
/api/v1/profiles/{id}
Get one profile
Returns profile details, including full fingerprint data.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Profile ID. |
Example response
{
"success": true,
"data": {
"id": "37f783ac-2635-4d53-ab8d-a300c790ecdc",
"name": "Profile 01",
"group_id": "all",
"raw_proxy": "",
"browser": { "name": "chrome", "version": "137.0.7151.41" },
"os": "windows",
"fingerprint": { "...": "full fingerprint data" }
},
"message": "OK",
"sender": "GPMLogin Global v1.0.0"
}
POST
/api/v1/profiles/create
Create profile
Creates a new profile. Only name is required; omitted/null fields use default settings and fingerprint values are randomized automatically.
Request body
| Parameter |
Type |
Required | Default |
Description |
name |
string |
Yes |
- |
Profile name. Required when creating a profile. |
group_id |
string |
No |
null |
Group ID for this profile. Omit/null uses default group on create or keeps current value on update. |
raw_proxy |
string |
No |
- |
Proxy string such as socks5://127.0.0.1:5000. Empty means no proxy. |
bypass_proxy_extensions |
string |
No |
- |
Domains that bypass the proxy. |
browser_type |
enum |
No |
chrome (1) |
1=chrome, 2=firefox. String values are also accepted. |
browser_version |
string |
No |
newest |
Browser version. Use /browsers/versions to list supported versions. |
os_type |
enum |
No |
current OS |
1=Windows, 2=macOS Intel, 3=macOS ARM, 4=Linux, 5=Android. |
custom_user_agent |
string |
No |
- |
Custom User-Agent. Setting this enables manual UA override. |
task_bar_title |
string |
No |
- |
Window title shown on the taskbar. |
webrtc_mode |
enum |
No |
- |
1=Based on IP, 2=Fixed, 3=Real, 4=Disabled. |
fixed_webrtc_public_ip |
string |
No |
- |
Fixed public IP for WebRTC. Required when webrtc_mode = 2. |
port_protect |
string |
No |
- |
Protected ports for port-scan protection. |
geolocation_mode |
enum |
No |
- |
1=Allow, 2=Prompt, 3=Block. |
canvas_mode |
enum |
No |
- |
1=Noise, 2=Real, 3=Block. |
client_rect_mode |
enum |
No |
- |
1=Noise, 2=Real. |
webgl_image_mode |
enum |
No |
- |
1=Noise, 2=Real. |
webgl_metadata_mode |
enum |
No |
- |
1=Masked, 2=Real. |
audio_mode |
enum |
No |
- |
1=Noise, 2=Real. |
is_masked_media |
bool |
No |
false |
true masks camera, microphone, and speaker devices. |
font_mode |
enum |
No |
- |
1=Masked, 2=Real. |
timezone_base_on_ip |
bool |
No |
true |
true makes timezone follow the proxy IP. |
timezone |
string |
No |
- |
Fixed timezone such as Asia/Ho_Chi_Minh. Use when timezone_base_on_ip=false. |
is_language_base_on_ip |
bool |
No |
true |
true makes language follow the proxy IP. |
fixed_language |
string |
No |
- |
Fixed language such as vi, en, or zh. |
startup_urls |
string |
No |
- |
URLs to open on startup. Separate multiple URLs with new lines. |
note |
string |
No |
- |
Profile note. |
Example request
{
"name": "Test profile from api",
"group_id": null,
"raw_proxy": "socks5://127.0.0.1:5000",
"browser_type": 1,
"browser_version": "137.0.7151.41",
"os_type": 1,
"canvas_mode": 1,
"timezone_base_on_ip": true,
"is_language_base_on_ip": true,
"note": null
}
Example response
{ "success": true, "data": { "id": "69911f98-...", "name": "Test profile from api" }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
POST
/api/v1/profiles/update/{id}
Update profile
Partially updates a profile. Omitted/null fields keep their current values. Uses the same field set as create.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Profile ID. |
Request body
| Parameter |
Type |
Required | Default |
Description |
name |
string |
Yes |
- |
Profile name. Required when creating a profile. |
group_id |
string |
No |
null |
Group ID for this profile. Omit/null uses default group on create or keeps current value on update. |
raw_proxy |
string |
No |
- |
Proxy string such as socks5://127.0.0.1:5000. Empty means no proxy. |
bypass_proxy_extensions |
string |
No |
- |
Domains that bypass the proxy. |
browser_type |
enum |
No |
chrome (1) |
1=chrome, 2=firefox. String values are also accepted. |
browser_version |
string |
No |
newest |
Browser version. Use /browsers/versions to list supported versions. |
os_type |
enum |
No |
current OS |
1=Windows, 2=macOS Intel, 3=macOS ARM, 4=Linux, 5=Android. |
custom_user_agent |
string |
No |
- |
Custom User-Agent. Setting this enables manual UA override. |
task_bar_title |
string |
No |
- |
Window title shown on the taskbar. |
webrtc_mode |
enum |
No |
- |
1=Based on IP, 2=Fixed, 3=Real, 4=Disabled. |
fixed_webrtc_public_ip |
string |
No |
- |
Fixed public IP for WebRTC. Required when webrtc_mode = 2. |
port_protect |
string |
No |
- |
Protected ports for port-scan protection. |
geolocation_mode |
enum |
No |
- |
1=Allow, 2=Prompt, 3=Block. |
canvas_mode |
enum |
No |
- |
1=Noise, 2=Real, 3=Block. |
client_rect_mode |
enum |
No |
- |
1=Noise, 2=Real. |
webgl_image_mode |
enum |
No |
- |
1=Noise, 2=Real. |
webgl_metadata_mode |
enum |
No |
- |
1=Masked, 2=Real. |
audio_mode |
enum |
No |
- |
1=Noise, 2=Real. |
is_masked_media |
bool |
No |
false |
true masks camera, microphone, and speaker devices. |
font_mode |
enum |
No |
- |
1=Masked, 2=Real. |
timezone_base_on_ip |
bool |
No |
true |
true makes timezone follow the proxy IP. |
timezone |
string |
No |
- |
Fixed timezone such as Asia/Ho_Chi_Minh. Use when timezone_base_on_ip=false. |
is_language_base_on_ip |
bool |
No |
true |
true makes language follow the proxy IP. |
fixed_language |
string |
No |
- |
Fixed language such as vi, en, or zh. |
startup_urls |
string |
No |
- |
URLs to open on startup. Separate multiple URLs with new lines. |
note |
string |
No |
- |
Profile note. |
Example request
{
"name": "New profile name",
"raw_proxy": "http://user:pass@127.0.0.1:8080",
"note": "Proxy changed"
}
Example response
{ "success": true, "data": { "id": "69911f98-...", "name": "New profile name" }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
GET
/api/v1/profiles/delete/{id}
Delete profile
mode=soft moves the profile to trash. mode=hard permanently removes it and its on-disk data.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Profile ID. |
Query parameters
| Parameter |
Type |
Required | Default |
Description |
mode |
string |
No |
soft |
soft or hard. |
Example response
{ "success": true, "data": null, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
GET
/api/v1/profiles/start/{id}
Start browser
Launches the profile browser and returns automation connection details for Selenium, Puppeteer, or Playwright.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Profile ID. |
Query parameters
| Parameter |
Type |
Required | Default |
Description |
remote_debugging_port |
int |
No |
random free port |
Remote debugging port. Omit to auto-pick a free port. |
window_scale |
double |
No |
1 |
Window zoom scale, e.g. 0.8. |
window_pos |
string |
No |
- |
Window position as x,y, e.g. 100,100. |
window_size |
string |
No |
- |
Window size as width,height, e.g. 800,600. |
skip_proxy_check |
bool |
No |
false |
true skips proxy check before launch. |
addition_args |
string |
No |
- |
Extra Chromium command-line args, e.g. --mute-audio. |
Example response
{
"success": true,
"data": {
"profile_id": "7798d4ca-a002-4a52-9223-5140c68667bc",
"driver_path": "C:\\GPMLogin\\drivers\\chromedriver.exe",
"remote_debugging_port": 40444,
"websocket_debugging_url": "ws://127.0.0.1:40444/devtools/browser/abc-123",
"addition_info": {
"process_id": 12345,
"profile_name": "Profile 01",
"window_handle": 1180736,
"exec_time": 1200
}
},
"message": "OK",
"sender": "GPMLogin Global v1.0.0"
}
GET
/api/v1/profiles/stop/{id}
Stop browser
Closes the running browser for a profile.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Profile ID. |
Example response
{ "success": true, "data": null, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
GET
/api/v1/browsers/versions
List browser versions
Returns supported Chromium and Firefox versions for browser_version.
Example response
{ "success": true, "data": { "chromium": ["137.0.7151.41", "136.0.7103.93"], "firefox": ["128.0", "127.0"] }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
Groups
Groups categorize browser profiles.
GET
/api/v1/groups
List groups
Returns a paginated group list.
Query parameters
| Parameter |
Type |
Required | Default |
Description |
page |
int |
No |
1 |
Current page. |
page_size |
int |
No |
30 |
Items per page. |
search |
string |
No |
- |
Search by group name. |
sort |
int |
No |
0 |
Sort order 0-3. |
Example response
{ "success": true, "data": { "current_page": 1, "per_page": 30, "total": 1, "last_page": 1, "data": [{ "id": "67db46f9-...", "name": "Marketing", "sort_order": 1 }] }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
GET
/api/v1/groups/{id}
Get one group
Returns one group by ID.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Group ID. |
Example response
{ "success": true, "data": { "id": "67db46f9-...", "name": "Marketing", "sort_order": 1 }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
POST
/api/v1/groups/create
Create group
Creates a new group.
Request body
| Parameter |
Type |
Required | Default |
Description |
name |
string |
Yes |
- |
Group name. |
sort_order |
int |
No |
0 |
Display order. Smaller values are shown higher. |
Example request
{
"name": "Group created from api",
"sort_order": 999
}
Example response
{ "success": true, "data": { "id": "...", "name": "Group created from api", "sort_order": 999 }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
POST
/api/v1/groups/update/{id}
Update group
Renames or reorders a group. sort_order applies only when greater than 0.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Group ID. |
Request body
| Parameter |
Type |
Required | Default |
Description |
name |
string |
Yes |
- |
New group name. |
sort_order |
int |
No |
- |
New display order. |
Example request
{
"name": "Group edited by api",
"sort_order": 5
}
Example response
{ "success": true, "data": { "...": "" }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
GET
/api/v1/groups/delete/{id}
Delete group
Deletes a group by ID.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Group ID. |
Example response
{ "success": true, "data": null, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
Proxies
Shared proxy store.
GET
/api/v1/proxies
List proxies
Returns a paginated proxy list.
Query parameters
| Parameter |
Type |
Required | Default |
Description |
page |
int |
No |
1 |
Current page. |
page_size |
int |
No |
30 |
Items per page. |
search |
string |
No |
- |
Search by proxy string. |
sort |
int |
No |
0 |
Sort order 0-3. |
Example response
{ "success": true, "data": { "current_page": 1, "per_page": 30, "total": 1, "last_page": 1, "data": [{ "id": "a36a1e31-...", "raw_proxy": "socks5://127.0.0.1:5001", "meta_data": null, "tags": [] }] }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
GET
/api/v1/proxies/{id}
Get one proxy
Returns one proxy by ID.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Proxy ID. |
Example response
{ "success": true, "data": { "id": "a36a1e31-...", "raw_proxy": "socks5://127.0.0.1:5001", "meta_data": null, "tags": [] }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
POST
/api/v1/proxies/create
Create proxy
Adds a proxy to the shared store.
Request body
| Parameter |
Type |
Required | Default |
Description |
raw_proxy |
string |
Yes |
- |
Supports ip:port, ip:port:user:pass, http://, and socks5:// forms. |
Example request
{
"raw_proxy": "socks5://127.0.0.1:5001"
}
Example response
{ "success": true, "data": { "id": "...", "raw_proxy": "socks5://127.0.0.1:5001" }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
POST
/api/v1/proxies/update/{id}
Update proxy
Updates the proxy string of a record.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Proxy ID. |
Request body
| Parameter |
Type |
Required | Default |
Description |
raw_proxy |
string |
Yes |
- |
New proxy string. |
Example request
{
"raw_proxy": "http://user:pass@127.0.0.1:8080"
}
Example response
{ "success": true, "data": { "...": "" }, "message": "OK", "sender": "GPMLogin Global v1.0.0" }
GET
/api/v1/proxies/delete/{id}
Delete proxy
Deletes a proxy by ID.
Path parameters
| Parameter |
Type |
Default |
Description |
id |
string |
- |
Proxy ID. |
Example response
{ "success": true, "data": null, "message": "OK", "sender": "GPMLogin Global v1.0.0" }