Projects let you organize containers, networks, and other resources into logical groups with optional quotas, shared configurations, and multi-user access control. This page covers project CRUD, per-user permission management, and aggregated container statistics.
List all projects you own or have been granted access to, with pagination and sorting.
Name In Type Required Description pagequery number No Page number (1-based). Default: 1 limitquery number No Items per page (max 100). Default: 10 sort_byquery string No Field to sort by. Allowed: id, alias, 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. Only returns projects that belong to this realm. Alternative to using a realm subdomain in the URL.
curl -X GET " https://api.hoody.icu/api/v1/projects/?page=1&limit=10&sort_by=created_at&sort_order=desc " \
-H " Authorization: Bearer <token> "
const page = await client . api . projects . listIterator ( {
"message" : " Projects retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"user_id" : " 507f1f77bcf86cd799439022 " ,
"alias" : " Production Environment " ,
"created_at" : " 2025-01-10T08:00:00.000Z " ,
"updated_at" : " 2025-01-15T10:30:00.000Z " ,
"id" : " 507f1f77bcf86cd799439033 " ,
"user_id" : " 507f1f77bcf86cd799439022 " ,
"created_at" : " 2025-01-05T12:00:00.000Z " ,
"updated_at" : " 2025-01-05T12:00:00.000Z " ,
"message" : " Invalid parameter value "
Error Code Title Description Resolution 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
Create a new project to organize and manage your containers, networks, and resources.
This endpoint takes no parameters.
Name Type Required Description aliasstring Yes Human-readable project name (1–100 characters). Must be unique across your projects (e.g., "Production", "Development", "Client-ABC"). colorstring No HEX color code for visual organization. Accepts 3-digit (#RGB) or 6-digit (#RRGGBB) formats. The # prefix is auto-added if missing, and the value is auto-normalized to uppercase. If omitted, a random color is generated. max_containersnumber | null No Maximum number of containers allowed in this project. Set to null for unlimited. Enforced during container creation. realm_idsstring[] No Realm IDs to assign this project to. If invoked from a realm subdomain, the subdomain realm is automatically included and merged with any explicitly provided realm_ids.
curl -X POST " https://api.hoody.icu/api/v1/projects/ " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"alias": "Production Environment",
const project = await client . api . projects . create ( {
alias: " Production Environment " ,
"message" : " Project created successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"user_id" : " 507f1f77bcf86cd799439022 " ,
"alias" : " Production Environment " ,
"created_at" : " 2025-01-10T08:00:00.000Z " ,
"updated_at" : " 2025-01-10T08: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 MISSING_REQUIRED_FIELDRequired field missing One or more required fields are missing from the request Include all required fields as specified in the API documentation INVALID_ALIAS_FORMATInvalid alias format Project alias must be between 1–100 characters Provide a valid alias following the format requirements: 1–100 characters INVALID_COLOR_FORMATInvalid color format Color must be a valid HEX color code (3 or 6 digits) Provide a valid HEX color like #RGB or #RRGGBB (e.g., #F00 or #FF0000) INVALID_QUOTA_VALUEInvalid quota value Quota values must be non-negative numbers or null Provide a valid quota value (0 or higher) or null for unlimited
"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" : " Project alias already exists "
Error Code Title Description Resolution DUPLICATE_ALIASProject alias already exists The provided project alias is already in use by another project in your account Choose a different, unique project alias
Retrieve detailed information about a specific project, including the project owner, quotas, and (optionally) all users who have been granted access.
Name In Type Required Description idpath string Yes Project ID include_permissionsquery boolean No Include project permissions with user details in response. Default: false
curl -X GET " https://api.hoody.icu/api/v1/projects/507f1f77bcf86cd799439011?include_permissions=true " \
-H " Authorization: Bearer <token> "
const project = await client . api . projects . get ( {
id: " 507f1f77bcf86cd799439011 " ,
include_permissions: true ,
"message" : " Project retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"user_id" : " 507f1f77bcf86cd799439022 " ,
"alias" : " Production Environment " ,
"created_at" : " 2025-01-10T08:00:00.000Z " ,
"updated_at" : " 2025-01-15T10:30:00.000Z " ,
"id" : " 507f1f77bcf86cd799439033 " ,
"project_id" : " 507f1f77bcf86cd799439011 " ,
"user_id" : " 507f1f77bcf86cd799439044 " ,
"permission_level" : " read " ,
"created_at" : " 2025-01-12T14:00:00.000Z " ,
"updated_at" : " 2025-01-12T14:00:00.000Z " ,
"id" : " 507f1f77bcf86cd799439044 " ,
"username" : " jane_smith " ,
"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) 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
"message" : " Project not found "
Error Code Title Description Resolution PROJECT_NOT_FOUNDProject not found The requested project does not exist or has been deleted Verify the project ID is correct and that you have access to this project
Update a project’s alias, color, or realm membership. Only the fields you send are modified. You must be the project owner or have edit permission.
Name In Type Required Description idpath string Yes Project ID to update
Name Type Required Description aliasstring Yes New project name (1–100 characters). Must be unique across your projects. colorstring No New HEX color code. Auto-normalized to uppercase with # prefix. realm_idsstring[] No Updated realm membership for this project.
curl -X PATCH " https://api.hoody.icu/api/v1/projects/507f1f77bcf86cd799439011 " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"alias": "Production v2",
const updated = await client . api . projects . update ( {
id: " 507f1f77bcf86cd799439011 " ,
"message" : " Project updated successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"user_id" : " 507f1f77bcf86cd799439022 " ,
"alias" : " Production Environment Updated " ,
"created_at" : " 2025-01-10T08:00:00.000Z " ,
"updated_at" : " 2025-01-15T14: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_ALIAS_FORMATInvalid alias format Project alias must be between 1–100 characters Provide a valid alias following the format requirements: 1–100 characters INVALID_COLOR_FORMATInvalid color format Color must be a valid HEX color code (3 or 6 digits) Provide a valid HEX color like #RGB or #RRGGBB (e.g., #F00 or #FF0000) INVALID_QUOTA_VALUEInvalid quota value Quota values must be non-negative numbers or null Provide a valid quota value (0 or higher) or null for unlimited
"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" : " Project not found "
Error Code Title Description Resolution PROJECT_NOT_FOUNDProject not found The requested project does not exist or has been deleted Verify the project ID is correct and that you have access to this project
"message" : " Project alias already exists "
Error Code Title Description Resolution DUPLICATE_ALIASProject alias already exists The provided project alias is already in use by another project in your account Choose a different, unique project alias
Permanently delete a project and all associated resources. You must be the project owner or have delete permission.
Danger
This action cannot be undone. If the request cannot be fully completed, the project remains available so you can safely retry. If the project still contains active containers, the API returns 422 PROJECT_HAS_CONTAINERS — delete the containers first, then retry.
Name In Type Required Description idpath string Yes Project ID to delete include_deleted_itemsquery boolean No Include a lightweight list of deleted container IDs and names in the response for confirmation UX. Default: false
curl -X DELETE " https://api.hoody.icu/api/v1/projects/507f1f77bcf86cd799439011?include_deleted_items=true " \
-H " Authorization: Bearer <token> "
const result = await client . api . projects . delete ( {
id: " 507f1f77bcf86cd799439011 " ,
include_deleted_items: true ,
"message" : " Project deleted successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"id" : " 507f1f77bcf86cd799439012 " ,
"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" : " Project not found "
Error Code Title Description Resolution PROJECT_NOT_FOUNDProject not found The requested project does not exist or has been deleted Verify the project ID is correct and that you have access to this project
"message" : " Resource already exists "
Error Code Title Description Resolution RESOURCE_ALREADY_EXISTSResource already exists A resource with this identifier already exists Use a different identifier or update the existing resource instead
"error" : " Unprocessable Entity " ,
"message" : " Project contains active containers "
Error Code Title Description Resolution PROJECT_HAS_CONTAINERSProject has active containers Cannot delete project because it contains active containers Delete all containers in this project first, then try again
Each project supports three permission levels: read (view only), edit (modify resources), and delete (destroy the project). The project owner always has full access; additional users can be granted access through the endpoints below.
List all users who have been granted access to this project, with their permission levels.
Name In Type Required Description idpath string Yes Project ID pagequery number No Page number (1-based) limitquery number No Items per page (max 100) sort_byquery string No Field to sort by. Allowed: id, user_id, permission_level, created_at, updated_at sort_orderquery string No Sort direction. Allowed: asc, desc
curl -X GET " https://api.hoody.icu/api/v1/projects/507f1f77bcf86cd799439011/permissions?page=1&limit=10 " \
-H " Authorization: Bearer <token> "
const page = await client . api . projects . listPermissionsIterator ( {
id: " 507f1f77bcf86cd799439011 " ,
"message" : " Project permissions retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439033 " ,
"project_id" : " 507f1f77bcf86cd799439011 " ,
"user_id" : " 507f1f77bcf86cd799439044 " ,
"permission_level" : " read " ,
"created_at" : " 2025-01-12T14:00:00.000Z " ,
"updated_at" : " 2025-01-12T14:00:00.000Z " ,
"id" : " 507f1f77bcf86cd799439044 " ,
"username" : " jane_smith " ,
"id" : " 507f1f77bcf86cd799439055 " ,
"project_id" : " 507f1f77bcf86cd799439011 " ,
"user_id" : " 507f1f77bcf86cd799439066 " ,
"permission_level" : " edit " ,
"created_at" : " 2025-01-13T09:30:00.000Z " ,
"updated_at" : " 2025-01-14T16:20:00.000Z " ,
"id" : " 507f1f77bcf86cd799439066 " ,
"message" : " Invalid ID format "
"message" : " Authentication token required "
"message" : " Insufficient permissions "
"message" : " Project not found "
Grant another user access to your project. You must be the project owner or have edit permission.
Name In Type Required Description idpath string Yes Project ID
Name Type Required Description user_idstring Yes User ID to grant access to permission_levelstring Yes Access level. One of: read, edit, delete
curl -X POST " https://api.hoody.icu/api/v1/projects/507f1f77bcf86cd799439011/permissions " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"user_id": "507f1f77bcf86cd799439044",
"permission_level": "edit"
const permission = await client . api . projects . addPermission ( {
id: " 507f1f77bcf86cd799439011 " ,
user_id: " 507f1f77bcf86cd799439044 " ,
permission_level: " edit " ,
"message" : " Project permission added successfully " ,
"id" : " 507f1f77bcf86cd799439033 " ,
"project_id" : " 507f1f77bcf86cd799439011 " ,
"user_id" : " 507f1f77bcf86cd799439044 " ,
"permission_level" : " read " ,
"created_at" : " 2025-01-12T14:00:00.000Z " ,
"updated_at" : " 2025-01-12T14:00:00.000Z " ,
"id" : " 507f1f77bcf86cd799439044 " ,
"username" : " jane_smith " ,
"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) MISSING_REQUIRED_FIELDRequired field missing One or more required fields are missing from the request Include all required fields as specified in the API documentation
"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" : " Project not found "
Error Code Title Description Resolution PROJECT_NOT_FOUNDProject not found The requested project does not exist or has been deleted Verify the project ID is correct and that you have access to this project RESOURCE_NOT_FOUNDResource not found The requested resource does not exist or has been deleted Verify the resource ID and ensure it exists
"message" : " User already has permission for this project "
Error Code Title Description Resolution PERMISSION_ALREADY_EXISTSPermission already exists This user already has a permission for this project Update the existing permission instead of creating a new one CANNOT_GRANT_SELF_PERMISSIONCannot grant permission to self You cannot grant permissions to yourself As the owner, you already have full access to this project
Change a user’s permission level for a project — for example, upgrade from read to edit or downgrade from edit to read. You must be the project owner or have edit permission.
Name In Type Required Description idpath string Yes Project ID permissionIdpath string Yes Permission ID to update
Name Type Required Description permission_levelstring Yes New permission level. One of: read, edit, delete
curl -X PATCH " https://api.hoody.icu/api/v1/projects/507f1f77bcf86cd799439011/permissions/507f1f77bcf86cd799439033 " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"permission_level": "edit"
const updated = await client . api . projects . updatePermission ( {
id: " 507f1f77bcf86cd799439011 " ,
permissionId: " 507f1f77bcf86cd799439033 " ,
permission_level: " edit " ,
"message" : " Project permission updated successfully " ,
"id" : " 507f1f77bcf86cd799439033 " ,
"project_id" : " 507f1f77bcf86cd799439011 " ,
"user_id" : " 507f1f77bcf86cd799439044 " ,
"permission_level" : " edit " ,
"created_at" : " 2025-01-12T14:00:00.000Z " ,
"updated_at" : " 2025-01-15T14:45:00.000Z " ,
"id" : " 507f1f77bcf86cd799439044 " ,
"username" : " jane_smith " ,
"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) MISSING_REQUIRED_FIELDRequired field missing One or more required fields are missing from the request Include all required fields as specified in the API documentation
"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" : " Project not found "
Error Code Title Description Resolution PROJECT_NOT_FOUNDProject not found The requested project does not exist or has been deleted Verify the project ID is correct and that you have access to this project PERMISSION_NOT_FOUNDPermission not found The requested permission does not exist or has been removed Verify the permission ID is correct
Revoke a user’s access to a project. The user will immediately lose all access. You must be the project owner or have edit permission.
Name In Type Required Description idpath string Yes Project ID permissionIdpath string Yes Permission ID to remove
curl -X DELETE " https://api.hoody.icu/api/v1/projects/507f1f77bcf86cd799439011/permissions/507f1f77bcf86cd799439033 " \
-H " Authorization: Bearer <token> "
await client . api . projects . removePermission ({
id: " 507f1f77bcf86cd799439011 " ,
permissionId: " 507f1f77bcf86cd799439033 " ,
"message" : " Project permission removed successfully "
"message" : " Invalid ID format "
"message" : " Authentication token required "
"message" : " Insufficient permissions "
"message" : " Project not found "
Get aggregated resource usage statistics for all containers in a project. Returns per-container stats (CPU, memory, disk, network) plus a summary with the total container count and total processing time.
Name In Type Required Description idpath string Yes Unique identifier of the project
curl -X GET " https://api.hoody.icu/api/v1/projects/507f1f77bcf86cd799439033/stats " \
-H " Authorization: Bearer <token> "
const stats = await client . api . projects . getStats ( {
id: " 507f1f77bcf86cd799439033 " ,
"message" : " Project statistics retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"project_id" : " 507f1f77bcf86cd799439033 " ,
"project_name" : " Production Environment " ,
"server_name" : " node-sg-sin-1 " ,
"started_at" : " 2025-12-03T18:39:53Z " ,
"project_id" : " 507f1f77bcf86cd799439033 " ,
"project_name" : " Production Environment " ,
"total_processing_time" : " 1506ms "
"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" : " 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
"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