Local API reference
The desktop app runs a REST API on your own computer so scripts can manage and launch profiles. Available on Pro and higher.
Enabling
- Create an API key in Dashboard → API keys (shown once — store it safely).
- In the desktop app, open Settings → Local API, enable it and paste the key. The default address is
http://127.0.0.1:50325.
The server only listens on 127.0.0.1. Every request needs the key:
Authorization: Bearer lak_xxxxxxxxxxxxxxxxxxxxxxxx
Requests are rate-limited per plan (Pro 60/min, Business 300/min). Over the limit you get 429 with a Retry-After header.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /v1/profiles | List profiles (?group=, ?search=) |
| POST | /v1/profiles | Create a profile |
| GET | /v1/profiles/{id} | Get one profile |
| PATCH | /v1/profiles/{id} | Update a profile |
| DELETE | /v1/profiles/{id} | Delete a profile |
| POST | /v1/profiles/{id}/start | Start and return connection info |
| POST | /v1/profiles/{id}/stop | Stop a running profile |
| GET | /v1/profiles/{id}/status | running, stopped or locked |
| GET | /v1/groups | List profile groups |
Starting a profile
POST /v1/profiles/01J.../start
{
"id": "01J...",
"status": "running",
"engine": "chromium",
"protocol": "cdp",
"endpoint": "ws://127.0.0.1:53111/devtools/browser/…",
"http_endpoint": "http://127.0.0.1:53111"
}
protocol tells you how to attach:
| protocol | Use |
|---|---|
cdp | Puppeteer connect({ browserWSEndpoint }), Playwright chromium.connectOverCDP(...), Selenium debuggerAddress |
bidi | Camoufox (Firefox) profiles: Puppeteer connect({ browserWSEndpoint, protocol: "webDriverBiDi" }) or any WebDriver BiDi client |
Example
The repository's examples/ folder has complete Playwright, Puppeteer and Selenium (Python) scripts.
import { chromium } from "playwright";
const res = await fetch("http://127.0.0.1:50325/v1/profiles/PROFILE_ID/start", {
method: "POST",
headers: { Authorization: `Bearer ${process.env.LOCAL_API_KEY}` },
});
const { endpoint } = await res.json();
const browser = await chromium.connectOverCDP(endpoint);
const context = browser.contexts()[0];
const page = context.pages()[0] ?? (await context.newPage());
await page.goto("https://example.com");