Create, manage, and configure projects to organize containers, networks, and shared resources. Projects support per-user quotas, multi-realm membership, granular user permissions, and aggregated monitoring statistics.
Use these endpoints when building dashboards or automation around resource grouping, sharing projects with teammates, enforcing container limits, or surfacing resource usage.
Manage the lifecycle of a project: list, retrieve, create, update, and delete.
List all projects you own or have permissions for. Results are paginated and sortable.
curl -G " https://api.hoody.com/api/v1/projects/ " \
-H " Authorization: Bearer <token> " \
--data-urlencode " page=1 " \
--data-urlencode " limit=10 " \
--data-urlencode " sort_by=created_at " \
--data-urlencode " sort_order=desc "
const iterator = await client . api . projects . listIterator ( {
for await ( const project of iterator) {
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. Default: "created_at". Allowed: "id", "alias", "created_at", "updated_at" sort_orderquery string No Sort direction. Default: "desc". Allowed: "asc", "desc" realm_idquery string No Filter by realm ID. Only returns projects that belong to this realm. Alternative to using realm subdomain in URL.
"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 " ,
"realm_ids" : [ " 507f1f77bcf86cd7994390aa " ]
"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
Retrieve detailed information about a specific project. Optionally include project permissions with associated user details.
curl " https://api.hoody.com/api/v1/projects/507f1f77bcf86cd799439011?include_permissions=true " \
-H " Authorization: Bearer <token> "
const project = await client . api . projects . get ( {
id: " 507f1f77bcf86cd799439011 " ,
include_permissions: true ,
Name In Type Required Description idpath string Yes Project ID include_permissionsquery boolean No Include project permissions with user details in response. Default: false
"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 " ,
"realm_ids" : [ " 507f1f77bcf86cd7994390aa " ],
"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
Create a new project to organize and manage your containers, networks, and resources. Projects act as logical groupings with optional quotas and shared configurations.
curl -X POST " https://api.hoody.com/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 " ,
Name Type Required Description aliasstring Yes Human-readable project name. Must be unique across your projects (1–100 characters) colorstring No HEX color code (3-digit #RGB or 6-digit #RRGGBB). The # prefix is auto-added if missing, and the value is auto-normalized to uppercase. If not provided, a random color is generated max_containersnumber | null No Maximum number of containers allowed in this project. Set to null for unlimited. Minimum: 0. This quota is enforced during container creation realm_idsstring[] No Realm IDs to assign this project to. If you are creating from a realm subdomain, the subdomain realm is automatically included and merged with any explicitly provided realm_ids
"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
Update a project’s alias, color, quotas, or realm membership. You must be the owner or have edit permission. Only the provided fields are updated.
curl -X PATCH " https://api.hoody.com/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 " ,
Name In Type Required Description idpath string Yes Project ID to update
Name Type Required Description aliasstring Yes New project name. Must be unique across your projects (1–100 characters) colorstring No New HEX color code. Auto-normalized to uppercase with # prefix max_containersnumber | null No Maximum number of containers allowed in this project. Set to null for unlimited. Minimum: 0. This quota is enforced during container creation realm_idsstring[] No Update realm membership for this project. If updating from a realm subdomain, the subdomain realm is automatically preserved and merged. Only unrestricted tokens and admin users can modify realm_ids; realm-restricted tokens cannot change realm membership
"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. If deletion cannot be fully completed, the project remains available so you can retry safely. You must be the owner or have delete permission.
curl -X DELETE " https://api.hoody.com/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 ,
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/names in the response for confirmation UX. Default: false
"message" : " Project deleted successfully " ,
{ "id" : " 507f1f77bcf86cd799439011 " , "name" : " web-app " },
{ "id" : " 507f1f77bcf86cd799439012 " , "name" : " worker " }
"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
Grant, list, update, and revoke per-user project access. Permission levels are read (view only), edit (modify resources), and delete (destroy project). The project owner always has full access and cannot grant permissions to themselves.
List all users who have been granted access to this project with their permission levels. Supports pagination and sorting.
curl " https://api.hoody.com/api/v1/projects/507f1f77bcf86cd799439011/permissions?page=1&limit=10 " \
-H " Authorization: Bearer <token> "
const iterator = await client . api . projects . listPermissionsIterator ( {
id: " 507f1f77bcf86cd799439011 " ,
for await ( const perm of iterator) {
Name In Type Required Description idpath string Yes Project ID pagequery number No Page number (1-based) limitquery number No Items per page 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"
"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 input "
"message" : " Authentication token required "
"message" : " Insufficient permissions "
"message" : " Project not found "
Grant another user access to your project with a specific permission level. You must be the owner or have edit permission.
curl -X POST " https://api.hoody.com/api/v1/projects/507f1f77bcf86cd799439011/permissions " \
-H " Authorization: Bearer <token> " \
-H " Content-Type: application/json " \
"user_id": "507f1f77bcf86cd799439044",
"permission_level": "read"
const permission = await client . api . projects . addPermission ( {
id: " 507f1f77bcf86cd799439011 " ,
user_id: " 507f1f77bcf86cd799439044 " ,
permission_level: " read " ,
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: "read", "edit", or "delete"
"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 (e.g., upgrade from read to edit, or downgrade from edit to read). You must be the owner or have edit permission.
curl -X PATCH " https://api.hoody.com/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 " ,
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: "read", "edit", or "delete"
"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 owner or have edit permission.
curl -X DELETE " https://api.hoody.com/api/v1/projects/507f1f77bcf86cd799439011/permissions/507f1f77bcf86cd799439033 " \
-H " Authorization: Bearer <token> "
await client . api . projects . removePermission ({
id: " 507f1f77bcf86cd799439011 " ,
permissionId: " 507f1f77bcf86cd799439033 " ,
Name In Type Required Description idpath string Yes Project ID permissionIdpath string Yes Permission ID to remove
"message" : " Project permission removed successfully "
"message" : " Invalid input "
"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 plus a summary block with total counts and total processing time.
curl " https://api.hoody.com/api/v1/projects/507f1f77bcf86cd799439011/stats " \
-H " Authorization: Bearer <token> "
const stats = await client . api . projects . getStats ( {
id: " 507f1f77bcf86cd799439011 " ,
Name In Type Required Description idpath string Yes Unique identifier of the project
"message" : " Project statistics retrieved successfully " ,
"id" : " 507f1f77bcf86cd799439011 " ,
"project_id" : " 507f1f77bcf86cd799439033 " ,
"project_name" : " Production Environment " ,
"server_name" : " node-sg-sin-1 " ,
"subserver_name" : " web-tier " ,
"started_at" : " 2025-12-03T18:39:53Z " ,
"cpu" : { "usage" : 17303605000 },
"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