Skip to content
Hoody.com

The Instance Management endpoints control the lifecycle of browser instances. Use /start to create a new instance or retrieve metadata for an existing one, /restart to stop and recreate an instance (inheriting the options the instance was created with), and /stop to terminate an instance. Browser state (cookies, tabs, console and network buffers) is reset on /restart.

Creates a new browser instance or returns metadata for an existing one. This is the primary endpoint for explicitly creating browser instances.

Calling /start on a running instance returns its current metadata and ignores new options, except that a different stealth value is rejected with 409 INSTANCE_BACKEND_MISMATCH.

NameInTypeRequiredDescription
browser_idquerystringNoSelects the instance: SDK and CLI clients send the request to the browser-<N> service host. A value that conflicts with the host’s instance is refused with 400 INSTANCE_SELECTOR_CONFLICT. Against a bare server it selects nothing; address instances there with browser_host + browser_port.
chromiumVersionquerystringNoChromium/Chrome version selection. Applies only when browser=chromium. Supported formats: full version (136.0.7103.113), major version (136), channel tag (stable, beta, dev, canary). The request blocks until the requested build is available on the server.
fingerprintIdquerystringNoBase fingerprint profile id. The server uses the context and launch defaults of this profile, then applies any request overrides over them. An unknown id starts with an empty profile.
useRemoteDebuggingPortquerybooleanNoIf true, the child process launches Chromium with --remote-debugging-port and populates webSocketDebuggerUrl in metadata responses. Default: true.
remoteDebuggingPortqueryintegerNoIgnored. The kit always assigns the DevTools port itself; read the assigned URLs from /devtools-url or the instance metadata. Kept only so older clients do not fail validation.
remoteDebuggingAddressquerystringNoInterface address the DevTools port binds to. Defaults to 0.0.0.0; the port is only reachable through the container proxy’s cdp-{N} relay.
extensionsquerystringNoComma-separated list (or JSON array string) of absolute extension directory paths. Requires showBrowser=true (headful mode) and will launch a persistent profile.
extensionsDirquerystringNoDirectory containing extension subfolders to load. Requires showBrowser=true and will launch a persistent profile.
extensionsStoreIdsquerystringNoComma-separated list (or JSON array string) of Chrome Web Store extension IDs to download and load. Requires showBrowser=true and works only with browser=chromium. Downloads of the same extension are serialized across instances; an instance that waits more than 5 minutes for another instance’s download fails with a “try again later” error.
proxyServerquerystringNoProxy server URL (http://, https://, socks5://, socks5h://). Example: socks5://127.0.0.1:9050.
proxyUsernamequerystringNoProxy username (if required).
proxyPasswordquerystringNoProxy password (if required).
proxyBypassquerystringNoComma-separated list of hosts that should bypass the proxy.
enableQuicquerybooleanNoEnable QUIC/HTTP3 transport. Defaults to false (QUIC blocked). Use enableQuic=true to re-enable QUIC.
enableDnsOverHttpsquerybooleanNoEnable DNS-over-HTTPS for browser DNS resolution. Defaults to true.
dnsOverHttpsUrlquerystringNoDoH resolver URL (HTTPS only). Defaults to https://cloudflare-dns.com/dns-query.
displayqueryinteger | stringNoX display number or identifier for headful mode. Required when showBrowser=true and no DISPLAY environment variable is set on the server.
showBrowserquerybooleanNoWhether to run the browser headful (visible). Defaults to true.
sessionNamequerystringNoCustom session name for identifying this browser instance.
timezoneIdquerystringNoIANA timezone identifier for browser geolocation.
localequerystringNoBCP 47 language tag for browser locale.
userAgentquerystringNoUser agent string to apply to the browser context.
viewportquerystringNoViewport configuration as JSON string. Example: {"width":1920,"height":1080,"deviceScaleFactor":1}. Pass null to disable fixed-viewport emulation entirely.
noViewportquerybooleanNoSet to true to disable fixed-viewport emulation (alias for viewport=null). Default: false. Cannot be combined with a fixed viewport object.
geolocationquerystringNoGeolocation configuration as JSON string. Example: {"latitude":40.7128,"longitude":-74.0060,"accuracy":100}. Anything other than a JSON object (null, an array, a number) is a 400 VALIDATION_ERROR.
launchArgumentsqueryarrayNoAdditional Chromium/Firefox command-line arguments. Pass the query key repeatedly (launchArguments=--a&launchArguments=--b) or a single JSON array string (launchArguments=["--a","--b"]). Entries must be strings (400 otherwise).
browserquerystringNoBrowser engine to use (chromium or firefox). chrome is accepted as an alias of chromium. Fixed for the life of the instance. Default: chromium.
firefoxVersionquerystringNoFirefox version label (informational only). Playwright-managed Firefox builds are used by default. If omitted, a Playwright Firefox build is downloaded on demand.
firefoxExecutablePathquerystringNoAbsolute path to a custom Firefox executable (overrides download).
showDevtoolsquerybooleanNoWhether to open DevTools on launch (Chromium only). Default: false.
userProfilequeryobjectNoOptional user profile object (JSON string): locale, timezoneId, userAgentString, geolocation and deviceProfile.viewport. Precedence for each field: the top-level request option > userProfile > the fingerprint profile > the engine default.
stealthquerybooleanNoLaunch Chromium in stealth mode using Patchright (anti-detection patches). Only applies to browser=chromium. Ignored for Firefox. Defaults to true. Bare ?stealth is treated as true.
iframequerybooleanNoEnable or disable the full-page display iframe on the root URL. When enabled (default), navigating to / serves an HTML page with an iframe pointing to the Hoody display URL. Default: true.
iframe_urlquerystringNoExplicit URL for the display iframe. If not provided, the URL is auto-detected from the Host header subdomain pattern.
maximize_new_windowsquerybooleanNoControl the maximize_new_windows flag stamped onto generated display URLs (iframe pages, status pages, iframe_url metadata). The flag is always explicit (true or false); when true the hoody-display client opens new top-level app windows maximized. Default: true. Explicit iframe_url values are never modified.
Terminal window
curl -X GET "https://{projectId}-{containerId}-browser-1.{server}.containers.hoody.com/api/v1/browser/start?locale=en-US&timezoneId=America/New_York" \
-H "Authorization: Bearer <token>"
{
"sessionId": "f8e9d7c6-b5a4-3210-9876-543210fedcba",
"sessionName": "my-automation-session",
"browser_host": "0.0.0.0",
"browser_port": 9223,
"quicDisabled": true,
"http3Disabled": true,
"dnsOverHttpsEnabled": true,
"dnsOverHttpsUrl": "https://cloudflare-dns.com/dns-query",
"browserName": "chromium",
"browserFullVersion": "136.0.7103.113",
"browserExecutablePath": "/hoody/storage/hoody-browser/chrome/chrome/linux-136.0.7103.113/chrome-linux64/chrome",
"operatingSystemName": "Linux",
"operatingSystemPlatform": "linux",
"operatingSystemVersion": "6.8.0",
"userAgentString": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",
"timezoneId": "America/New_York",
"locale": "en-US",
"viewport": {
"width": 1920,
"height": 1080
},
"renderingEngine": "chromium",
"renderingEngineVersion": "136.0.7103.113",
"useRemoteDebuggingPort": true,
"remoteDebuggingAddress": "0.0.0.0",
"webSocketDebuggerUrl": "wss://{projectId}-{containerId}-cdp-1.{server}.containers.hoody.com/devtools/browser/f8e9d7c6-b5a4-3210-9876-543210fedcba",
"devtoolsHttpUrl": "https://{projectId}-{containerId}-cdp-1.{server}.containers.hoody.com/json/version",
"devtoolsFrontendUrl": "https://{projectId}-{containerId}-cdp-1.{server}.containers.hoody.com",
"iframe_url": "https://{projectId}-{containerId}-display-501.{server}.containers.hoody.com/?maximize_new_windows=true",
"extensions": [],
"tabs": [
{
"id": 1,
"url": "about:blank",
"isActive": true
}
]
}

Stops and recreates a browser instance. The rebuild inherits the options the instance was created with (engine, headless mode, locale, viewport, proxy, …); any parameter passed on this request overrides the inherited value, except the engine: a request that would switch between Patchright and Playwright answers 409 INSTANCE_BACKEND_MISMATCH and changes nothing. Firefox always runs on Playwright, so browser=firefox is accepted only for an instance created with stealth=false (or already Firefox); a default (stealth) instance is refused, even with stealth=false added. To move a default instance to Firefox, /stop it and call /start?browser=firefox. Browser state (cookies, tabs, console and network buffers) is reset.

NameInTypeRequiredDescription
browser_idquerystringNoSelects the instance: SDK and CLI clients send the request to the browser-<N> service host. A value that conflicts with the host’s instance is refused with 400 INSTANCE_SELECTOR_CONFLICT. Against a bare server it selects nothing; address instances there with browser_host + browser_port.
startquerybooleanNoControls instance creation behavior. Three states, all distinct: omitted means “create one if this deployment creates instances automatically”; false means “never create one”; true means “create one even where automatic creation is turned off”. Because omitting it is not equivalent to sending true, this parameter declares no schema default.
chromiumVersionquerystringNoChromium/Chrome version selection. Applies only when browser=chromium. Supported formats: full version (136.0.7103.113), major version (136), channel tag (stable, beta, dev, canary). The request blocks until the requested build is available on the server.
fingerprintIdquerystringNoBase fingerprint profile id. The server uses the context and launch defaults of this profile, then applies any request overrides over them. An unknown id starts with an empty profile.
useRemoteDebuggingPortquerybooleanNoIf true, the child process launches Chromium with --remote-debugging-port and populates webSocketDebuggerUrl in metadata responses. Default: true.
remoteDebuggingPortqueryintegerNoIgnored. The kit always assigns the DevTools port itself. Kept only so older clients do not fail validation.
remoteDebuggingAddressquerystringNoInterface address the DevTools port binds to. Defaults to 0.0.0.0; the port is only reachable through the container proxy’s cdp-{N} relay.
extensionsquerystringNoComma-separated list (or JSON array string) of absolute extension directory paths. Requires showBrowser=true (headful mode) and will launch a persistent profile.
extensionsDirquerystringNoDirectory containing extension subfolders to load. Requires showBrowser=true and will launch a persistent profile.
extensionsStoreIdsquerystringNoComma-separated list (or JSON array string) of Chrome Web Store extension IDs to download and load (Chromium only). Requires showBrowser=true. Downloads of the same extension are serialized across instances; an instance that waits more than 5 minutes for another instance’s download fails with a “try again later” error.
proxyServerquerystringNoProxy server URL (http://, https://, socks5://, socks5h://).
proxyUsernamequerystringNoProxy username (if required).
proxyPasswordquerystringNoProxy password (if required).
proxyBypassquerystringNoComma-separated list of hosts that should bypass the proxy.
enableQuicquerybooleanNoEnable QUIC/HTTP3 transport. Defaults to false (QUIC blocked).
enableDnsOverHttpsquerybooleanNoEnable DNS-over-HTTPS for browser DNS resolution. Defaults to true.
dnsOverHttpsUrlquerystringNoDoH resolver URL (HTTPS only). Defaults to https://cloudflare-dns.com/dns-query.
displayqueryinteger | stringNoX display number or identifier for headful mode. Required when showBrowser=true and no DISPLAY environment variable is set on the server.
showBrowserquerybooleanNoWhether to run the browser headful (visible). Defaults to true.
sessionNamequerystringNoCustom session name for identifying this browser instance.
timezoneIdquerystringNoIANA timezone identifier for browser geolocation.
localequerystringNoBCP 47 language tag for browser locale.
userAgentquerystringNoUser agent string to apply to the browser context.
viewportquerybrowser_ViewportNoViewport configuration as JSON string. Example: {"width":1920,"height":1080,"deviceScaleFactor":1}. Pass null to disable fixed-viewport emulation entirely.
noViewportquerybooleanNoSet to true to disable fixed-viewport emulation (alias for viewport=null). Default: false. Cannot be combined with a fixed viewport object.
geolocationquerybrowser_GeolocationNoGeolocation configuration as JSON string. Example: {"latitude":40.7128,"longitude":-74.0060,"accuracy":100}. Anything other than a JSON object is a 400 VALIDATION_ERROR.
launchArgumentsqueryarrayNoAdditional Chromium/Firefox command-line arguments. Pass the query key repeatedly or a single JSON array string. Entries must be strings (400 otherwise).
browserquerystringNoBrowser engine to use (chromium or firefox). chrome is accepted as an alias of chromium. Fixed for the life of the instance. Default: chromium.
firefoxVersionquerystringNoFirefox version label (informational only). Playwright-managed Firefox builds are used by default.
firefoxExecutablePathquerystringNoAbsolute path to a custom Firefox executable (overrides download).
showDevtoolsquerybooleanNoWhether to open DevTools on launch (Chromium only). Default: false.
userProfilequeryobjectNoOptional user profile object (JSON string): locale, timezoneId, userAgentString, geolocation and deviceProfile.viewport. Precedence: top-level request option > userProfile > fingerprint profile > engine default.
stealthquerybooleanNoLaunch Chromium in stealth mode using Patchright. Only applies to browser=chromium. Ignored for Firefox. Defaults to true. Bare ?stealth is treated as true.
iframequerybooleanNoEnable or disable the full-page display iframe on the root URL. Default: true.
iframe_urlquerystringNoExplicit URL for the display iframe.
maximize_new_windowsquerybooleanNoControl the maximize_new_windows flag stamped onto the generated display URL. Default: true.
Terminal window
curl -X GET "https://{projectId}-{containerId}-browser-1.{server}.containers.hoody.com/api/v1/browser/restart?locale=en-US" \
-H "Authorization: Bearer <token>"
{
"message": "Restarted",
"meta": {
"engine": "playwright",
"headless": false,
"browser_host": "127.0.0.1",
"browser_port": 9223,
"sessionId": "7a1a3e23d6b8b4f4a9e2",
"sessionName": "7a1a3e23d6b8b4f4a9e2",
"browserName": "chromium",
"browserFullVersion": "136.0.7103.113"
}
}

Stops an active browser instance. This terminates the child process and releases its resources.

NameInTypeRequiredDescription
browser_idquerystringNoSelects the instance: SDK and CLI clients send the request to the browser-<N> service host. A value that conflicts with the host’s instance is refused with 400 INSTANCE_SELECTOR_CONFLICT. Against a bare server it selects nothing; address instances there with browser_host + browser_port.
Terminal window
curl -X GET "https://{projectId}-{containerId}-browser-1.{server}.containers.hoody.com/api/v1/browser/stop" \
-H "Authorization: Bearer <token>"
{
"message": "Stopped",
"meta": {
"engine": "playwright",
"headless": false,
"browser_host": "127.0.0.1",
"browser_port": 9223,
"sessionId": "7a1a3e23d6b8b4f4a9e2",
"sessionName": "7a1a3e23d6b8b4f4a9e2",
"browserName": "chromium",
"browserFullVersion": "136.0.7103.113"
}
}