Skip to content
Hoody.com

Copy a container from one project or server to another, and re-sync an existing copy with its source. Both operations run asynchronously — the new or updated container starts automatically once the operation completes.

Creates a copy of an existing container in a different project or server. The copy operation runs asynchronously and the new container will start automatically upon successful completion.

NameInTypeRequiredDescription
idpathstringYesUnique identifier of the source container to copy
FieldTypeRequiredDefaultDescription
target_project_idstringYesID of the project where the copy will be created (24-character hexadecimal)
target_server_idstringNoID of the server where the copy will be created (defaults to source server)
namestringNoName for the copied container (auto-generated if not provided). 3–100 chars, alphanumeric with hyphens and underscores
ssh_public_keystringNoSSH public key for the copied container (must be unique, not inherited from source)
source_snapshotstringNoSpecific snapshot to copy from (copies latest state if not provided)
copy_firewall_rulesbooleanNofalseWhether to copy firewall rules (ACL) from source container to target container
copy_network_rulesbooleanNofalseWhether to copy network rules/settings from source container to target container
kvmbooleanNoGrant /dev/kvm passthrough (run full VMs) on the target server. Rented/dedicated targets only
dev_kvmbooleanNoAccepted alias of kvm on input. If both are sent, kvm wins and they must agree
Terminal window
curl -X POST https://api.hoody.com/api/v1/containers/{id}/copy \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"target_project_id": "67e89abc123def456789abcd",
"target_server_id": "890abcdef12345678901cdef",
"name": "prod-east-mirror",
"copy_firewall_rules": true,
"copy_network_rules": false
}'
{
"statusCode": 201,
"message": "Container copy initiated successfully",
"data": {
"id": "890abcdef12345678901cdef",
"name": "prod-east-mirror",
"status": "copying",
"source_container_id": "67e89abc123def456789abcd",
"project_id": "67e89abc123def456789abcd",
"project_alias": "production",
"server_id": "890abcdef12345678901cdef",
"server_name": "node-us",
"subserver_name": "main",
"server": {
"name": "node-us",
"country": "US",
"country_name": "United States",
"city": "Ashburn",
"region": "North America",
"datacenter": "IAD-DC1",
"is_free": false,
"specs": {
"cpu_cores": 16,
"ram_gb": 64,
"disk_gb": 500,
"shared_compute": false
},
"expires_at": "2026-12-31T00:00:00.000Z"
},
"ssh_hostname": "67e89abc123def456789abcd-890abcdef12345678901cdef-ssh.node-us.containers.hoody.com",
"color": "#3B82F6",
"container_image": "ubuntu-22.04",
"ai": true,
"hoody_kit": true,
"dev_kit": false,
"kvm": false,
"autostart": true,
"ramdisk_scope": "container",
"ramdisk": false,
"prespawn": false,
"is_default": false,
"container_image_id": "67e89abc123def456789ab01",
"environment_vars": {
"NODE_ENV": "production"
},
"volumes": {
"data": "/var/lib/data"
},
"ssh_public_key": "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI... prod-east-mirror",
"comment": "Mirrored copy of prod-east",
"kvm_note": "",
"copy_firewall_rules": true,
"copy_network_rules": false,
"created_at": "2026-01-15T10:30:00.000Z",
"updated_at": "2026-01-15T10:30:00.000Z",
"realm_ids": []
}
}

Performs an incremental sync from the source container to this container. Only works for containers that were created via the copy operation. The sync runs asynchronously.

This endpoint accepts no request body.

NameInTypeRequiredDescription
idpathstringYesUnique identifier of the container to sync (must have been created via copy)
Terminal window
curl -X POST https://api.hoody.com/api/v1/containers/{id}/sync \
-H "Authorization: Bearer <token>"
{
"statusCode": 200,
"message": "Container sync initiated successfully",
"data": {
"container_id": "890abcdef12345678901cdef",
"source_container_id": "67e89abc123def456789abcd",
"status": "copying"
}
}