Complete tutorial on using ovoBrowser local API
Use local HTTP API to manage environment, grouping, tags, proxies, recycle bin, and browser processes, including complete fields and cURL examples.
OvoBrowser Local API Usage Tutorial
The ovoBrowser local API is used to manage the browser environment, groups, tags, proxies, recycle bin, and browser processes locally. Interface only listens127.0.0.1No Token, Bearer Token orx-api-key.
1. Startup method
Desktop automatic startup
After successful account login, the local API will automatically start and save the current port. The next saved session will automatically start after successful recovery. Default address:
http://127.0.0.1:50325The actual port is based on the client's "API&MCP" page. Google、GitHub、 Both account password login and invitation registration will ultimately establish the same login session, so after successfully entering the account, the local API will be launched.
If the service is manually stopped in the client, the current port will be immediately closed; It will still automatically start the next time the login or session is successfully restored.
CLI mode
First successfully log in on the desktop client and remain logged in, then execute:
& "C:\Program Files\ovoBrowser\ovoBrowser.exe" --cli --api-port 50325Use the actual installation path for the program.--api-portOptional. If omitted, the saved port will be used. The CLI reuses the account session in the operating system's secure storage and does not accept account passwords or Tokens from the command line.
“Remain logged in” means that you have not clicked Log Out in the desktop client and that the saved session is still valid. If you have logged out, the session has expired, or the application data has been cleared, you need to reopen the desktop client and log in again. Google/GitHub login must also be completed in the desktop client.
2. Calling Rules
All APIs use
POST, with parameters placed in the JSON Body.Use the request header
Content-Type: application/json.Environment identification is recommended using
id; most APIs also supportseqas the environment sequence number.Pagination parameter
pagefrom0At the beginning,pageSizeThe scope is1-100.Accounts, cookies, 2FA keys, and proxy passwords are sensitive information and should not be written into public logs.
Successful response:
{"success":true,"data":{}}Failed response:
{"success":false,"msg":"失败原因"}3. Overview of interfaces
| Classification | interface | effect |
|---|---|---|
| Service | /health | Check if the local API is running |
| environment | /browser/list | Environment list, supporting grouping and tag filtering |
| Environment | /browser/detail | Environment Details |
| Environment | /browser/create | Create environment, supporting all fields |
| Environment | /browser/update | Update environment, supporting all fields |
| Recycle Bin | /browser/recycle/list | Recycle Bin List |
| Recycle Bin | /browser/delete | Delete environment to the recycle bin |
| Recycle Bin | /browser/restore | Restore environment |
| Recycle Bin | /browser/delete/permanent | Completely delete the recycle bin environment |
| Grouping | /group/list、/group/create、/group/update、/group/delete | Group addition, deletion, modification, and search |
| label | /tag/list、/tag/create、/tag/update、/tag/delete | Tag addition, deletion, modification, and search |
| agent | /proxy/list、/proxy/create、/proxy/update | Reusable proxy management |
| run | /browser/open、/browser/active、/browser/running | Open and query the running status |
| run | /browser/pids、/browser/pids/all、/browser/ports | PID and CDP ports |
| run | /browser/close、/browser/close/all | Close the environment |
4. Health check ups
curl --location 'http://127.0.0.1:50325/health' \
--header 'Content-Type: application/json' \
--data '{}'Returndata.running=trueIndicates that the port has been started. By calling the environment list again, it can be confirmed that the account session and workspace have been restored.
5. Grouping API
Grouping is used for single choice classification: an environment can belong to at most one group, throughgroupIdBinding.
Group List
curl --location 'http://127.0.0.1:50325/group/list' \
--header 'Content-Type: application/json' \
--data '{}'data.listIt is a grouped array,_count.profilesIt is the number of environments in the group.
Add Group
| field | Type | Required | Explanation |
|---|---|---|---|
name | string | is | 1-50 characters, cannot have the same name under the same account |
color | string | No | #RRGGBB, default#3478F6 |
curl --location 'http://127.0.0.1:50325/group/create' \
--header 'Content-Type: application/json' \
--data '{"name":"电商账号","color":"#3478F6"}'Edit Group
idandgroupIdYou can locate groups. Only transmit the fields that need to be changed, except for the positioning field.
curl --location 'http://127.0.0.1:50325/group/update' \
--header 'Content-Type: application/json' \
--data '{"id":"分组ID","name":"重要电商账号","color":"#16A34A"}'Delete Group
curl --location 'http://127.0.0.1:50325/group/delete' \
--header 'Content-Type: application/json' \
--data '{"id":"分组ID"}'Deleting a group will not delete the environment, and the environment under the original group will become ungrouped. The system default group cannot be deleted.
6. Label API
Tags are used for multiple-choice tagging: up to 20 tags can be bound to an environment, throughtagIdsArray binding.
Tag List
curl --location 'http://127.0.0.1:50325/tag/list' \
--header 'Content-Type: application/json' \
--data '{}'Add tags
| field | Type | Required | Explanation |
|---|---|---|---|
name | string | is | 1-50 characters, cannot have the same name under the same account |
color | string | No | #RRGGBB, default#3478F6 |
curl --location 'http://127.0.0.1:50325/tag/create' \
--header 'Content-Type: application/json' \
--data '{"name":"高优先级","color":"#F97316"}'Edit tags
curl --location 'http://127.0.0.1:50325/tag/update' \
--header 'Content-Type: application/json' \
--data '{"id":"标签ID","name":"VIP","color":"#A855F7"}'delete a tap
curl --location 'http://127.0.0.1:50325/tag/delete' \
--header 'Content-Type: application/json' \
--data '{"id":"标签ID"}'Deleting a tag will unlink it from all environments, but it will not delete the environment.
7. Proxy API
The environment can first create reusable proxies and then transmit themproxyIdIt can also be directly transmitted when creating or updating the environmentproxyThe two methods cannot be used simultaneously.
Proxy list
| field | Type | Required | Explanation |
|---|---|---|---|
page | integer | No | Starting from 0 |
pageSize | integer | No | 1-100 |
search | string | No | Search by name or host;nameIt is a compatible alias |
status | string | No | UNCHECKED、AVAILABLE、UNAVAILABLE |
curl --location 'http://127.0.0.1:50325/proxy/list' \
--header 'Content-Type: application/json' \
--data '{"page":0,"pageSize":10,"search":""}'Response returns the current proxy passwordpasswordandhasPasswordIt will not return the server ciphertext.
Add new agent
| field | Type | Required | Explanation |
|---|---|---|---|
name | string | is | Proxy name, 1-80 characters |
protocol | string | is | HTTP、HTTPS、SOCKS5 |
host | string | is | Host name or IP, without protocol, path, and port |
port | integer | is | 1-65535 |
username | string/null | No | Authenticated Username |
password | string/null | No | Authentication password |
curl --location 'http://127.0.0.1:50325/proxy/create' \
--header 'Content-Type: application/json' \
--data '{
"name":"Tokyo Proxy",
"protocol":"SOCKS5",
"host":"proxy.example.com",
"port":1080,
"username":"proxy-user",
"password":"proxy-password"
}'Edit Agent
idandproxyIdAgents can be located. omitpasswordKeep the original password and transfer itnullClear password.
curl --location 'http://127.0.0.1:50325/proxy/update' \
--header 'Content-Type: application/json' \
--data '{"id":"代理ID","host":"new-proxy.example.com","port":1080,"password":"new-password"}'After modifying the protocol, host, port, username, or password, the detection status will be reset toUNCHECKED.
8. Create an environment
Complete field description
| field | Type | Required | Explanation |
|---|---|---|---|
name | string | No | Environment name, up to 80 characters long |
platform | string | No | windows、macos、linux、android、ios; defaultwindows |
remark | string/null | No | Environment remarks, up to 500 characters long |
groupId | string/null | No | Group ID;nullIndicate not grouping |
tagIds | string[] | No | Tag ID array, up to 20 |
accounts | array | No | Account array, up to 20 entries |
cookies | array/object/string/null | No | Recommended writing style, can directly transfer Cookie JSON |
cookieData | string/null | No | Original Cookie Text; andcookieschoose one of the two |
startupUrls | string[] | No | Up to 50 URLs can be opened after startup |
fingerprint | object | No | Partial or complete fingerprint configuration; Automatic completion of omitted items |
proxyId | string/null | Optional conditions | There is already a proxy ID; andproxychoose one of the two |
proxy | object/null | Optional conditions | Directly configure private agents for the environment |
accountsEach item:
| field | Type | Required | Explanation |
|---|---|---|---|
platform | string | is | Platform, for examplegoogle、amazon |
username | string | No | Login account or email |
password | string/null | No | Login password, maximum length of 512 characters |
totpSecret | string/null | No | Base32 format 2FA key |
openOnStart | boolean | No | Whether to open the account page when starting the environment, defaultfalse |
remark | string/null | No | Account remarks, up to 200 characters long |
inlineproxy:
| field | Type | Required | Explanation |
|---|---|---|---|
type | string | is | HTTP、HTTPS、SOCKS5;protocolIt is a compatible alias |
host | string | is | Host orhost:portIPv6 Recommendations[IPv6]:port |
port | integer | Conditionally required | hostRequired when port is not included |
username | string/null | No | Authenticated Username |
password | string/null | No | Authentication password |
Complete creation example
curl --location 'http://127.0.0.1:50325/browser/create' \
--header 'Content-Type: application/json' \
--data '{
"name":"完整环境示例",
"platform":"windows",
"remark":"通过本地 API 创建",
"groupId":"分组ID",
"tagIds":["标签ID1","标签ID2"],
"accounts":[
{
"platform":"google",
"username":"[email protected]",
"password":"account-password",
"totpSecret":null,
"openOnStart":true,
"remark":"主账号"
}
],
"cookies":[
{
"name":"session_id",
"value":"cookie-value",
"domain":".example.com",
"path":"/",
"secure":true,
"httpOnly":true,
"sameSite":"Lax"
}
],
"startupUrls":[
"https://example.com/login",
"https://example.com/dashboard"
],
"fingerprint":{
"timezone":"Asia/Shanghai",
"acceptLanguage":"zh-CN,zh,en"
},
"proxy":{
"type":"HTTP",
"host":"proxy.example.com",
"port":8080,
"username":"proxy-user",
"password":"proxy-password"
}
}'Delete when using an existing proxyproxyWhole paragraph, revised transmission'proxyId': 'Proxy ID already exists'When not using a proxy,proxyandproxyIdDon't spread it.
Cookie format
Recommended for usecookiesDirectly transfer JSON array. Common fields for cookies:name、value、domain、path、secure、httpOnly、expirationDate、sameSite.
If usingcookieDataIt must be a string that can be exported as JSON text by browser extensions Netscapecookies.txt, or request header texta=1; b=2.
NonedomainWhen the cookie is started, the domain name can only be inferred based on the first startup URL. It is recommended to explicitly fill it indomain.
9. Update the environment
Updating the interface only modifies the fields sent; Omitting fields remains unchanged. Positioning supportid、profileId、seq、serialNumberTheserial_number.
Coverage rules:
accountsThe entire group covers,[]Clear all accounts;tagIdsThe entire group covers,[]Clear all tags;cookiesorcookieDataReplace cookies,nullClearing;startupUrlsReplace all startup URLs,[]Clearing;groupId:nullDisgrouping;proxy:nullorproxyId:nullRelease the proxy.
curl --location 'http://127.0.0.1:50325/browser/update' \
--header 'Content-Type: application/json' \
--data '{
"id":"环境ID",
"name":"更新后的环境",
"remark":"完整更新示例",
"groupId":"分组ID",
"tagIds":["标签ID"],
"accounts":[
{
"platform":"google",
"username":"[email protected]",
"password":"new-password",
"openOnStart":false
}
],
"cookies":[
{
"name":"session_id",
"value":"new-cookie-value",
"domain":".example.com",
"path":"/"
}
],
"startupUrls":["https://example.com/dashboard"],
"proxyId":"已有代理ID"
}'Modify the proxy of the running environment Cookie、 After starting the website or fingerprint, first close the environment and then reopen it.
10. Query Environment
Environmental List
curl --location 'http://127.0.0.1:50325/browser/list' \
--header 'Content-Type: application/json' \
--data '{"page":0,"pageSize":10,"name":"","groupId":"分组ID","tagId":"标签ID"}'Delete unnecessary filtering fields directly.data.listIt is an environment array,data.totalNumIs the total number; Environmental objects includegroupandtags.
Environmental Details
curl --location 'http://127.0.0.1:50325/browser/detail' \
--header 'Content-Type: application/json' \
--data '{"id":"环境ID"}'Details returngroup、tags、fingerprint、proxy、accountCount、hasCookieDataEnvironmental owners will also receivecookieData.
11. Delete, Recycle Bin, and Thoroughly Delete
Delete environment to Recycle Bin
curl --location 'http://127.0.0.1:50325/browser/delete' \
--header 'Content-Type: application/json' \
--data '{"id":"环境ID"}'If the environment is running, the browser will be closed first and then moved to the recycle bin. This operation can be restored.
Recycle Bin List
curl --location 'http://127.0.0.1:50325/browser/recycle/list' \
--header 'Content-Type: application/json' \
--data '{"page":0,"pageSize":10,"search":"","sort":"desc"}'Environment in the listidCan be used for recovery or complete deletion.
Restore the environment
curl --location 'http://127.0.0.1:50325/browser/restore' \
--header 'Content-Type: application/json' \
--data '{"id":"回收站环境ID"}'Recovery must use the environment ID, not just the environment serial number.
Completely delete the environment
Single:
curl --location 'http://127.0.0.1:50325/browser/delete/permanent' \
--header 'Content-Type: application/json' \
--data '{"id":"回收站环境ID"}'Batch
curl --location 'http://127.0.0.1:50325/browser/delete/permanent' \
--header 'Content-Type: application/json' \
--data '{"ids":["环境ID1","环境ID2"]}'idsUp to 500. Only environments that are already in the recycle bin will be deleted,data.purgedIt is the actual number of deletions.
Completely deleting is irreversible, and the environment configuration, account, and cookies will be permanently deleted.
12. Open, query, and close the environment
Open the environment
curl --location 'http://127.0.0.1:50325/browser/open' \
--header 'Content-Type: application/json' \
--data '{"id":"环境ID","headless":false}'headlessIt must be a JSON boolean value. Response returnpid、wsThehttp、headless;wsCan be handed over to Playwright or Puppet.
Operating status
curl --location 'http://127.0.0.1:50325/browser/active' \
--header 'Content-Type: application/json' \
--data '{"id":"环境ID"}'Parameterless invocation/browser/activeReturn to all running environments. Running list:
curl --location 'http://127.0.0.1:50325/browser/running' \
--header 'Content-Type: application/json' \
--data '{}'PID and CDP ports
curl --location 'http://127.0.0.1:50325/browser/pids' \
--header 'Content-Type: application/json' \
--data '{"ids":["环境ID1","环境ID2"]}'curl --location 'http://127.0.0.1:50325/browser/pids/all' \
--header 'Content-Type: application/json' \
--data '{}'curl --location 'http://127.0.0.1:50325/browser/ports' \
--header 'Content-Type: application/json' \
--data '{}'Close the environment
curl --location 'http://127.0.0.1:50325/browser/close' \
--header 'Content-Type: application/json' \
--data '{"id":"环境ID"}'Close all:
curl --location 'http://127.0.0.1:50325/browser/close/all' \
--header 'Content-Type: application/json' \
--data '{}'Closing all will affect all current work windows. Please save the page content before executing.
13. Postman usage
Import the help provided by the Help Center https://www.postman.com/ovo-desktop-api/workspace/ovodesktop-api-example/collection/57777046-8485fa5f-3e60-4da9-8b59-538ae4703339?action=share&source=copy-link&creator=57777046 :
Confirm in the collection Variables
baseUrl;Run a 'health check';
Run the 'Environment List' to confirm that the session has been restored;
Each request comes with purpose, field description, complete JSON body, and cURL example;
For a complete demonstration, simply run it in folder order without understanding the environment sequence or manually maintaining complex variables;
Before executing 'completely delete environment', confirm that the target is a test environment that allows permanent deletion.
14. Common errors
| phenomenon | Reasons and Handling |
|---|---|
ECONNREFUSED | Client not running, local API not started, or port error |
| Health check successful, environmental interface failed | Wait for account session and workspace to be restored and retry |
ID or seq is required | The request does not have an environment positioning field. It is recommended to send itid |
| Group or label does not exist | First, call the list interface to confirm that the ID belongs to the current account |
Invalid proxy parameter | Check the protocol, host, and port, and confirm that there is no simultaneous transmissionproxyandproxyId |
| Running environment cannot switch headless | Close the environment first, then open it in the new mode |
Completely delete and returnpurged: 0 | The environment is not in the recycle bin, the ID does not belong to the current account or has been deleted |