Skip to content

Proxy aliases let you create memorable, share-friendly domain names for your containers. Instead of sharing URLs that expose your project and container IDs, you can mask them behind a short, human-readable alias. Use these endpoints to list, create, update, enable/disable, and delete proxy aliases for any container you own.

Returns all proxy aliases for the authenticated account, with optional filters for project, container, realm, enabled state, and expiration.

NameInTypeRequiredDescription
project_idquerystringNoFilter by project ID
container_idquerystringNoFilter by container ID
realm_idquerystringNoFilter by realm ID. Alternative to using realm subdomain in URL.
enabledquerystringNoFilter by enabled status. Allowed values: true, false
expiredquerystringNoFilter by expiration. Allowed values: true (only expired), false (only non-expired)
{
"statusCode": 200,
"message": "Proxy aliases retrieved successfully",
"data": {
"aliases": [
{
"id": "507f1f77bcf86cd799439022",
"user_id": "507f1f77bcf86cd799439077",
"project_id": "507f1f77bcf86cd799439033",
"container_id": "507f1f77bcf86cd799439011",
"alias": "my-portfolio",
"program": "web",
"index": 1,
"target_path": null,
"allow_path_override": true,
"expires_at": null,
"enabled": true,
"created_at": "2025-01-15T10:30:00.000Z",
"updated_at": "2025-01-15T10:30:00.000Z",
"server_id": "507f1f77bcf86cd799439044",
"server_name": "node-sg-sin-1",
"url": "https://my-portfolio.node-sg-sin-1.containers.hoody.icu"
},
{
"id": "507f1f77bcf86cd799439055",
"user_id": "507f1f77bcf86cd799439077",
"project_id": "507f1f77bcf86cd799439033",
"container_id": "507f1f77bcf86cd799439066",
"alias": "c3a8f1b2e4d5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3",
"program": "api",
"index": 1,
"target_path": "/v1",
"allow_path_override": true,
"expires_at": "2025-06-30T23:59:59.000Z",
"enabled": true,
"created_at": "2025-01-10T08:00:00.000Z",
"updated_at": "2025-01-10T08:00:00.000Z",
"server_id": "507f1f77bcf86cd799439044",
"server_name": "node-sg-sin-1",
"subserver_name": "user-slice-7",
"url": "https://c3a8f1b2e4d5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3.node-sg-sin-1.containers.hoody.icu"
}
],
"count": 2
}
}
const { data } = await client.api.proxyAliases.listIterator({
project_id: "507f1f77bcf86cd799439033",
enabled: "true"
});
Terminal window
curl -H "Authorization: Bearer $TOKEN" \
"https://api.hoody.icu/api/v1/proxy/aliases?project_id=507f1f77bcf86cd799439033&enabled=true"

Retrieves detailed information about a single proxy alias, including related project and container details.

NameInTypeRequiredDescription
idpathstringYesProxy alias ID
{
"statusCode": 200,
"message": "Proxy alias retrieved successfully",
"data": {
"id": "507f1f77bcf86cd799439022",
"user_id": "507f1f77bcf86cd799439077",
"project_id": "507f1f77bcf86cd799439033",
"container_id": "507f1f77bcf86cd799439011",
"alias": "my-app",
"program": "web",
"index": 1,
"target_path": "/api",
"allow_path_override": true,
"expires_at": "2025-12-31T23:59:59.000Z",
"enabled": true,
"created_at": "2025-01-15T10:30:00.000Z",
"updated_at": "2025-01-15T10:30:00.000Z",
"url": "https://my-app.node-sg-sin-1.containers.hoody.icu",
"server_id": "507f1f77bcf86cd799439044",
"server_name": "node-sg-sin-1",
"subserver_name": "user-slice-7",
"project": {
"id": "507f1f77bcf86cd799439033",
"alias": "production"
},
"container": {
"id": "507f1f77bcf86cd799439011",
"name": "web-app-1"
}
}
}
const { data } = await client.api.proxyAliases.get({
id: "507f1f77bcf86cd799439022"
});
Terminal window
curl -H "Authorization: Bearer $TOKEN" \
"https://api.hoody.icu/api/v1/proxy/aliases/507f1f77bcf86cd799439022"

Creates a custom domain alias for one of your containers. You can provide a custom alias (3–61 chars) or pass null/false to let the system auto-generate a 48-character hex string for maximum obscurity.

