Skip to content

The Terminal System Monitoring API exposes system-level operations on a Hoody node. Use these endpoints to inspect running processes, audit network listeners, query resource utilization, manage connected displays, and control system power. All endpoints require an authenticated Hoody session except /api/v1/terminal/health, which is unauthenticated and always returns 200 when the service is running.

Returns the standardized 9-field health response. Always returns HTTP 200 with application/json when the terminal service is up. Unauthenticated.

This endpoint takes no parameters.

Terminal window
curl -X GET https://api.hoody.com/api/v1/terminal/health

Returns comprehensive system statistics including CPU usage, memory, network interfaces, uptime, and disk usage.

This endpoint takes no parameters.

Terminal window
curl -X GET https://api.hoody.com/api/v1/system/resources \
-H "Authorization: Bearer <token>"

Returns the JSON array of daemon programs from the hoody-daemon configuration.

This endpoint takes no parameters.

Terminal window
curl -X GET https://api.hoody.com/api/v1/system/daemon \
-H "Authorization: Bearer <token>"

Returns information about connected displays from the external display script.

This endpoint takes no parameters.

Terminal window
curl -X GET https://api.hoody.com/api/v1/system/displays \
-H "Authorization: Bearer <token>"

Returns a JSON array of all processes with CPU, memory, and state information. Supports filtering, sorting, and limiting the result set.

NameInTypeRequiredDescription
sortquerystringNoSort by field. Allowed values: cpu, memory, pid, name. Default: pid
limitqueryintegerNoMaximum number of processes to return. Default: returns all
filterquerystringNoFilter by process name (substring match, case-insensitive)
Terminal window
curl -X GET "https://api.hoody.com/api/v1/system/processes?sort=cpu&limit=10&filter=nginx" \
-H "Authorization: Bearer <token>"

Returns detailed information about a specific process, including all stats, cmdline, environment, and open files.

NameInTypeRequiredDescription
pidpathintegerYesProcess ID
Terminal window
curl -X GET https://api.hoody.com/api/v1/system/processes/1234 \
-H "Authorization: Bearer <token>"

Returns a JSON array of all TCP/UDP listening ports, including process information. Supports extensive filtering to narrow the result set.

NameInTypeRequiredDescription
protocolquerystringNoFilter by protocol: tcp, udp, or comma-separated list
userquerystringNoFilter by user (exact match)
portqueryintegerNoFilter by specific port number
ipquerystringNoFilter by IP address (comma-separated list)
skip_programquerystringNoExclude specific programs (comma-separated list)
http_onlyquerybooleanNoOnly return HTTP services
hoody_onlyquerybooleanNoOnly return Hoody Kit services
Terminal window
curl -X GET "https://api.hoody.com/api/v1/system/ports?protocol=tcp&http_only=true&limit=50" \
-H "Authorization: Bearer <token>"

Send a Unix signal to one or more processes by PID or name. Supports all standard signals (SIGTERM, SIGKILL, SIGSTOP, SIGCONT, etc.). When targeting by name, the signal is sent to all matching processes.

This endpoint takes no path or query parameters.

NameTypeRequiredDescription
pidintegerNoProcess ID to signal (mutually exclusive with name)
namestringNoProcess name to signal — signals ALL matching processes (mutually exclusive with pid)
signalstring | integerNoSignal to send. String form accepts SIGTERM, TERM, 15, etc. (with or without SIG prefix). Integer form accepts any value in [0, NSIG) including realtime signals SIGRTMIN..SIGRTMAX (typically 34..64 on Linux), which have no portable string names.
forcebooleanNoShorthand for SIGKILL (true) or SIGTERM (false) — overrides the signal parameter
{
"pid": 1234,
"signal": "SIGTERM"
}
Terminal window
curl -X POST https://api.hoody.com/api/v1/system/process/signal \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"pid": 1234, "signal": "SIGTERM"}'

Initiate a system reboot with optional delay. Requires root or sudo privileges — the Linux kernel enforces the permission check. Because shutdown(8) schedules in whole minutes, the server rounds the delay up to the nearest minute and reports the actual scheduled value as effective_minutes in the response.

NameInTypeRequiredDescription
delayqueryintegerNoDelay in seconds before reboot, range 0..86400. Default: 0 (immediate)
Terminal window
curl -X POST "https://api.hoody.com/api/v1/system/reboot?delay=60" \
-H "Authorization: Bearer <token>"

Initiate a system shutdown with optional delay. Requires root or sudo privileges — the Linux kernel enforces the permission check. The delay is rounded up to the nearest minute by shutdown(8), and the actual scheduled value is reported as effective_minutes in the response.

NameInTypeRequiredDescription
delayqueryintegerNoDelay in seconds before shutdown, range 0..86400. Default: 0 (immediate)
Terminal window
curl -X POST "https://api.hoody.com/api/v1/system/shutdown?delay=300" \
-H "Authorization: Bearer <token>"