Skip to content
Hoody.com

Capture, retrieve, and manage display screenshots, thumbnails, window listings, and clipboard contents from a containerized display instance. Use these endpoints to integrate visual capture into automated workflows, build screenshot-based user interfaces, query historical captures, or inspect the state of windows on the display. All requests target the display service hostname of your container.

Retrieve information about the current display, including the list of available screenshots.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/info" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

List all available screenshots for the current display with their metadata. Useful for screenshot management applications and historical browsing.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/screenshots" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

List the windows currently present on the display, including their geometry, class, focus state, and EWMH states.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/windows?onlyVisible=true" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.
onlyVisiblequerybooleanNoIf true, only include visible windows.

GET /api/v1/display/window/{windowId}/properties

Section titled “GET /api/v1/display/window/{windowId}/properties”

Retrieve extended EWMH properties (such as wmClass, wmName, wmRole, pid, wmState, wmType, and transientFor) for a specific window.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/window/12345/properties" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
windowIdpathstringYesWindow ID (decimal or hex 0x...).
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

Read the text content of the display’s clipboard. The buffer selection defaults to clipboard, but primary and secondary are also supported on X11.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/clipboard?selection=clipboard" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.
selectionquerystringNoClipboard buffer selection. Defaults to "clipboard". One of "clipboard", "primary", "secondary".

Write text to the display’s clipboard.

Terminal window
curl -X POST "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/clipboard" \
-H "Authorization: Bearer $HOODY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"text": "Copied via API",
"selection": "clipboard"
}'
NameInTypeRequiredDescription
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.
NameTypeRequiredDescription
textstringYesClipboard text content. Maximum length 1048576 characters.
selectionstringNoClipboard buffer selection. Defaults to "clipboard". One of "clipboard", "primary", "secondary".

Capture a fresh screenshot of the display and return the image. Returns binary PNG by default; pass base64=true to receive a base64-encoded JSON envelope.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/screenshot?base64=true" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
base64querybooleanNoReturn base64-encoded JSON response instead of binary image. Useful for AI agents and systems that can’t handle binary data.
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

GET /api/v1/display/screenshot/{timestamp}

Section titled “GET /api/v1/display/screenshot/{timestamp}”

Retrieve a previously captured screenshot by its Unix timestamp.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/screenshot/1749541160?base64=true" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
timestamppathstringYesUnix timestamp of the screenshot. Use the timestamp field returned by screenshot metadata/list endpoints. Must be numeric only for security.
base64querybooleanNoReturn base64-encoded JSON response instead of binary image. Useful for AI agents and systems that can’t handle binary data.
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

Capture a new screenshot and return only the metadata, without the image payload.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/screenshot/info" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

Return the most recently captured screenshot.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/screenshot/last?base64=true" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
base64querybooleanNoReturn base64-encoded JSON response instead of binary image. Useful for AI agents and systems that can’t handle binary data.
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

Return metadata for the most recent screenshot without downloading the image payload.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/screenshot/last/info" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

Capture a new screenshot and return the thumbnail version (320x180 scaled). Returns binary PNG by default; pass base64=true to receive a base64-encoded JSON envelope.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/thumbnail?base64=true" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
base64querybooleanNoReturn base64-encoded JSON response instead of binary image. Useful for AI agents and systems that can’t handle binary data.
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

Retrieve the thumbnail for a specific screenshot by its Unix timestamp.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/thumbnail/1749541160?base64=true" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
timestamppathstringYesUnix timestamp of the screenshot. Use the timestamp field returned by screenshot metadata/list endpoints. Must be numeric only for security.
base64querybooleanNoReturn base64-encoded JSON response instead of binary image. Useful for AI agents and systems that can’t handle binary data.
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.

Return the thumbnail of the most recent screenshot.

Terminal window
curl -X GET "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/thumbnail/last?base64=true" \
-H "Authorization: Bearer $HOODY_TOKEN"
NameInTypeRequiredDescription
base64querybooleanNoReturn base64-encoded JSON response instead of binary image. Useful for AI agents and systems that can’t handle binary data.
displayIdqueryintegerNoDisplay ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1-999999.