Skip to content
Hoody.com

Use these endpoints to monitor the browser server, inspect performance metrics, and retrieve buffered console and network activity from running instances. History operations read from and write to persistent storage that survives instance restarts.

All browser endpoints are reached through the instance’s container hostname. Select the instance by the browser-{N} segment in the hostname; the platform derives the instance’s port and display from it. SDK and CLI clients send a browser_id to the matching browser-<N> host; a browser_id that names a different instance than the hostname is refused with 400 INSTANCE_SELECTOR_CONFLICT. On /history it also filters the entries.

Returns a standardized 9-field health contract for the hoody-browser service.

This endpoint takes no parameters.

Terminal window
curl https://{projectId}-{containerId}-browser-1.{server}.containers.hoody.com/api/v1/browser/health
{
"status": "ok",
"service": "hoody-browser",
"built": "2026-01-15T08:00:00.000Z",
"started": "2026-01-15T12:34:56.789Z",
"memory": {
"rss": 67108864,
"heap": 16777216
},
"fds": 42,
"pid": 1234,
"ip": "10.0.0.5",
"userAgent": "hoody-sdk/1.0"
}

Returns detailed metrics for the server and all active instances, including age buckets, oldest and newest instance ages in milliseconds, system information, and a server-side timestamp.

This endpoint takes no parameters.

Terminal window
curl https://{projectId}-{containerId}-browser-1.{server}.containers.hoody.com/api/v1/browser/metrics
{
"instances": {
"total": 3,
"active": 2,
"byAge": {
"lessThan1Min": 1,
"lessThan5Min": 1,
"lessThan15Min": 0,
"moreThan15Min": 1
},
"oldestInstance": 1800000,
"newestInstance": 15000
},
"system": {
"uptime": 86400,
"memory": {},
"cpu": {},
"platform": "linux",
"nodeVersion": "v20.10.0"
},
"configuration": {},
"timestamp": "2026-01-15T12:34:56.789Z"
}

Returns buffered browser console messages (console.log, console.error, page errors) from every tab, including tabs the page or a CDP client opened, from their first load on. Keeps the last 500 entries.

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.
tabIdqueryintegerNoThe ID of the tab to read from (from /tabs). Omitted: entries from every tab are returned. Supplied: exactly that tab, an unknown id returns 404 TAB_NOT_FOUND (with details.openTabs) and a malformed id returns 400 VALIDATION_ERROR; the request never falls back to another tab. Repeating this key in the query string is a 400 VALIDATION_ERROR (tabId must not be repeated).
startquerybooleanNoControls instance creation. Three distinct states: omitted (create one if this deployment creates instances automatically), false (never create one), or true (create one even where automatic creation is turned off). The server branches on the environment variable HOODY_DISABLE_AUTO_START. Declares no schema default.
typequerystringNoFilter by message type (log, error, warning, info, etc.). Repeating this key in the query string is a 400 VALIDATION_ERROR (type must not be repeated).
sincequerystringNoOnly return entries at or after this time, an ISO 8601 date or date-time like 2026-10-05T12:00:00Z. Any other value (an epoch number, a word like yesterday) is a 400 VALIDATION_ERROR naming since, never an unfiltered list. Repeating this key in the query string is a 400 VALIDATION_ERROR (since must not be repeated).
clearquerybooleanNo (default: false)Clear the buffer after reading. true or false; any other value is a 400 VALIDATION_ERROR naming clear. Repeating this key in the query string is a 400 VALIDATION_ERROR (clear must not be repeated).
Terminal window
curl 'https://{projectId}-{containerId}-browser-1.{server}.containers.hoody.com/api/v1/browser/console?tabId=0&type=error'
{
"logs": [
{
"timestamp": "2026-01-15T12:34:56.789Z",
"type": "log",
"text": "Page loaded",
"tabId": 0
}
],
"count": 1,
"capture": "available"
}

Returns buffered network request and response entries from every tab, including the first document request of a tab the page or a CDP client opened. Keeps the last 500 entries.

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.
tabIdqueryintegerNoThe ID of the tab to read from (from /tabs). Omitted: entries from every tab are returned. Supplied: exactly that tab, an unknown id returns 404 TAB_NOT_FOUND (with details.openTabs) and a malformed id returns 400 VALIDATION_ERROR; the request never falls back to another tab. Repeating this key in the query string is a 400 VALIDATION_ERROR (tabId must not be repeated).
startquerybooleanNoControls instance creation. Three distinct states: omitted (create one if this deployment creates instances automatically), false (never create one), or true (create one even where automatic creation is turned off). The server branches on the environment variable HOODY_DISABLE_AUTO_START. Declares no schema default.
sincequerystringNoOnly return entries at or after this time, an ISO 8601 date or date-time like 2026-10-05T12:00:00Z. Any other value (an epoch number, a word like yesterday) is a 400 VALIDATION_ERROR naming since, never an unfiltered list. Repeating this key in the query string is a 400 VALIDATION_ERROR (since must not be repeated).
clearquerybooleanNo (default: false)Clear the buffer after reading. true or false; any other value is a 400 VALIDATION_ERROR naming clear. Repeating this key in the query string is a 400 VALIDATION_ERROR (clear must not be repeated).
Terminal window
curl 'https://{projectId}-{containerId}-browser-1.{server}.containers.hoody.com/api/v1/browser/network?tabId=0'
{
"logs": [
{
"timestamp": "2026-01-15T12:34:56.789Z",
"method": "GET",
"url": "https://example.com/",
"status": 200,
"resourceType": "Document",
"tabId": 0
}
],
"count": 1
}

Returns paginated browsing history entries with optional filters. Reads from persistent storage. History is recorded for all navigations including API-triggered and manual browsing.

Through a browser-{N} service hostname the history is browser N’s only: browser_id defaults to N, and any other value is refused with 400 INSTANCE_SELECTOR_CONFLICT. Against a bare server, omitting browser_id returns every instance’s history.

NameInTypeRequiredDescription
sincequerystringNoReturn entries after this ISO 8601 timestamp
domainquerystringNoFilter by domain (exact match)
browser_idquerystringNoFilter by browser ID. Through a browser-{N} service hostname it may only be N (the default there).
limitqueryintegerNo (default: 50)Maximum entries to return (1-500)
offsetqueryintegerNo (default: 0)Number of entries to skip for pagination
Terminal window
curl 'https://{projectId}-{containerId}-browser-1.{server}.containers.hoody.com/api/v1/browser/history?limit=20&offset=0'
{
"entries": [
{
"id": "1709913600000-a3f2",
"url": "https://example.com",
"requestedUrl": "https://example.com",
"title": "Example Domain",
"domain": "example.com",
"tabId": 0,
"browserId": "1",
"browserPort": 9223,
"sessionId": "s-1709913600",
"httpStatus": 200,
"error": null,
"source": "api",
"timestamp": "2026-01-15T12:34:56.789Z",
"created": true,
"reused": false
}
],
"total": 1,
"has_more": false,
"limit": 20,
"offset": 0
}

Deletes browsing history entries matching the given filters.

NameInTypeRequiredDescription
beforequerystringNoDelete entries before this ISO 8601 timestamp
browser_idquerystringNoDelete entries for a specific browser ID only. Through a browser-{N} service hostname it may only be N (the default there).
Terminal window
curl -X DELETE 'https://{projectId}-{containerId}-browser-1.{server}.containers.hoody.com/api/v1/browser/history?before=2026-01-01T00:00:00Z'
{
"deleted": 42
}