Skip to content

9Login API: running profiles and jobs#

Open and close profiles, and see which ones are running. Commands that take a while answer with a job: read its result with GET /v1/jobs/{id}, or pass wait to get the result in the same call.

Running#

POST /v1/profiles/start#

Open profiles, as the Start button does. Returns a job. One lock request for the whole list, as for a multi-select Start. A profile already running counts as started. The job result lists what opened and why the rest did not.

MCP tool: start_profiles. Access: needs "Allow changes".

Field Type Required Description
ids string[] yes Profile ids.
cloudNewer string no When the cloud has newer browser data than this machine: "pull" it first, "open" with the local data, or "fail" that profile. Default follows Settings > Auto Sync: "pull" when on, "fail" when off. Values: pull, open, fail.
wait boolean no Wait for the job to finish, at most waitSec, before answering. false answers at once with the job, to follow with GET /v1/jobs/{id}. Default true.
waitSec integer no How long wait may hold the request. Min 1, max 100. Default 60.
Request
curl -X POST "http://127.0.0.1:37286/v1/profiles/start" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "ids": [
    "a1b2c3",
    "d4e5f6"
  ],
  "wait": true
}'
Response
{
  "ok": true,
  "data": {
    "id": "j0123456789abcdef",
    "kind": "start",
    "state": "done",
    "createdAt": 1760000000000,
    "finishedAt": 1760000004000,
    "progress": null,
    "error": null,
    "result": {
      "started": [
        "a1b2c3"
      ],
      "failed": [
        {
          "id": "d4e5f6",
          "code": "lockedElsewhere",
          "message": "The profile is open on another machine or by another member."
        }
      ]
    }
  }
}

POST /v1/profiles/stop#

Close profiles, as the Stop button does. Returns a job. Pass ids or all. Profiles that are not running are listed as notRunning, not as failures.

MCP tool: stop_profiles. Access: needs "Allow changes".

Field Type Required Description
ids string[] no Profile ids. Leave out and pass all instead to stop everything.
all boolean no Stop every running profile.
waitUpload boolean no While waiting (wait, the default): also wait until Auto Sync has pushed their browser data, so another machine can open them. Default false.
wait boolean no Wait for the job to finish, at most waitSec, before answering. false answers at once with the job, to follow with GET /v1/jobs/{id}. Default true.
waitSec integer no How long wait may hold the request. Min 1, max 100. Default 60.
Request
curl -X POST "http://127.0.0.1:37286/v1/profiles/stop" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "all": true,
  "wait": true
}'
Response
{
  "ok": true,
  "data": {
    "id": "j0123456789abcdef",
    "kind": "stop",
    "state": "done",
    "createdAt": 1760000000000,
    "finishedAt": 1760000001500,
    "progress": null,
    "error": null,
    "result": {
      "stopped": [
        "a1b2c3"
      ],
      "notRunning": [],
      "failed": [],
      "uploaded": null
    }
  }
}

GET /v1/running#

Profiles with a browser on this machine right now.

MCP tool: list_running. Access: read only.

Field Type Required Description
window boolean no Also return each browser window's position and size, in logical pixels like the window commands. window is null when the browser has no visible window yet, runs hidden, or the system is not Windows. Default false.
Request
curl -H "Authorization: Bearer YOUR_API_KEY" "http://127.0.0.1:37286/v1/running?window=true"
Response
{
  "ok": true,
  "data": {
    "items": [
      {
        "id": "a1b2c3",
        "title": "shop 1",
        "pid": 12345,
        "startedAt": 1760000000000,
        "phase": "live",
        "window": {
          "x": 0,
          "y": 0,
          "width": 965,
          "height": 1040,
          "minimized": false
        }
      }
    ]
  }
}

Jobs#

GET /v1/jobs/{id}#

The state of a job returned by any command that answers with a job. kind says which command started it: start, stop, proxyCheck, proxyScriptTest, clearData, upload, download or extensionInstall. state is running, done or failed; a failed job has error { code, message }. Jobs are kept for 30 minutes after they finish.

MCP tool: get_job. Access: read only.

No parameters.

Request
curl -H "Authorization: Bearer YOUR_API_KEY" "http://127.0.0.1:37286/v1/jobs/j0123456789abcdef"
Response
{
  "ok": true,
  "data": {
    "id": "j0123456789abcdef",
    "kind": "start",
    "state": "running",
    "createdAt": 1760000000000,
    "finishedAt": null,
    "progress": null,
    "result": null,
    "error": null
  }
}