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_idstringYes—ID of the project where the copy will be created (24-character hexadecimal)
target_server_idstringNo—ID of the server where the copy will be created (defaults to source server)
namestringNo—Name for the copied container (auto-generated if not provided). 3–100 chars, alphanumeric with hyphens and underscores
ssh_public_keystringNo—SSH public key for the copied container (must be unique, not inherited from source)
source_snapshotstringNo—Specific 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
kvmbooleanNo—Grant /dev/kvm passthrough (run full VMs) on the target server. Rented/dedicated targets only
dev_kvmbooleanNo—Accepted 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"
}
}