Web Client Interface
Section titled “Web Client Interface”The versioned GET /api/v1/display/ endpoint serves the Hoody HTML5 Display client with URL-based configuration. Use this endpoint when you need a RESTful, versioned URL for the client (such as behind an API gateway), instead of the service root / path that browsers normally load.
Access the HTML5 Display client
Section titled “Access the HTML5 Display client”GET /api/v1/display/
Section titled “GET /api/v1/display/”Serves the HTML5 Display client web interface with optional URL-based configuration. The page loads its scripts and styles by relative path, so they resolve only from the service root: in a browser, open / instead of /api/v1/display/.
Use this endpoint for:
- RESTful API compliance
- Versioned client access
- API gateway integrations
The endpoint accepts the same URL parameters as the root path for full client customization.
Example:
https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/?displayId=10&ssl=true&sound=true&reconnect=trueParameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
displayId | query | integer | No | Display ID to use (overrides the *-display-N.* hostname pattern). Valid range: 1 to 999999. |
node | query | string | No | Hoody node identifier (e.g., example-1, example-2). |
project_id | query | string | No | Hoody project ID. |
container_id | query | string | No | Hoody container ID. |
url_display_id | query | string | No | Display ID for URL construction. |
ssl | query | boolean | No | Use SSL/TLS for the WebSocket connection. Default: true. |
webtransport | query | boolean | No | Use WebTransport (HTTP/3) instead of WebSocket. Default: false. |
sound | query | boolean | No | Enable audio forwarding. Default: true. |
audio_codec | query | string | No | Preferred audio codec. |
reconnect | query | boolean | No | Auto-reconnect on connection loss. Default: true. |
Response
Section titled “Response”The HTML5 Display client interface loads successfully. The response body is an HTML document that the browser renders to bootstrap the client.
<!DOCTYPE html><html><head><title>Hoody Display Client</title></head><body> <!-- Display HTML5 client interface --></body></html>Example request
Section titled “Example request”curl -G "https://{projectId}-{containerId}-display-1.{server}.containers.hoody.com/api/v1/display/" \ --data-urlencode "displayId=10" \ --data-urlencode "node={server}" \ --data-urlencode "project_id={projectId}" \ --data-urlencode "container_id={containerId}" \ --data-urlencode "url_display_id=display-1" \ --data-urlencode "ssl=true" \ --data-urlencode "webtransport=false" \ --data-urlencode "sound=true" \ --data-urlencode "audio_codec=opus" \ --data-urlencode "reconnect=true"import { HoodyClient } from 'hoody-sdk';
const hoody = await HoodyClient.login('https://api.hoody.com', { username, password });const box = await hoody.withContainer(containerId);
// Builds the URL of display 1; nothing is fetched. Open it in a browser or a frame.const url = box.embeds.display.client(undefined, { index: 1, query: { sound: true, audio_codec: 'opus', reconnect: true },});client.embeds.display.client() refuses displayId, node, project_id, container_id, url_display_id, ssl, webtransport (the embed catalog marks them as not embeddable): add them to the URL yourself, as in the Browser tab.