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
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
Response
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
Response
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.