FieldTypeRequiredDefaultDescription
container_idstringYesContainer ID that this alias points to. You must own this container.
programstringYesProgram name (must exist in container-programs.json). Common values: web, api, ssh, vnc, code-server.
aliasstring | null | booleanNoCustom alias name (a-z, 0-9, hyphens only; 3–61 chars; cannot start or end with a hyphen) OR null/false for an auto-generated 48-char hex. Must be unique across your account.
indexintegerNoProgram instance index. Defaults to 1. Use when running multiple instances of the same program.
target_pathstring | nullNoBase path for routing. Requests to https://{alias}.../ are forwarded to the container with this path prefix. Auto-prefixed with / if missing. Set to null for no path prefix.
allow_path_overridebooleanNotrueWhether to allow paths beyond target_path. If false, only the exact target_path is accessible.
expires_atstring | nullNoOptional ISO 8601 expiration date. Alias is automatically disabled after this date. Set to null for no expiration.
enabledbooleanNotrueWhether the alias is initially enabled.
{
"container_id": "507f1f77bcf86cd799439011",
"alias": "my-portfolio",
"program": "web",
"index": 1,
"target_path": null,
"allow_path_override": true
}
{
"statusCode": 201,
"message": "Proxy alias created successfully",
"data": {
"id": "507f1f77bcf86cd799439022",
"user_id": "507f1f77bcf86cd799439077",
"project_id": "507f1f77bcf86cd799439033",
"container_id": "507f1f77bcf86cd799439011",
"alias": "my-app",
"program": "web",
"index": 1,
"target_path": "/api",
"allow_path_override": true,
"expires_at": "2025-12-31T23:59:59.000Z",
"enabled": true,
"created_at": "2025-01-15T10:30:00.000Z",
"updated_at": "2025-01-15T10:30:00.000Z",
"server_id": "507f1f77bcf86cd799439044",
"server_name": "node-sg-sin-1",
"subserver_name": "user-slice-7",
"url": "https://my-app.node-sg-sin-1.containers.hoody.icu"
}
}
const { data } = await client.api.proxyAliases.create({
data: {
container_id: "507f1f77bcf86cd799439011",
alias: "my-portfolio",
program: "web",
target_path: null,
allow_path_override: true
}
});
Terminal window
curl -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"container_id": "507f1f77bcf86cd799439011",
"alias": "my-portfolio",
"program": "web",
"target_path": null,
"allow_path_override": true
}' \
"https://api.hoody.icu/api/v1/proxy/aliases"

Partially updates an existing proxy alias. Only the fields included in the request body are changed. Renaming the alias field also renames the underlying file on the server.

NameInTypeRequiredDescription
idpathstringYesProxy alias ID to update
FieldTypeRequiredDescription
aliasstringNoNew alias name. Must be unique across your account.
programstringNoProgram name from container-programs.json.
indexintegerNoProgram instance index.
target_pathstring | nullNoBase path for routing. Set to null to remove the path prefix.
allow_path_overridebooleanNoWhether to allow paths beyond target_path.
expires_atstring | number | nullNoExpiration date (ISO string, Unix timestamp seconds/ms, or null to remove expiration).
enabledbooleanNoWhether the alias is enabled.
{
"alias": "my-new-name"
}
{
"statusCode": 200,
"message": "Proxy alias updated successfully",
"data": {
"id": "507f1f77bcf86cd799439022",
"user_id": "507f1f77bcf86cd799439077",
"project_id": "507f1f77bcf86cd799439033",
"container_id": "507f1f77bcf86cd799439011",
"alias": "updated-app-name",
"program": "api",
"index": 2,
"target_path": "/v2",
"allow_path_override": false,
"expires_at": null,
"enabled": true,
"created_at": "2025-01-15T10:30:00.000Z",
"updated_at": "2025-01-15T14:45:00.000Z",
"url": "https://updated-app-name.node-sg-sin-1.containers.hoody.icu",
"server_id": "507f1f77bcf86cd799439044",
"server_name": "node-sg-sin-1",
"subserver_name": "user-slice-7"
}
}
const { data } = await client.api.proxyAliases.update({
id: "507f1f77bcf86cd799439022",
data: {
alias: "my-new-name"
}
});
Terminal window
curl -X PATCH \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "alias": "my-new-name" }' \
"https://api.hoody.icu/api/v1/proxy/aliases/507f1f77bcf86cd799439022"

Toggles a proxy alias on or off without deleting it. Disabled aliases immediately stop resolving and return 404, but can be re-enabled later.

NameInTypeRequiredDescription
idpathstringYesProxy alias ID
FieldTypeRequiredDescription
enabledbooleanYesSet to true to enable, false to disable.
{
"enabled": false
}
{
"statusCode": 200,
"message": "Proxy alias disabled successfully",
"data": {
"id": "507f1f77bcf86cd799439022",
"user_id": "507f1f77bcf86cd799439077",
"project_id": "507f1f77bcf86cd799439033",
"container_id": "507f1f77bcf86cd799439011",
"alias": "my-app",
"program": "web",
"index": 1,
"target_path": "/api",
"allow_path_override": true,
"expires_at": "2025-12-31T23:59:59.000Z",
"enabled": false,
"created_at": "2025-01-15T10:30:00.000Z",
"updated_at": "2025-01-15T14:45:00.000Z",
"url": "https://my-app.node-sg-sin-1.containers.hoody.icu",
"server_id": "507f1f77bcf86cd799439044",
"server_name": "node-sg-sin-1",
"subserver_name": "user-slice-7"
}
}
const { data } = await client.api.proxyAliases.setState({
id: "507f1f77bcf86cd799439022",
data: { enabled: false }
});
Terminal window
curl -X PATCH \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{ "enabled": false }' \
"https://api.hoody.icu/api/v1/proxy/aliases/507f1f77bcf86cd799439022/state"

Permanently deletes a proxy alias and removes its file from the server. The alias URL returns 404 immediately and cannot be recovered.

NameInTypeRequiredDescription
idpathstringYesProxy alias ID to delete
{
"statusCode": 200,
"message": "Proxy alias deleted successfully"
}
await client.api.proxyAliases.delete({
id: "507f1f77bcf86cd799439022"
});
Terminal window
curl -X DELETE \
-H "Authorization: Bearer $TOKEN" \
"https://api.hoody.icu/api/v1/proxy/aliases/507f1f77bcf86cd799439022"