Local API

GPM Login API Documentation

GPM Login runs a local HTTP server on your machine so scripts can create profiles, start browsers, manage groups, proxies, and extensions. The API only serves local requests from localhost or 127.0.0.1, so no API token is required.

http://localhost:9495/api/v1

Base URL and Port

Default port is 9495. If this port is already used, GPM Login automatically chooses a free port in the 8000-10000 range and writes the active value to the http.port file inside the app local data folder.

http://localhost:9495/api/v1
http://127.0.0.1:9495/api/v1

Common Response Envelope

Every endpoint returns JSON with the same top-level shape.

{
  "success": true,
  "data": {},
  "message": "OK",
  "sender": "GPMLogin Global v1.0.0"
}

Pagination and Sorting

List endpoints use page, page_size, search, and sort. Sorting values: 0 newest first, 1 oldest first, 2 name A-Z, 3 name Z-A.

{
  "current_page": 1,
  "per_page": 30,
  "total": 120,
  "last_page": 4,
  "data": []
}
Enum fields such as browser_type, os_type, canvas_mode, and related fingerprint settings accept either integer values or string names when supported.

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" }

Extensions

Manage installed browser extensions.

GET /api/v1/extensions

List extensions

Returns all installed extensions as an array, not paginated.

Example response

{ "success": true, "data": [{ "id": "9d30b2b55768f1051833465850725851", "name": "uBlock Origin", "version": "1.54.0", "is_active": true }], "message": "OK", "sender": "GPMLogin Global v1.0.0" }
GET /api/v1/extensions/update-state/{id}

Set extension state

Enables or disables an extension, optionally scoped to specific groups.

Path parameters

Parameter Type Default Description
id string - Extension ID.

Query parameters

Parameter Type Required Default Description
active bool Yes - true=enable, false=disable.
applied_group_ids string No - Comma-separated group IDs, e.g. id1,id2. Omit to apply globally.

Example response

{ "success": true, "data": null, "message": "Extension state updated successfully", "sender": "GPMLogin Global v1.0.0" }
💬
Support
×
🛟
Need Help?
Support team is online
Choose an option below and we'll help you as soon as possible.