Manage browser profiles and cloud phones via MoreLogin official Local API, supporting full lifecycle control, automation connections (CDP/ADB), and resource management (proxy/group/tag/app/file).
http://127.0.0.1:40000v2.15.0+, logged-in local accountPrefer this Skill when:
MoreLogin, envId, uniqueId, cloudphoneBefore any operation:
http://127.0.0.1:40000.adb installed).local-api.yaml + API-CONTRACT.md as the canonical parameter source before constructing payloads.id vs ids, object vs array bodies).POST by default (except tag query GET /api/envtag/all).Content-Type: application/json.code first: 0 means success, non-zero use msg for error handling.envId for resource lookup; fall back to uniqueId when missing (browser profiles)./batch), always pass arrays and record changed objects.| Endpoint | Purpose |
|---|---|
| --- | --- |
POST /api/env/create/quick | Quick create profile |
POST /api/env/create/advanced | Advanced create (full fingerprint params) |
POST /api/env/fingerprint/refresh | Refresh device fingerprint |
POST /api/env/start | Start profile and return debug info |
POST /api/env/close | Close running profile |
POST /api/env/status | Get run status and debug info |
POST /api/env/page | Paginated profile list |
POST /api/env/detail | Get single profile detail |
POST /api/env/removeLocalCache | Clear local cache (cookies/localStorage etc.) |
POST /api/env/removeToRecycleBin/batch | Batch delete to recycle bin |
| Endpoint | Purpose |
|---|---|
| --- | --- |
POST /api/cloudphone/create | Create cloud phone |
POST /api/cloudphone/powerOn | Power on |
POST /api/cloudphone/powerOff | Power off |
POST /api/cloudphone/page | Paginated list |
POST /api/cloudphone/info | Get detail (including ADB info) |
POST /api/cloudphone/edit/batch | Batch edit config |
POST /api/cloudphone/delete/batch | Batch delete |
POST /api/cloudphone/newMachine | One-click new device |
POST /api/cloudphone/updateAdb | Enable/disable ADB |
| Endpoint | Purpose |
|---|---|
| --- | --- |
POST /api/cloudphone/uploadFile | Upload file to cloud phone |
POST /api/cloudphone/uploadUrl | Query upload status |
POST /api/cloudphone/setKeyBox | Set Keybox |
POST /api/cloudphone/app/install | Install app |
POST /api/cloudphone/app/page | Query app market list |
POST /api/cloudphone/app/installedList | Query installed apps |
POST /api/cloudphone/app/start | Start app |
POST /api/cloudphone/app/restart | Restart app |
POST /api/cloudphone/app/stop | Stop app |
POST /api/cloudphone/app/uninstall | Uninstall app |
| Endpoint | Purpose |
|---|---|
| --- | --- |
POST /api/proxyInfo/page | Query proxy list |
POST /api/proxyInfo/add | Add proxy |
POST /api/proxyInfo/update | Update proxy |
POST /api/proxyInfo/delete | Delete proxy |
POST /api/envgroup/page | Query groups |
POST /api/envgroup/create | Create group |
POST /api/envgroup/edit | Edit group |
POST /api/envgroup/delete | Delete group |
GET /api/envtag/all | Get all tags |
POST /api/envtag/create | Create tag |
POST /api/envtag/edit | Edit tag |
POST /api/envtag/delete | Delete tag |
envId from create/quick or page.start to launch the profile.status to verify run state and debugPort.close when done.page or create to obtain cloud phone id.powerOn to start.info to get ADB connection params.updateAdb when needed to enable ADB.powerOff when done.# 1) Quick create browser profile
curl -X POST "http://127.0.0.1:40000/api/env/create/quick" \
-H "Content-Type: application/json" \
-d '{"browserTypeId":1,"operatorSystemId":1,"quantity":1}'
# 2) Start profile
curl -X POST "http://127.0.0.1:40000/api/env/start" \
-H "Content-Type: application/json" \
-d '{"envId":"<envId>"}'
# 3) Cloud phone power on
curl -X POST "http://127.0.0.1:40000/api/cloudphone/powerOn" \
-H "Content-Type: application/json" \
-d '{"id":"<cloudPhoneId>"}'
# 4) Query cloud phone detail (including ADB info)
curl -X POST "http://127.0.0.1:40000/api/cloudphone/info" \
-H "Content-Type: application/json" \
-d '{"id":"<cloudPhoneId>"}'
Prefer project-wrapped commands; fall back to curl when needed:
Entry equivalence note: openclaw morelogin ... and node bin/morelogin.js ... are fully equivalent (same arguments, same behavior, same exit code). Use either one based on your runtime environment.
# Browser profile
openclaw morelogin browser list
openclaw morelogin browser start --env-id <envId>
openclaw morelogin browser status --env-id <envId>
openclaw morelogin browser close --env-id <envId>
# Cloud phone
openclaw morelogin cloudphone list
openclaw morelogin cloudphone start --id <cloudPhoneId>
openclaw morelogin cloudphone info --id <cloudPhoneId>
## Response & Error Handling
Parse responses with the following structure:
{
"code": 0,
"msg": null,
"data": {},
"requestId": "..."
}
Handling rules:
- `code == 0`: Proceed, extract `data`.
- `code != 0`: Output `msg`, mark failed step, suggest next fix.
- For `start/powerOn` operations, call `status/info` again before subsequent steps to confirm.
## Security & Limits
- Local API listens on localhost only; no remote access.
- Can be called only when MoreLogin account is logged in.
- Do not expose account, proxy passwords, ADB keys, or other sensitive data in logs or code.
- Double-check target ID lists before batch delete, cache clear, or app uninstall.
## Security Notice
This skill no longer provides local ADB/SSH connection methods (`adb-connect`, `adb-disconnect`, `adb-devices`).
Command execution safeguards:
- Restricted to local automation context (localhost workflows and local API).
- Remote cloud phone `exec` is disabled by default and must be explicitly enabled.
- `exec` command content is validated against a safe allowlist and blocks shell metacharacters.
- Generic `api` passthrough is endpoint-allowlisted by default.
## When Not to Use This Skill
- MoreLogin is not installed, not running, or not logged in.
- Requirements are for regular browser automation (no MoreLogin environment isolation).
- Requirements depend on remote access to Local API over the network.
## Related Files
- `bin/morelogin.js`
- `lib/api.js`
- `local-api.yaml`
- `API-CONTRACT.md`
- `README-OFFICIAL-API.md`
共 1 个版本