The container endpoints let you list, inspect, create, update, and delete Hoody containers. Use these endpoints to manage the lifecycle of your containers, fetch live resource statistics, and issue offline-verifiable authorization claims for container-aware tooling.
All container hostnames follow the pattern {projectId}-{containerId}-{service}-{instance}.{server}.containers.hoody.com. When concrete IDs are required for examples, both the project ID and the container ID are 24-character lowercase hexadecimal strings.
Returns every container owned by the authenticated user across all projects, with pagination, filtering, and sorting.
Name In Type Required Description pagequery number No Page number for pagination. Starts from 1. Default: 1. limitquery number No Number of containers to return per page. Maximum 100. Default: 50. sort_byquery string No Field to sort containers by. Allowed: id, name, status, created_at, updated_at. Default: "created_at". sort_orderquery string No Sort direction. Allowed: asc, desc. Default: "desc". realm_idquery string No Filter by realm ID. Returns only containers belonging to this realm. runtimequery string No Include live runtime information. Accepts "true", "false", or a URL-encoded JSON string such as {"displays":true}. An empty object {} fetches all info. Results are cached for 2 seconds. include_proxy_domainsquery string No When true, adds a proxy_domains array to each container. Allowed: "true", "false". include_proxy_permissionsquery string No When true, includes the full proxy-permissions documents (contains credentials). Allowed: "true", "false". Auth tokens additionally require the resources.proxy_aliases permission. include_prespawnquery string No Include prespawn containers. Default excludes them. Allowed: "true", "false". include_expiredquery string No Include containers expired due to server termination. Default excludes them. Allowed: "true", "false". include_deletingquery string No Include containers currently being deleted. Default excludes them. Allowed: "true", "false".
curl -X GET " https://api.hoody.com/api/v1/containers/?page=1&limit=50&sort_by=created_at&sort_order=desc " \
-H " Authorization: Bearer <token> "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://api.hoody.com ' , token : process . env . HOODY_TOKEN });
const result = await client . api . containers . listIterator ({ page : 1 , limit : 50 });
" message " : " Containers retrieved successfully " ,
" id " : " 507f1f77bcf86cd799439011 " ,
" project_id " : " 507f1f77bcf86cd799439033 " ,
" project_alias " : " Production Environment " ,
" server_id " : " 507f1f77bcf86cd799439044 " ,
" server_name " : " node-sg-sin-1 " ,
" subserver_name " : " primary " ,
" container_image " : " debian/13 " ,
" ramdisk_scope " : " container " ,
" ssh_public_key " : " ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC... " ,
" comment " : " Primary web application container " ,
" created_at " : " 2025-01-15T10:30:00.000Z " ,
" updated_at " : " 2025-01-15T10:30:00.000Z " ,
" last_used_snapshot " : " backup-2025-01-14 " ,
" message " : " Invalid parameter value "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input parameters One or more request parameters failed validation. Check the error message for specific field requirements and correct your input. INVALID_PARAMETER_VALUEInvalid parameter value A parameter value is outside the allowed range or format. Ensure parameter values meet the documented constraints (min/max, format, regex).
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request. Include a valid JWT token in the Authorization header as Bearer <token>. INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid. Obtain a new token by logging in again or using a valid auth token. TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired. Obtain a new token by logging in again or refreshing your session.
" message " : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action. Contact the resource owner or administrator to request access. ACCOUNT_BANNEDAccount banned Your account has been banned and cannot access this resource. Contact support for information about your account status.
Returns a single container by its ID, including server metadata, optional runtime info, and optional proxy-permissions documents.
Name In Type Required Description idpath string Yes Unique identifier of the container to retrieve. runtimequery string No Include live runtime information. Accepts "true", "false", or a URL-encoded JSON string such as {"displays":true}. An empty object {} fetches all info. Results are cached for 2 seconds. include_proxy_domainsquery string No When true, adds a proxy_domains array to the container. Allowed: "true", "false". include_proxy_permissionsquery string No When true, includes the full proxy-permissions documents (contains credentials). Allowed: "true", "false". Auth tokens additionally require the resources.proxy_aliases permission.
curl -X GET " https://api.hoody.com/api/v1/containers/507f1f77bcf86cd799439011?runtime=%7B%22displays%22%3Atrue%7D " \
-H " Authorization: Bearer <token> "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://api.hoody.com ' , token : process . env . HOODY_TOKEN });
const container = await client . api . containers . get ( ' 507f1f77bcf86cd799439011 ' , { runtime : ' {"displays":true} ' });
" message " : " Container retrieved successfully " ,
" id " : " 507f1f77bcf86cd799439011 " ,
" project_id " : " 507f1f77bcf86cd799439033 " ,
" project_alias " : " Production Environment " ,
" server_id " : " 507f1f77bcf86cd799439044 " ,
" server_name " : " node-sg-sin-1 " ,
" subserver_name " : " primary " ,
" container_image " : " debian/13 " ,
" ramdisk_scope " : " container " ,
" comment " : " Primary web application container " ,
" created_at " : " 2025-01-15T10:30:00.000Z " ,
" updated_at " : " 2025-01-15T10:30:00.000Z " ,
" last_used_snapshot " : " backup-2025-01-14 " ,
" message " : " Invalid ID format "
Error Code Title Description Resolution INVALID_ID_FORMATInvalid ID format The provided ID must be a 24-character hexadecimal string. Ensure the ID is exactly 24 characters long and contains only hexadecimal characters (0-9, a-f).
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request. Include a valid JWT token in the Authorization header as Bearer <token>. INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid. Obtain a new token by logging in again or using a valid auth token. TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired. Obtain a new token by logging in again or refreshing your session.
" message " : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action. Contact the resource owner or administrator to request access. ACCOUNT_BANNEDAccount banned Your account has been banned and cannot access this resource. Contact support for information about your account status.
" message " : " Container not found "
Error Code Title Description Resolution CONTAINER_NOT_FOUNDContainer not found The requested container does not exist or you do not have permission to access it. Verify the container ID is correct and that you have access to the project it belongs to.
Returns real-time resource usage for a container, including CPU, memory, disk, ramdisk, and network metrics. The container must be addressable; CPU and memory stats are null when the container is stopped.
Name In Type Required Description idpath string Yes Unique identifier of the container.
curl -X GET " https://api.hoody.com/api/v1/containers/507f1f77bcf86cd799439011/stats " \
-H " Authorization: Bearer <token> "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://api.hoody.com ' , token : process . env . HOODY_TOKEN });
const stats = await client . api . containers . getStats ( ' 507f1f77bcf86cd799439011 ' );
" message " : " Container statistics retrieved successfully " ,
" id " : " 507f1f77bcf86cd799439011 " ,
" project_id " : " 507f1f77bcf86cd799439033 " ,
" project_name " : " Production Environment " ,
" server_name " : " node-sg-sin-1 " ,
" subserver_name " : " primary " ,
" started_at " : " 2025-12-03T18:39:53.938688987Z " ,
" allocated_time " : 24000000000 ,
" shared_pool_maximum " : 536870912 ,
" capacity_reserved " : false ,
" address " : " 10.10.0.122 " ,
" bytes_received " : 1098069936 ,
" packets_received " : 346440 ,
" packets_dropped_inbound " : 0 ,
" packets_dropped_outbound " : 0
" message " : " Invalid ID format "
Error Code Title Description Resolution INVALID_ID_FORMATInvalid ID format The provided ID must be a 24-character hexadecimal string. Ensure the ID is exactly 24 characters long and contains only hexadecimal characters (0-9, a-f).
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request. Include a valid JWT token in the Authorization header as Bearer <token>. INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid. Obtain a new token by logging in again or using a valid auth token. TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired. Obtain a new token by logging in again or refreshing your session.
" message " : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action. Contact the resource owner or administrator to request access. ACCOUNT_BANNEDAccount banned Your account has been banned and cannot access this resource. Contact support for information about your account status. RESOURCE_ACCESS_DENIEDResource access denied You do not have permission to access this specific resource. Ensure you own this resource or have been granted access by the owner.
" message " : " Container not found "
Error Code Title Description Resolution CONTAINER_NOT_FOUNDContainer not found The requested container does not exist or you do not have permission to access it. Verify the container ID is correct and that you have access to the project it belongs to. RESOURCE_NOT_FOUNDResource not found The requested resource does not exist or has been deleted. Verify the resource ID and ensure it exists.
" error " : " Internal Server Error " ,
" message " : " An unexpected error occurred "
Error Code Title Description Resolution INTERNAL_SERVER_ERRORInternal server error An unexpected error occurred on the server. Try again later, or contact support if the problem persists. EXTERNAL_SERVICE_ERRORExternal service error A required external service is unavailable or returned an error. Try again later when the external service is available.
Returns every container belonging to the specified project, with pagination, filtering, and sorting.
Name In Type Required Description idpath string Yes Project ID. pagequery number No Page number for pagination. Starts from 1. limitquery number No Number of containers to return per page. Maximum 100. Default: 50. sort_byquery string No Field to sort containers by. Allowed: id, name, status, created_at, updated_at. sort_orderquery string No Sort direction. Allowed: asc, desc. runtimequery string No Include live runtime information. Accepts "true", "false", or a URL-encoded JSON string such as {"displays":true}. An empty object {} fetches all info. Results are cached for 2 seconds. include_proxy_domainsquery string No When true, adds a proxy_domains array to each container. Allowed: "true", "false". include_proxy_permissionsquery string No When true, includes the full proxy-permissions documents (contains credentials). Allowed: "true", "false". Auth tokens additionally require the resources.proxy_aliases permission. include_prespawnquery string No Include prespawn containers. Default excludes them. Allowed: "true", "false". include_deletingquery string No Include containers currently being deleted. Default excludes them. Allowed: "true", "false".
curl -X GET " https://api.hoody.com/api/v1/projects/507f1f77bcf86cd799439011/containers?page=1&limit=20 " \
-H " Authorization: Bearer <token> "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://api.hoody.com ' , token : process . env . HOODY_TOKEN });
const containers = await client . api . containers . listByProjectIterator ( ' 507f1f77bcf86cd799439011 ' , { page : 1 , limit : 20 });
" message " : " Containers retrieved successfully " ,
" id " : " 507f1f77bcf86cd799439013 " ,
" project_id " : " 507f1f77bcf86cd799439011 " ,
" project_alias " : " my-web-app " ,
" server_id " : " 507f1f77bcf86cd799439014 " ,
" server_name " : " node-us-nyc-1 " ,
" subserver_name " : " primary " ,
" container_image " : " debian/13 " ,
" NODE_ENV " : " production " ,
" ssh_public_key " : " ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl user@host " ,
" comment " : " Production frontend server " ,
" created_at " : " 2025-01-15T10:30:00.000Z " ,
" updated_at " : " 2025-01-15T14:22:00.000Z " ,
" last_used_snapshot " : " before-upgrade " ,
" message " : " Validation failed "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input parameters One or more request parameters failed validation. Check the error message for specific field requirements and correct your input. INVALID_ID_FORMATInvalid ID format The provided ID must be a 24-character hexadecimal string. Ensure the ID is exactly 24 characters long and contains only hexadecimal characters (0-9, a-f).
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request. Include a valid JWT token in the Authorization header as Bearer <token>. INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid. Obtain a new token by logging in again or using a valid auth token. TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired. Obtain a new token by logging in again or refreshing your session.
" message " : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action. Contact the resource owner or administrator to request access. ACCOUNT_BANNEDAccount banned Your account has been banned and cannot access this resource. Contact support for information about your account status.
" message " : " Resource not found "
Error Code Title Description Resolution RESOURCE_NOT_FOUNDResource not found The requested resource does not exist or has been deleted. Verify the resource ID and ensure it exists.
Issues a signed, portable container authorization claim. The returned container_claim is an ED25519-signed credential that proves the identity of the user (sub, type), the authorized container (containerId, projectId), and when Hoody issued the authorization (iat, exp).
Container programs can verify this claim offline using Hoody’s public key from GET /api/v1/meta/public-key — no API round-trip is needed during verification. Claims expire after HOODY_CONTAINER_CLAIM_EXPIRES_IN (default 6 hours). Clients should re-call this endpoint to refresh before expiry.
The response also carries an X-Hoody-Signature header in the format t=<unix_ts>,kid=<keyId>,path=<urlPath>,sig=<128-hex> so the entire response body can be independently verified.
Note
Container claims share their wire format, signing key, and verification procedure with the identity claims issued at login (see Identity claims ) — the differences are claim_type: "container" (verifiers must check this to prevent cross-claim confusion), the container/project fields, and the shorter lifetime.
Name In Type Required Description idpath string Yes Container ID (24-char hex).
curl -X POST " https://api.hoody.com/api/v1/containers/507f1f77bcf86cd799439011/authorize " \
-H " Authorization: Bearer <token> "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://api.hoody.com ' , token : process . env . HOODY_TOKEN });
const claim = await client . api . containers . authorize ( ' 507f1f77bcf86cd799439011 ' );
" message " : " Container authorization claim issued " ,
" payload_b64 " : " eyJjbGFpbV90eXBlIjoiY29udGFpbmVyIiwi... " ,
" signature_hex " : " a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90a1b2c3d4e5f60718293a4b5c6d7e8f90 "
" container_id " : " 507f1f77bcf86cd799439011 " ,
" project_id " : " 507f1f77bcf86cd799439033 "
" message " : " Invalid ID format "
Error Code Title Description Resolution INVALID_ID_FORMATInvalid ID format The provided ID must be a 24-character hexadecimal string. Ensure the ID is exactly 24 characters long and contains only hexadecimal characters (0-9, a-f).
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request. Include a valid JWT token in the Authorization header as Bearer <token>.
" message " : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action. Contact the resource owner or administrator to request access.
" message " : " Container not found "
Error Code Title Description Resolution CONTAINER_NOT_FOUNDContainer not found The requested container does not exist or you do not have permission to access it. Verify the container ID is correct and that you have access to the project it belongs to.
" error " : " SIGNING_NOT_CONFIGURED " ,
" message " : " Response signing is not configured on this API instance "
Creates a new container in the specified project. The container is provisioned on the server named in server_id and enters the creating lifecycle state.
Name In Type Required Description idpath string Yes Project ID.
Name Type Required Description server_idstring Yes Server on which to provision the container. namestring No Container name. 3-100 characters, alphanumeric with hyphens and underscores. Use "rand" to generate a random name. colorstring No HEX color (e.g. #FF0000 or FF0000). The # prefix is added if missing. container_imagestring No Container image. Shorthand such as "debian" or "debian-13" is resolved to the canonical image. aiboolean No Enable AI features. Default: true. environment_varsobject No Environment variables as key-value string pairs. Maximum 200 keys; each value up to 65536 characters. ssh_public_keystring No SSH public key for container access. Must be unique per container. Inherits from project defaults if omitted. commentstring No Optional comment, up to 16000 characters. hoody_kitboolean No Enable the Hoody Kit bundle. Default: true. dev_kitboolean No Enable dev_kit development tools. Cannot be updated after creation. kvmboolean No Enable /dev/kvm passthrough. Rentable dedicated servers only — never free tier. Default: false. dev_kvmboolean No Alias of kvm. If both are sent, kvm wins and both must agree. autostartboolean No Start automatically on host boot. Default: true. ramdiskboolean No Mount a ramdisk at /ramdisk. Default: true. cacheboolean No Use cached images during creation. Default: true. cache_imageboolean No Force creation of a new cached image. Admin-only. Default: false. prespawnboolean No Internal. Not user-settable. true is rejected (403); false is accepted. Default: false. bypass_prespawnboolean No Bypass prespawn container claiming and create a fresh container. Default: false. realm_idsarray No Realm IDs to assign the container to. Merged with the realm of the subdomain when creating from a realm subdomain.
curl -X POST " https://api.hoody.com/api/v1/projects/507f1f77bcf86cd799439011/containers " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"server_id": "507f1f77bcf86cd799439014",
"container_image": "debian/13",
"DATABASE_URL": "postgresql://user:pass@db:5432/app",
"REDIS_URL": "redis://cache:6379"
"ssh_public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl user@host",
"comment": "Backend API server with PostgreSQL connection"
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://api.hoody.com ' , token : process . env . HOODY_TOKEN });
const container = await client . api . containers . create ( ' 507f1f77bcf86cd799439011 ' , {
server_id : ' 507f1f77bcf86cd799439014 ' ,
container_image : ' debian/13 ' ,
DATABASE_URL : ' postgresql://user:pass@db:5432/app ' ,
REDIS_URL : ' redis://cache:6379 '
ssh_public_key : ' ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl user@host ' ,
comment : ' Backend API server with PostgreSQL connection '
" message " : " Container created successfully " ,
" id " : " 507f1f77bcf86cd799439015 " ,
" project_id " : " 507f1f77bcf86cd799439011 " ,
" project_alias " : " my-web-app " ,
" server_id " : " 507f1f77bcf86cd799439014 " ,
" server_name " : " node-us-nyc-1 " ,
" subserver_name " : " primary " ,
" container_image " : " debian/13 " ,
" status " : " provisioning " ,
" DATABASE_URL " : " postgresql://user:pass@db:5432/app " ,
" REDIS_URL " : " redis://cache:6379 "
" ssh_public_key " : " ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIOMqqnkVzrm0SdG6UOoqKLsabgH5C9okWi0dh2l9GKJl user@host " ,
" comment " : " Backend API server with PostgreSQL connection " ,
" created_at " : " 2025-01-15T15:45:00.000Z " ,
" updated_at " : " 2025-01-15T15:45:00.000Z " ,
" message " : " Validation failed "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input parameters One or more request parameters failed validation. Check the error message for specific field requirements and correct your input. INVALID_ID_FORMATInvalid ID format The provided ID must be a 24-character hexadecimal string. Ensure the ID is exactly 24 characters long and contains only hexadecimal characters (0-9, a-f). INVALID_CONTAINER_NAMEInvalid container name Container name must be 3-100 characters, alphanumeric with hyphens and underscores. Use a valid name between 3 and 100 characters containing only a-z, A-Z, 0-9, -, and _. SERVER_CONTAINER_LIMITServer container limit reached The target server is at its maximum number of live containers (explicit max_containers, or the free-tier default). Delete an existing container on this server, or create the container on a different server. PROJECT_CONTAINER_LIMITProject container limit reached The target project is at its owner-configured container quota (projects.max_containers). Prespawn containers are excluded from this quota. Delete an existing container in this project, raise the project quota, or use a different project.
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request. Include a valid JWT token in the Authorization header as Bearer <token>. INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid. Obtain a new token by logging in again or using a valid auth token. TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired. Obtain a new token by logging in again or refreshing your session.
" message " : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action. Contact the resource owner or administrator to request access. ACCOUNT_BANNEDAccount banned Your account has been banned and cannot access this resource. Contact support for information about your account status.
" message " : " Resource not found "
Error Code Title Description Resolution RESOURCE_NOT_FOUNDResource not found The requested resource does not exist or has been deleted. Verify the resource ID and ensure it exists.
" message " : " Container name already in use within the project "
Error Code Title Description Resolution CONTAINER_NAME_IN_USEContainer name already in use A container with this name already exists in the project. Choose a different name for your container. SSH_PUBLIC_KEY_IN_USESSH public key already in use SSH public keys must be unique per container because the key is used to route SSH connections. Generate a new SSH key pair for this container, or remove the key from the other container before reusing it.
" error " : " Unprocessable Entity " ,
" message " : " Quota exceeded "
Error Code Title Description Resolution QUOTA_EXCEEDEDQuota exceeded You have exceeded your quota for this resource type. Delete unused resources or upgrade your plan for higher limits.
Updates mutable fields on a container. Omitted fields are preserved. dev_kit cannot be updated after creation. Container edits on expired containers are rejected.
Name In Type Required Description idpath string Yes Unique identifier of the container to update.
Name Type Required Description namestring No Human-readable name. 1-100 characters. Must be unique within the project. colorstring No HEX color (e.g. #FF0000 or FF0000). The # prefix is added if missing. aiboolean No Whether AI features are enabled. Preserved if omitted. autostartboolean No Whether the container starts automatically on host boot. Preserved if omitted. ramdisk_scopestring No Sharing scope for /ramdisk. Allowed: container, project. project is refused when the project has other members. ramdiskboolean No Whether to mount a ramdisk at /ramdisk. Preserved if omitted. environment_varsobject No Environment variables as key-value pairs. Maximum 200 keys; each value up to 65536 characters. ssh_public_keystring | null No SSH public key. Re-sending the same key is a no-op. Set to null to clear or inherit from project defaults. commentstring | null No Optional comment, up to 16000 characters. Set to null to clear. realm_idsarray No Realm membership. Only unrestricted tokens and admins can modify realm membership.
curl -X PUT " https://api.hoody.com/api/v1/containers/507f1f77bcf86cd799439011 " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"name": "web-app-1-renamed",
"comment": "Renamed for the v2 release",
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://api.hoody.com ' , token : process . env . HOODY_TOKEN });
const container = await client . api . containers . update ( ' 507f1f77bcf86cd799439011 ' , {
name : ' web-app-1-renamed ' ,
comment : ' Renamed for the v2 release ' ,
" message " : " Container updated successfully " ,
" id " : " 507f1f77bcf86cd799439011 " ,
" project_id " : " 507f1f77bcf86cd799439033 " ,
" project_alias " : " Production Environment " ,
" server_id " : " 507f1f77bcf86cd799439044 " ,
" server_name " : " node-sg-sin-1 " ,
" subserver_name " : " primary " ,
" name " : " web-app-1-renamed " ,
" container_image " : " debian/13 " ,
" ramdisk_scope " : " container " ,
" comment " : " Renamed for the v2 release " ,
" created_at " : " 2025-01-15T10:30:00.000Z " ,
" updated_at " : " 2025-01-15T16:00:00.000Z " ,
" message " : " Validation failed "
Error Code Title Description Resolution VALIDATION_ERRORInvalid input parameters One or more request parameters failed validation. Check the error message for specific field requirements and correct your input. INVALID_ID_FORMATInvalid ID format The provided ID must be a 24-character hexadecimal string. Ensure the ID is exactly 24 characters long and contains only hexadecimal characters (0-9, a-f). INVALID_CONTAINER_NAMEInvalid container name Container name must be 3-100 characters, alphanumeric with hyphens and underscores. Use a valid name between 3 and 100 characters containing only a-z, A-Z, 0-9, -, and _.
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request. Include a valid JWT token in the Authorization header as Bearer <token>. INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid. Obtain a new token by logging in again or using a valid auth token. TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired. Obtain a new token by logging in again or refreshing your session.
" message " : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action. Contact the resource owner or administrator to request access. ACCOUNT_BANNEDAccount banned Your account has been banned and cannot access this resource. Contact support for information about your account status. OPERATION_NOT_PERMITTED_ON_EXPIREDOperation Not Permitted on Expired Container This operation cannot be performed because the container has expired due to server termination. The container is in a read-only state. No further operations are allowed. Please create a new container.
" message " : " Container not found "
Error Code Title Description Resolution CONTAINER_NOT_FOUNDContainer not found The requested container does not exist or you do not have permission to access it. Verify the container ID is correct and that you have access to the project it belongs to. RESOURCE_NOT_FOUNDResource not found The requested resource does not exist or has been deleted. Verify the resource ID and ensure it exists.
" message " : " Container name already in use within the project "
Error Code Title Description Resolution CONTAINER_NAME_IN_USEContainer name already in use A container with this name already exists in the project. Choose a different name for your container. SSH_PUBLIC_KEY_IN_USESSH public key already in use SSH public keys must be unique per container because the key is used to route SSH connections. Generate a new SSH key pair for this container, or remove the key from the other container before reusing it.
Enables or disables /dev/kvm passthrough so the container can run full virtual machines. Available on rented or dedicated (bare-metal) servers only — never on free-tier servers. The container must be stopped. Send kvm: true to enable or kvm: false to disable. dev_kvm is accepted as an alias of kvm.
Name In Type Required Description idpath string Yes Unique identifier of the container.
Name Type Required Description kvmboolean No Enable (true) or disable (false) /dev/kvm passthrough. dev_kvmboolean No Alias of kvm. If both are sent, kvm wins and both must agree.
curl -X PUT " https://api.hoody.com/api/v1/containers/507f1f77bcf86cd799439011/kvm " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://api.hoody.com ' , token : process . env . HOODY_TOKEN });
const result = await client . api . containers . setContainerKvm ( ' 507f1f77bcf86cd799439011 ' , {
" message " : " Container KVM setting updated " ,
" id " : " 507f1f77bcf86cd799439011 " ,
" message " : " Invalid request "
" message " : " Insufficient permissions "
" message " : " Container not found "
Error Code Title Description Resolution CONTAINER_NOT_FOUNDContainer not found The requested container does not exist or you do not have permission to access it. Verify the container ID is correct and that you have access to the project it belongs to. RESOURCE_NOT_FOUNDResource not found The requested resource does not exist or has been deleted. Verify the resource ID and ensure it exists.
" message " : " Container must be stopped to change KVM "
Deletes a container. The container must be in a state that allows deletion. Expired containers cannot be deleted.
Name In Type Required Description idpath string Yes Unique identifier of the container to delete.
curl -X DELETE " https://api.hoody.com/api/v1/containers/507f1f77bcf86cd799439011 " \
-H " Authorization: Bearer <token> "
import { HoodyClient } from ' hoody-sdk ' ;
const client = new HoodyClient ({ baseURL : ' https://api.hoody.com ' , token : process . env . HOODY_TOKEN });
await client . api . containers . delete ( ' 507f1f77bcf86cd799439011 ' );
" message " : " Container deleted successfully "
" message " : " Invalid ID format "
Error Code Title Description Resolution INVALID_ID_FORMATInvalid ID format The provided ID must be a 24-character hexadecimal string. Ensure the ID is exactly 24 characters long and contains only hexadecimal characters (0-9, a-f).
" message " : " Authentication token required "
Error Code Title Description Resolution MISSING_TOKENAuthentication token missing No authentication token was provided in the request. Include a valid JWT token in the Authorization header as Bearer <token>. INVALID_TOKENInvalid authentication token The provided authentication token is malformed or invalid. Obtain a new token by logging in again or using a valid auth token. TOKEN_EXPIREDAuthentication token expired The provided authentication token has expired. Obtain a new token by logging in again or refreshing your session.
" message " : " Insufficient permissions "
Error Code Title Description Resolution INSUFFICIENT_PERMISSIONSInsufficient permissions You do not have the required permissions to perform this action. Contact the resource owner or administrator to request access. ACCOUNT_BANNEDAccount banned Your account has been banned and cannot access this resource. Contact support for information about your account status. OPERATION_NOT_PERMITTED_ON_EXPIREDOperation Not Permitted on Expired Container This operation cannot be performed because the container has expired due to server termination. The container is in a read-only state. No further operations are allowed. Please create a new container.
" message " : " Container not found "
Error Code Title Description Resolution CONTAINER_NOT_FOUNDContainer not found The requested container does not exist or you do not have permission to access it. Verify the container ID is correct and that you have access to the project it belongs to.
" message " : " Resource is currently in use "
Error Code Title Description Resolution RESOURCE_IN_USEResource in use This resource cannot be modified or deleted because it is currently in use. Stop using the resource or remove dependent resources first. OPERATION_STATE_CONFLICTContainer State Conflict The operation cannot be performed because the container is not in the correct state. Check the container’s current status. For example, a container must be stopped to be started.
" error " : " Internal Server Error " ,
" message " : " An unexpected error occurred "
Error Code Title Description Resolution INTERNAL_SERVER_ERRORInternal server error An unexpected error occurred on the server. Try again later, or contact support if the problem persists. EXTERNAL_SERVICE_ERRORExternal service error A required external service is unavailable or returned an error. Try again later when the external service is available.