Skip to content
Hoody.com

Proxy aliases replace the default {projectId}-{containerId}-{service}-{instance} segment of a container URL with a memorable, custom label. Use these endpoints to list, create, inspect, update, toggle, and delete custom aliases for containers you own. Each alias points at a specific program running inside the target container, either a built-in Hoody service (terminal, files, code, browser, agent, display, and so on) or a transport protocol (http, https, ssh) addressed at a TCP port inside the container.

Without an alias, a container URL looks like https://{projectId}-{containerId}-{service}-{instance}.{server}.containers.hoody.com/. With an alias, it becomes https://{alias}.{server}.containers.hoody.com/, hiding the underlying IDs from anyone you share the link with.

GET /api/v1/proxy/aliases

Returns every proxy alias on your account. Narrow the result set with the project_id, container_id, realm_id, enabled, and expired query parameters.

NameInTypeRequiredDescription
project_idquerystringNoFilter by project ID
container_idquerystringNoFilter by container ID
realm_idquerystringNoFilter by realm ID. Alternative to using realm subdomain in URL.
enabledquerybooleanNoFilter by enabled status
expiredquerybooleanNoFilter by expiration: true = only expired, false = only non-expired
Terminal window
curl -X GET "https://api.hoody.com/api/v1/proxy/aliases?enabled=true&expired=false" \
-H "Authorization: Bearer <token>"

GET /api/v1/proxy/aliases/{id}

Returns the full details of a single proxy alias, including the related project and container records.

NameInTypeRequiredDescription
idpathstringYesProxy alias ID
Terminal window
curl -X GET "https://api.hoody.com/api/v1/proxy/aliases/507f1f77bcf86cd799439022" \
-H "Authorization: Bearer <token>"

POST /api/v1/proxy/aliases

Creates a new proxy alias pointing at a program or transport protocol running inside one of your containers. Provide your own custom alias or omit alias to let the system auto-generate a 48-character hex string for maximum obscurity.

FieldTypeRequiredDefaultDescription
container_idstringYes—Container ID that this alias points to. You must own this container.
programstringYes—Program or protocol the alias targets. Either a built-in Hoody program (terminal, files, code, browser, agent, display, …) or a transport protocol (http, https, ssh). Use http / https with the port field to reach an HTTP server running on that port inside the container. Must exist in container-programs.json.
aliasstring | null | booleanNo—Custom alias name (a-z, 0-9, hyphens; 3-61 chars; cannot start/end with hyphen). Pass null or false to receive an auto-generated 48-character hex label.
portintegerNo—Target port for the http / https protocol (1-65535). The port your server listens on inside the container. Takes precedence over index and any port embedded in the program string. Ignored for built-in programs.
indexintegerNo—Instance index (>= 1). For built-in programs, selects which instance to route to. For http / https, it acts as a legacy port field but is overridden by port or any http-<port> embedded in the program.
target_pathstring | nullNo—Landing path served when the alias URL is requested without a path; a query written in it is sent too. With allow_path_override true, a request that carries its own path is forwarded as sent, from the container root (this value is never used as a prefix). With false, it is the only path the alias serves. Auto-prefixed with / if missing. Max 2048 chars.
allow_path_overridebooleanNotrueWhen false, the alias serves only the root, or target_path itself: once the proxy permissions allow the request, a request to either lands on target_path and any other path, sub-paths and assets included, is refused with 404. A parameter written in target_path always keeps its value; the visitor’s other parameters are passed on, and the method, request body and WebSocket upgrade are forwarded as sent. When true, a root request lands on target_path with its query plus the visitor’s parameters, and a request that carries its own path is forwarded as sent. Either way, anyone who has the link can open the alias: use proxy permissions to restrict who may.
expires_atstring | nullNo—Optional ISO 8601 timestamp after which the alias is automatically disabled.
enabledbooleanNotrueWhether the alias is initially enabled.
Terminal window
curl -X POST "https://api.hoody.com/api/v1/proxy/aliases" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"container_id": "507f1f77bcf86cd799439011",
"alias": "my-app",
"program": "http",
"port": 3000,
"target_path": "/api",
"allow_path_override": true
}'

PATCH /api/v1/proxy/aliases/{id}

Partially updates an existing proxy alias. Only the fields included in the request body are modified. A change is not instant: it usually reaches the alias URL within about 30 seconds and can take longer. Until then the alias keeps its previous behavior, and after a rename the old URL may keep resolving.

NameInTypeRequiredDescription
idpathstringYesProxy alias ID to update
FieldTypeRequiredDefaultDescription
aliasstringNo—New alias name (3-61 chars; a-z, 0-9, hyphens; cannot start/end with hyphen). Subject to the same uniqueness and reserved-name rules as create.
programstringNo—New program or protocol the alias targets. Must exist in container-programs.json.
portintegerNo—New target port for the http / https protocol (1-65535). Takes precedence over index and any port embedded in the program. Ignored for built-in programs.
indexintegerNo—New instance index (>= 1). For built-in programs, selects which instance to route to. For http / https, it is the legacy port field and is overridden by port or any http-<port> embedded in the program.
target_pathstring | nullNo—New landing path for root requests, with its own query. With allow_path_override true, requests carrying their own path are forwarded as sent (never a prefix); with false, it is the only path served. Set to null to remove it. Max 2048 chars.
allow_path_overridebooleanNo—When false, only the root, or target_path itself, is served, as target_path; other paths, sub-paths and assets included, answer 404, and the parameters written in target_path cannot be overridden. When true, a request that carries its own path is forwarded as sent.
expires_atstring | number | nullNo—New expiration: ISO 8601 string, Unix timestamp, or null to remove.
enabledbooleanNo—New enabled state.
Terminal window
curl -X PATCH "https://api.hoody.com/api/v1/proxy/aliases/507f1f77bcf86cd799439022" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"alias": "my-new-name",
"target_path": "/v2"
}'

PATCH /api/v1/proxy/aliases/{id}/state

Enables or disables a proxy alias without deleting it. Disabled aliases stop resolving (they return 404) but can be re-enabled later by sending enabled: true to this same endpoint. The change is not instant: it usually reaches the alias URL within about 30 seconds and can take longer. Until then the alias keeps its previous behavior.

The SDK reaches this operation through two named facade methods, each of which sets enabled for you:

  • client.api.proxy.aliases.enable(id) sends enabled: true.
  • client.api.proxy.aliases.disable(id) sends enabled: false.
NameInTypeRequiredDescription
idpathstringYesProxy alias ID
FieldTypeRequiredDefaultDescription
enabledbooleanYes—Set to true to enable, false to disable
Terminal window
curl -X PATCH "https://api.hoody.com/api/v1/proxy/aliases/507f1f77bcf86cd799439022/state" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{ "enabled": false }'

DELETE /api/v1/proxy/aliases/{id}

Permanently removes the alias record. Removal is not instant: the alias URL usually returns 404 within about 30 seconds and can take longer. Until then the alias keeps its previous behavior.

NameInTypeRequiredDescription
idpathstringYesProxy alias ID to delete
Terminal window
curl -X DELETE "https://api.hoody.com/api/v1/proxy/aliases/507f1f77bcf86cd799439022" \
-H "Authorization: Bearer <token>"