Docs

Local API reference

Start and stop profiles, manage them and connect Puppeteer, Playwright or Selenium from scripts on your computer. The main endpoints follow AdsPower's local API, so many existing scripts run with few or no changes.

Before you start

The local API is part of the paid plans (Solo and up). It runs inside the Multime app while the app is open, and it only listens on your own computer:

  • Address: http://127.0.0.1:50325 by default, the same port AdsPower uses. If AdsPower is also running, one of them can't use the port; change Multime's port on the API page in the app.
  • API key: required by default. Copy it from the API page and send it as Authorization: Bearer <key>, or add ?api_key=<key> to the URL. You can turn the key requirement off on the same page, but keep it on if other people or programs use your computer.
  • Web pages can't call it. Requests that come from a browser page are refused, so a website you visit can't open or read your profiles. Call the API from a script or a terminal.
  • Team members: a VA can use the API on their own computer only if the owner gave them the "Use the local API" permission. Their calls go to the owner's workspace and follow the same permissions as the app.

Every response is JSON in the same shape AdsPower uses: {"code": 0, "msg": "success", "data": {…}} on success and {"code": -1, "msg": "<what went wrong>"} on failure. Check code before you read data.

Start and stop a profile

Endpoint Method What it does
/api/v1/browser/start GET or POST Opens a profile and returns how to connect to it
/api/v1/browser/stop GET or POST Closes a profile
/api/v1/browser/active GET or POST Says whether a profile is open, with its connection details
/api/v1/browser/local-active GET or POST Lists every profile open on this computer
/status GET Checks that Multime is running (no key needed)

Pick the profile with user_id (the profile ID shown in Multime) or serial_number (the No. column). browser/start also takes:

  • open_tabs: a list of URLs to open instead of the profile's usual start pages, or 1 to open no tabs.
  • headless: 1 to start the browser without a window.

A successful browser/start returns:

{
  "code": 0,
  "msg": "success",
  "data": {
    "ws": { "puppeteer": "ws://127.0.0.1:53110/devtools/browser/…", "selenium": "127.0.0.1:53110" },
    "debug_port": "53110",
    "webdriver": "/path/to/chromedriver"
  }
}

webdriver is the path to a chromedriver that sits next to the profile's browser engine, when Multime finds one. When it's empty, use a chromedriver of the same Chrome version as the engine.

Connect your automation

Puppeteer (Node.js)

const res = await fetch('http://127.0.0.1:50325/api/v1/browser/start?serial_number=12', {
  headers: { Authorization: `Bearer ${process.env.MULTIME_API_KEY}` }
}).then((r) => r.json())
if (res.code !== 0) throw new Error(res.msg)
const browser = await puppeteer.connect({ browserWSEndpoint: res.data.ws.puppeteer, defaultViewport: null })
const [page] = await browser.pages()
await page.goto('https://example.com')

Playwright (Node.js)

const browser = await chromium.connectOverCDP(`http://127.0.0.1:${res.data.debug_port}`)
const context = browser.contexts()[0]
const page = context.pages()[0] ?? (await context.newPage())

Selenium (Python)

import requests
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

r = requests.get("http://127.0.0.1:50325/api/v1/browser/start",
                 params={"user_id": "PROFILE_ID"},
                 headers={"Authorization": "Bearer YOUR_KEY"}).json()
opts = webdriver.ChromeOptions()
opts.add_experimental_option("debuggerAddress", r["data"]["ws"]["selenium"])
driver = webdriver.Chrome(service=Service(r["data"]["webdriver"]), options=opts)

Close the profile with /api/v1/browser/stop when the script is done, so its cookies and tabs are saved and the profile is free for your team again. Don't close the browser from the script with browser.close() while you still need Multime to save the session.

Manage profiles and groups

Endpoint Method What it does
/api/v1/user/list GET or POST Lists profiles. Filters: user_id, serial_number, group_id (0 = ungrouped). Paging: page, page_size (up to 100). Sort: user_sort
/api/v1/user/create POST Creates a profile and returns its id and serial_number
/api/v1/user/update POST Changes a profile; send only the fields you want to change
/api/v1/user/delete POST Moves up to 100 profiles (user_ids) to Trash
/api/v1/user/regroup POST Moves profiles (user_ids) to a group (group_id, 0 = no group)
/api/v1/group/list GET or POST Lists groups, with an optional group_name filter
/api/v1/group/create POST Creates a group (group_name, optional remark)
/api/v1/group/update POST Renames a group or changes its remark

user/create and user/update accept the usual AdsPower fields: name, remark, group_id, open_urls, domain_name, username, password, fakey (a 2FA secret), cookie, user_proxy_config or proxyid (a saved proxy, or random), and fingerprint_config. Multime adds tags and custom_no. Profile creation follows your plan's profile limit, the same as in the app.

Multime implements the endpoints above, not every endpoint in AdsPower's API. Test an existing script on a test profile before you point it at real accounts.

Native API for everything else

POST /api/v2/rpc with {"method": "<name>", "args": [ … ]} calls Multime's own methods, the same ones the app uses: for example profiles.list, profiles.get, proxies.list or browser.running. Methods that change how Multime itself is set up or protected (team settings, engines, API and app settings, opening files or other apps) can't be called this way.

Frequently asked questions

Is the Multime local API the same as AdsPower's?

The main browser, profile and group endpoints use the same paths, parameters, default port and response shape, so many AdsPower scripts work after you change the API key. Multime doesn't implement every AdsPower endpoint; check the tables above and test on a test profile first.

Which plan includes the local API?

Solo, Team and Agency. On the Free plan the API answers every request with a message that the API is part of the paid plans.

Can I call the API from another computer?

No. It only listens on 127.0.0.1, so scripts must run on the same computer as Multime. A VA runs scripts on their own computer, against their own Multime app connected to your workspace.

Why does my request get "API key missing or wrong"?

The key is required by default. Copy it from the API page in Multime and send it as Authorization: Bearer <key> or ?api_key=<key>. If you regenerated the key, update your scripts.

What happens to a profile's data when my script closes it?

Close profiles with /api/v1/browser/stop. Multime then saves the profile's cookies and open tabs, releases the lock so a teammate can open it, and updates the activity log.

Can I run many profiles at once from a script?

Yes, as many as your computer can handle. For no-code runs across many profiles, the automation editor runs flows on up to 20 profiles in parallel.

Start with 5 free profiles

No card needed. Mac (Apple Silicon) and Windows. Upgrade when you need more profiles or your VAs.

Download freePricing