Skip to content

Script Runner

Multilogin X Script Runner enables bulk automation across single or multiple browser profiles with minimal technical knowledge.

Requirements

  • Multilogin X Agent version 1.37.4 or later
  • Script Runner binary is downloaded automatically on agent update

File Locations

Script Runner Binary

OSPath
WindowsC:\Users\%username%\mlx\deps\script_runner
macOS/Users/%username%/mlx/deps/script_runner
Linux/home/%username%/mlx/deps/script_runner

Scripts Directory

OSPath
WindowsC:\Users\%username%\mlx\deps\scripts
macOS/Users/%username%/mlx/deps/scripts
Linux/home/%username%/mlx/deps/scripts

Configuration

To change default directories, edit launcher.yaml:

OSConfig Path
WindowsC:\Users\%username%\mlx\configs\launcher.yaml
macOS/Users/%username%/mlx/configs/launcher.yaml
Linux/home/%username%/mlx/configs/launcher.yaml

Modify these values:

yaml
scriptrunnerpath: "/custom/path/to/script_runner"
scriptsdirpath: "/custom/path/to/scripts"

INFO

As of December 2024, the Agent downloads example scripts automatically on every launch. These are reference scripts stored on Multilogin's servers.


Start Script Runner

POST https://launcher.mlx.yt:45001/api/v1/run_script

Run scripts on one or multiple profiles. Two execution modes:

Mode 1: Run on Active Profiles

  1. Start profiles with automation_type=selenium first
  2. Send script run request -- profiles stay open after execution

Mode 2: Run with Profile Launch

  1. Send script run request with profile IDs -- profiles are started, script runs, then profiles close automatically
ParameterTypeRequiredDescription
script_filestringYesPython script filename (relative to scripts dir)
profile_idsarrayYesArray of profile objects
profile_ids[].profile_idUUIDYesProfile to run the script on
profile_ids[].is_headlessbooleanNoRun headless
bash
curl -X POST https://launcher.mlx.yt:45001/api/v1/run_script \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -d '{
    "script_file": "example_script3.py",
    "profile_ids": [
      {"profile_id": "8feb79fc-2b42-4d54-a3eb-f26fddd31499", "is_headless": false},
      {"profile_id": "8feb79fc-2b42-4d54-a3eb-f26fddd31410", "is_headless": true}
    ]
  }'

Response:

json
{
  "data": [
    {"profile_id": "8feb79fc-...-31499", "status": "success"},
    {"profile_id": "8feb79fc-...-31410", "status": "success"}
  ],
  "status": {"error_code": "", "http_code": 200, "message": ""}
}

Stop Script Runner

POST https://launcher.mlx.yt:45001/api/v1/profile/stop_script

Stop running scripts on specified profiles.

bash
curl -X POST https://launcher.mlx.yt:45001/api/v1/profile/stop_script \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json" \
  -d '{
    "profile_ids": [
      "8feb79fc-2b42-4d54-a3eb-f26fddd31499",
      "422a436e-564c-4fa9-a29a-45b848714a78"
    ]
  }'

Response:

json
{
  "data": [
    {"profile_id": "8feb79fc-...", "status": "stopped"},
    {"profile_id": "422a436e-...", "status": "stopped"}
  ],
  "status": {"error_code": "", "http_code": 200, "message": ""}
}

List Scripts

GET https://launcher.mlx.yt:45001/api/v1/scripts

Get a list of available scripts in the scripts directory.

bash
curl https://launcher.mlx.yt:45001/api/v1/scripts \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Accept: application/json"

Response:

json
{
  "data": ["example_script3.py"],
  "status": {"error_code": "", "http_code": 200, "message": ""}
}

Script Runner Workflow