Skip to content

hetzner-cloud

hetzner-cloud

Hetzner Cloud API -- servers, volumes, networks, load balancers, firewalls, floating IPs, primary IPs, images, SSH keys, placement groups, certificates, and infrastructure metadata

Source: Hetzner Cloud API

Credits: Dunkel Cloud GmbH -- maintainer Updated: 2026-04-01

Coverage

61% (122 of ~200 endpoints)

Focus: servers, server actions, server metrics, volumes, networks, firewalls, load balancers, load balancer metrics, floating IPs, primary IPs, images, SSH keys, placement groups, certificates, datacenters, locations, server types, ISOs, pricing

Missing: storage boxes (separate API at api.hetzner.com), DNS zones/rrsets (separate API), S3 credential management

Last reviewed: 2026-04-01

Setup

  1. Log in to Hetzner Cloud Console at https://console.hetzner.cloud
  2. Select or create a project
  3. Navigate to Security -> API Tokens
  4. Click 'Generate API Token'
  5. Enter a description and select Read or Read & Write permissions
  6. Copy the token immediately -- it is shown only once

Environment variable: CREDENTIAL_HETZNER_CLOUD_TOKEN

Authentication docs ↗

API tokens are scoped to a single project. To manage multiple projects, create one token per project. Tokens have either Read or Read & Write permission -- there are no per-resource scopes.

Install

Add to your backends.yaml:

- name: hetzner-cloud
  transport: rest
  dadl: /app/dadl/hetzner-cloud.dadl

Set the credential:

CREDENTIAL_HETZNER_CLOUD_TOKEN=your-token-here

Tools (123)

