Skip to content
Hoody.com

Introspection, tab management, viewport control, and cookie management for running browser instances. These endpoints operate on a specific browser instance within a container and require the browser_id (0-based index) or browser_host/browser_port pair to identify the target.


Returns detailed metadata for a browser instance, including session info, browser/OS details, viewport, geolocation, network policy, open tabs, and DevTools endpoints.

Terminal window
curl -X GET "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/metadata?browser_id=0"
NameInTypeRequiredDescription
browser_idquerystringYesUnique identifier for the browser instance (0-based index)
startquerybooleanNoControls instance creation behavior. Default: instances are created automatically. Set to false to prevent creation. When auto-start is disabled globally: set to true to create an instance. Default: true
{
"engine": "playwright",
"stealth": false,
"headless": true,
"chromiumBuildId": "136.0.7103.113",
"chromiumExecutablePath": "/hoody/storage/hoody-browser/chrome/chrome/linux-136.0.7103.113/chrome-linux64/chrome",
"browserExecutablePath": "/hoody/storage/hoody-browser/chrome/chrome/linux-136.0.7103.113/chrome-linux64/chrome",
"fingerprintId": "default",
"display": ":99",
"iframe_url": null,
"browser_id": "0",
"browser_host": "127.0.0.1",
"browser_port": 35791,
"sessionId": "sess-abc123def4",
"sessionName": "default",
"timezoneId": "America/New_York",
"locale": "en-US",
"geolocation": {
"latitude": 40.7128,
"longitude": -74.006,
"accuracy": 50
},
"viewport": {
"width": 1280,
"height": 800,
"deviceScaleFactor": 1,
"screenWidth": 1280,
"screenHeight": 800
},
"viewportSource": "creation",
"userAgentString": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36",
"browserName": "chromium",
"browserFullVersion": "136.0.7103.113",
"operatingSystemName": "Linux",
"operatingSystemPlatform": "Linux x86_64",
"operatingSystemVersion": "5.15.0",
"renderingEngine": "Blink",
"renderingEngineVersion": "136.0.7103.113",
"webSocketDebuggerUrl": "wss://myproj-abc123def4-cdp-1.us-east-1.containers.hoody.icu/devtools/browser/b6e7d6f4-8d1e-4f3a-9b2c-1d4e5f6g7h8i",
"devtoolsHttpUrl": "https://myproj-abc123def4-cdp-1.us-east-1.containers.hoody.icu/json/version",
"devtoolsFrontendUrl": "https://myproj-abc123def4-cdp-1.us-east-1.containers.hoody.icu",
"extensions": [],
"useRemoteDebuggingPort": true,
"remoteDebuggingPort": 9222,
"remoteDebuggingAddress": "0.0.0.0",
"quicDisabled": true,
"http3Disabled": true,
"dnsOverHttpsEnabled": true,
"dnsOverHttpsUrl": "https://cloudflare-dns.com/dns-query",
"tabs": [
{ "id": 1, "url": "https://example.com" }
]
}

Returns the Chrome DevTools WebSocket URL, HTTP discovery URL, and frontend URL for the specified browser instance. URLs are populated when the instance was launched with useRemoteDebuggingPort=true and browser=chromium; otherwise they are null.

Terminal window
curl -X GET "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/devtools-url?browser_id=0"
NameInTypeRequiredDescription
browser_idquerystringYesUnique identifier for the browser instance (0-based index)
startquerybooleanNoControls instance creation behavior. Default: instances are created automatically. Set to false to prevent creation. When auto-start is disabled globally: set to true to create an instance. Default: true
{
"webSocketDebuggerUrl": "wss://myproj-abc123def4-cdp-1.us-east-1.containers.hoody.icu/devtools/browser/b6e7d6f4-8d1e-4f3a-9b2c-1d4e5f6g7h8i",
"devtoolsHttpUrl": "https://myproj-abc123def4-cdp-1.us-east-1.containers.hoody.icu/json/version",
"devtoolsFrontendUrl": "https://myproj-abc123def4-cdp-1.us-east-1.containers.hoody.icu"
}

Shuts down a specific browser instance.

Terminal window
curl -X GET "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/shutdown?browser_id=0"
NameInTypeRequiredDescription
browser_idquerystringYesUnique identifier for the browser instance (0-based index)
{
"message": "Instance shutdown successfully"
}

Lists all open tabs in a browser instance.

Terminal window
curl -X GET "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/tabs?browser_id=0"
NameInTypeRequiredDescription
browser_idquerystringYesUnique identifier for the browser instance (0-based index)
startquerybooleanNoControls instance creation behavior. Default: instances are created automatically. Set to false to prevent creation. When auto-start is disabled globally: set to true to create an instance. Default: true
[
{ "id": 1, "url": "https://example.com", "isActive": true },
{ "id": 2, "url": "https://docs.example.com", "isActive": false }
]