GET list_servers List all servers. Supports label_selector, name, sort, and status filtering.
GET get_server Get details of a specific server
POST create_server Create a new server. Returns server object and root_password (if no SSH keys). Action is async -- poll the returned action.
PUT update_server Update a server's name or labels
DELETE delete_server Delete a server immediately. All data on the server is lost. Irreversible.
POST power_on_server Power on a server
POST power_off_server Hard power off a server (like pulling the power cord). Use shutdown for graceful stop.
POST reboot_server Soft reboot a server (sends ACPI signal)
POST reset_server Hard reset a server (like pressing the reset button). Use reboot for graceful restart.
POST shutdown_server Gracefully shut down a server (sends ACPI shutdown signal)
POST enable_rescue_server Enable rescue mode. Returns root_password for the rescue system. Reboot to enter rescue.
POST disable_rescue_server Disable rescue mode
POST rebuild_server Rebuild a server from an image. All data is destroyed. Irreversible.
POST change_server_type Change server type (resize). Server must be off. Disk can only be upgraded, not downgraded.
POST create_image_from_server Create a snapshot image from a server
POST attach_iso_to_server Attach an ISO to a server
POST detach_iso_from_server Detach any ISO from a server
POST change_server_protection Change delete and rebuild protection for a server
POST change_server_dns_ptr Change reverse DNS entry for a server IP
POST attach_server_to_network Attach a server to a network
POST detach_server_from_network Detach a server from a network
POST enable_server_backup Enable automatic backups for a server
POST disable_server_backup Disable automatic backups for a server. Existing backups are kept until their expiry.
POST add_server_to_placement_group Add a server to a placement group. Server must be stopped.
POST remove_server_from_placement_group Remove a server from its placement group
GET list_server_actions List all actions for a server
GET get_server_action Get details of a specific server action
GET get_server_metrics Get metrics (time series) for a server. Returns Prometheus-style data points for the requested metric types within the given time range.
GET get_load_balancer_metrics Get metrics for a load balancer. Returns time series for open connections, connections/s, requests/s, and bandwidth.
GET list_volumes List all volumes
GET get_volume Get details of a specific volume
POST create_volume Create a new volume. Set server to auto-attach, or leave unattached.
PUT update_volume Update a volume's name or labels
DELETE delete_volume Delete a volume. Must be detached first.
POST attach_volume Attach a volume to a server
POST detach_volume Detach a volume from a server
POST resize_volume Resize a volume. Can only increase size, not decrease.
POST change_volume_protection Change delete protection for a volume
GET list_networks List all networks
GET get_network Get details of a specific network
POST create_network Create a new network with an RFC 1918 IP range
PUT update_network Update a network's name or labels
DELETE delete_network Delete a network. All subnets and routes are removed.
POST add_subnet_to_network Add a subnet to a network
POST delete_subnet_from_network Delete a subnet from a network
POST add_route_to_network Add a route to a network
POST delete_route_from_network Delete a route from a network
POST change_network_protection Change delete protection for a network
GET list_firewalls List all firewalls
GET get_firewall Get details of a specific firewall including its rules
POST create_firewall Create a new firewall with optional initial rules and resource assignments
PUT update_firewall Update a firewall's name or labels
DELETE delete_firewall Delete a firewall. Must be unapplied from all resources first.
POST set_firewall_rules Overwrite all rules of a firewall. This replaces all existing rules.
POST apply_firewall_to_resources Apply a firewall to servers or label selectors
POST remove_firewall_from_resources Remove a firewall from servers or label selectors
GET list_load_balancers List all load balancers
GET get_load_balancer Get details of a specific load balancer
POST create_load_balancer Create a new load balancer
PUT update_load_balancer Update a load balancer's name or labels
DELETE delete_load_balancer Delete a load balancer
POST add_load_balancer_service Add a service (listener) to a load balancer
POST update_load_balancer_service Update a service on a load balancer
POST delete_load_balancer_service Delete a service from a load balancer
POST add_load_balancer_target Add a target to a load balancer
POST remove_load_balancer_target Remove a target from a load balancer
POST change_load_balancer_type Change the type of a load balancer
POST change_load_balancer_protection Change delete protection for a load balancer
POST attach_load_balancer_to_network Attach a load balancer to a network
POST detach_load_balancer_from_network Detach a load balancer from a network
POST change_load_balancer_algorithm Change the balancing algorithm
POST change_load_balancer_dns_ptr Change reverse DNS entry for a load balancer IP
GET list_floating_ips List all floating IPs
GET get_floating_ip Get details of a specific floating IP
POST create_floating_ip Create a new floating IP
PUT update_floating_ip Update a floating IP's name, description, or labels
DELETE delete_floating_ip Delete a floating IP. Must be unassigned first.
POST assign_floating_ip Assign a floating IP to a server
POST unassign_floating_ip Unassign a floating IP from a server
POST change_floating_ip_protection Change delete protection for a floating IP
POST change_floating_ip_dns_ptr Change reverse DNS entry for a floating IP
GET list_primary_ips List all primary IPs
GET get_primary_ip Get details of a specific primary IP
POST create_primary_ip Create a new primary IP
PUT update_primary_ip Update a primary IP's name, labels, or auto_delete setting
DELETE delete_primary_ip Delete a primary IP. Must be unassigned first.
POST assign_primary_ip Assign a primary IP to a server
POST unassign_primary_ip Unassign a primary IP from a server
POST change_primary_ip_protection Change delete protection for a primary IP
POST change_primary_ip_dns_ptr Change reverse DNS entry for a primary IP
GET list_images List all images (system, snapshot, backup, app)
GET get_image Get details of a specific image
PUT update_image Update an image's description, type, or labels. Only for snapshot/backup images.
DELETE delete_image Delete an image. Only snapshot and backup images can be deleted.
POST change_image_protection Change delete protection for an image
GET list_ssh_keys List all SSH keys
GET get_ssh_key Get details of a specific SSH key
POST create_ssh_key Create (upload) a new SSH key
PUT update_ssh_key Update an SSH key's name or labels
DELETE delete_ssh_key Delete an SSH key
GET list_certificates List all certificates
GET get_certificate Get details of a specific certificate
POST create_certificate Create a certificate (upload or request managed via Let's Encrypt)
PUT update_certificate Update a certificate's name or labels
DELETE delete_certificate Delete a certificate
GET list_placement_groups List all placement groups
GET get_placement_group Get details of a specific placement group
POST create_placement_group Create a new placement group
PUT update_placement_group Update a placement group's name or labels
DELETE delete_placement_group Delete a placement group. Must have no servers assigned.
GET list_actions List all actions across all resources
GET get_action Get details of a specific action
GET list_server_types List all available server types with specs and pricing
GET get_server_type Get details of a specific server type
GET list_locations List all available locations
GET get_location Get details of a specific location
GET list_datacenters List all available datacenters
GET get_datacenter Get details of a specific datacenter
GET list_isos List all available ISO images
GET get_iso Get details of a specific ISO image
GET list_load_balancer_types List all available load balancer types
GET get_load_balancer_type Get details of a specific load balancer type
GET get_pricing Get all pricing information for server types, images, volumes, floating IPs, load balancers, and traffic