Closes a specific tab by its tab ID. If no tabId is provided, closes the active tab (unless it is the last remaining tab).

Terminal window
curl -X POST "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/tab/close?browser_id=0" \
-H "Content-Type: application/json" \
-d '{"tabId": 2}'
NameInTypeRequiredDescription
browser_idquerystringYesUnique identifier for the browser instance (0-based index)
startquerybooleanNoControls instance creation behavior. Default: instances are created automatically. Set to false to prevent creation. When auto-start is disabled globally: set to true to create an instance. Default: true
NameTypeRequiredDescription
tabIdintegerNoThe ID of the tab to close
{
"closed": 2,
"remaining": 1
}

The viewport endpoints never auto-create an instance. If browser_host/browser_port are both omitted and exactly one instance is running, it is selected automatically. With zero instances the request returns 404; with more than one it returns 400.

Returns the instance’s current viewport policy without mutating anything. viewport: null means fixed-viewport emulation is disabled (responsive — the page follows the real window size). source is creation until the first successful POST /viewport, then runtime. converged reports whether every live page currently reflects the policy.

Terminal window
curl -X GET "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/viewport"
NameInTypeRequiredDescription
browser_hostquerystringNoInstance host. Optional — must be paired with browser_port; when both are omitted the single running instance is selected (400 AMBIGUOUS_INSTANCE with more than one).
browser_portqueryintegerNoInstance port. Optional — must be paired with browser_host.
{
"viewport": {
"width": 1280,
"height": 800
},
"source": "creation",
"tabs": 2,
"converged": true
}

Mutates the running instance’s viewport policy. The body must contain only viewport (no other keys).

  • Fixed size: {"viewport": {"width": 1280, "height": 800}} — integers 1..8192, no other keys.
  • Responsive: {"viewport": null} — the page follows the real window size.

Applies to every currently-open tab; tabs opened later inherit the policy.

Terminal window
curl -X POST "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/viewport" \
-H "Content-Type: application/json" \
-d '{"viewport": {"width": 1280, "height": 800}}'
NameInTypeRequiredDescription
browser_hostquerystringNoInstance host. Optional — must be paired with browser_port; when both are omitted the single running instance is selected (400 AMBIGUOUS_INSTANCE with more than one).
browser_portqueryintegerNoInstance port. Optional — must be paired with browser_host.
NameTypeRequiredDescription
viewportobjectYesFixed size {width, height} (integers 1..8192, no other keys), or null for responsive.

When viewport is an object, it must contain exactly:

NameTypeRequiredDescription
widthintegerYesViewport width in pixels (1..8192).
heightintegerYesViewport height in pixels (1..8192).
{
"viewport": {
"width": 1280,
"height": 800
},
"source": "runtime",
"tabs": 2,
"converged": true
}

Returns all cookies for the browser context, optionally filtered by URL.

Terminal window
curl -X GET "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/cookies?browser_id=0"
NameInTypeRequiredDescription
browser_idquerystringYesUnique identifier for the browser instance (0-based index)
startquerybooleanNoControls instance creation behavior. Default: instances are created automatically. Set to false to prevent creation. When auto-start is disabled globally: set to true to create an instance. Default: true
urlquerystringNoFilter cookies by URL
{
"cookies": [
{
"name": "session_id",
"value": "s%3Aabc123def4ghi567.SIGNATURE",
"domain": ".example.com",
"path": "/",
"httpOnly": true,
"secure": true
},
{
"name": "preferences",
"value": "theme%3Ddark",
"domain": "example.com",
"path": "/",
"httpOnly": false,
"secure": true
}
]
}

Adds cookies to the browser context. Each cookie requires name, value, and url; domain, path, httpOnly, and secure are optional.

Terminal window
curl -X POST "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/cookies?browser_id=0" \
-H "Content-Type: application/json" \
-d '{
"cookies": [
{
"name": "session_id",
"value": "s%3Aabc123def4ghi567.SIGNATURE",
"url": "https://example.com",
"httpOnly": true,
"secure": true
}
]
}'
NameInTypeRequiredDescription
browser_idquerystringYesUnique identifier for the browser instance (0-based index)
startquerybooleanNoControls instance creation behavior. Default: instances are created automatically. Set to false to prevent creation. When auto-start is disabled globally: set to true to create an instance. Default: true
NameTypeRequiredDescription
cookiesarrayYesCookies to add. Each entry must include name, value, and url; domain, path, httpOnly, and secure are optional.
{
"added": 1
}

Removes all cookies from the browser context.

Terminal window
curl -X DELETE "https://myproj-abc123def4-browser-1.us-east-1.containers.hoody.icu/cookies?browser_id=0"
NameInTypeRequiredDescription
browser_idquerystringYesUnique identifier for the browser instance (0-based index)
startquerybooleanNoControls instance creation behavior. Default: instances are created automatically. Set to false to prevent creation. When auto-start is disabled globally: set to true to create an instance. Default: true
{
"cleared": true
}