KosmoKrator

productivity

Hetzner Cloud MCP, CLI, and Lua Integration for AI Agents

Hetzner Cloud integration docs for AI agents: MCP gateway setup, Hetzner Cloud CLI commands, Lua API reference, credentials, and function schemas.

Hetzner Cloud for agents

Credentials can be configured manually in web or CLI hosts.

Use this integration from Lua code mode, the headless integrations CLI, or the KosmoKrator MCP gateway. The same package metadata powers all three surfaces.

Agent Surfaces

Machine-Readable Metadata

Function Catalog

FunctionTypeParametersDescription
hetzner.hetzner_get_actions Read read 0 Returns multiple Action objects specified by the `id` parameter. **Note**: This endpoint previously allowed listing all actions in the project. This functionality was deprecated in July 2023 and removed on 30 January 2025. - Announcement: https://docs.hetzner.cloud/changelog#2023-07-20-actions-list-endpoint-is-deprecated - Removal: https://docs.hetzner.cloud/changelog#2025-01-30-listing-arbitrary-actions-in-the-actions-list-endpoint-is-removed
hetzner.hetzner_get_action Read read 0 Returns a specific Action object.
hetzner.hetzner_list_certificates Read read 0 Returns all Certificate objects.
hetzner.hetzner_create_certificate Write write 0 Creates a new Certificate. The default type **uploaded** allows for uploading your existing `certificate` and `private_key` in PEM format. You have to monitor its expiration date and handle renewal yourself. In contrast, type **managed** requests a new Certificate from *Let's Encrypt* for the specified `domain_names`. Only domains managed by *Hetzner DNS* are supported. We handle renewal and timely alert the project owner via email if problems occur. For type `managed` Certificates the `action` key of the response contains the Action that allows for tracking the issuance process. For type `uploaded` Certificates the `action` is always null.
hetzner.hetzner_list_certificates_actions Read read 0 Returns all Action objects. You can `sort` the results by using the sort URI parameter, and filter them with the `status` and `id` parameter.
hetzner.hetzner_get_certificates_action Read read 0 Returns a specific Action object.
hetzner.hetzner_get_certificate Read read 0 Gets a specific Certificate object.
hetzner.hetzner_update_certificate Write write 0 Updates the Certificate properties. Note: if the Certificate object changes during the request, the response will be a "conflict" error.
hetzner.hetzner_delete_certificate Write write 0 Deletes a Certificate.
hetzner.hetzner_list_certificate_actions Read read 0 Returns all Action objects for a Certificate. You can sort the results by using the `sort` URI parameter, and filter them with the `status` parameter. Only type `managed` Certificates can have Actions. For type `uploaded` Certificates the `actions` key will always contain an empty array.
hetzner.hetzner_retry_certificate Write write 0 Retry a failed Certificate issuance or renewal. Only applicable if the type of the Certificate is `managed` and the issuance or renewal status is `failed`. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | | `caa_record_does_not_allow_ca` | CAA record does not allow certificate authority | | | `ca_dns_validation_failed` | Certificate Authority: DNS validation failed | | | `ca_too_many_authorizations_failed_recently` | Certificate Authority: Too many authorizations failed recently | | | `ca_too_many_certificates_issued_for_registered_domain` | Certificate Authority: Too many certificates issued for registered domain | | | `ca_too_many_duplicate_certificates` | Certificate Authority: Too many duplicate certificates | | | `could_not_verify_domain_delegated_to_zone` | Could not verify domain delegated to zone | | | `dns_zone_not_found` | DNS zone not found | | | `dns_zone_is_secondary_zone` | DNS zone is a secondary zone |
hetzner.hetzner_get_certificate_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific Action for a Certificate. Only type `managed` Certificates have Actions.
hetzner.hetzner_list_datacenters Read read 0 Returns all [Data Centers](#tag/data-centers).
hetzner.hetzner_get_datacenter Read read 0 Returns a single [Data Center](#tag/data-centers).
hetzner.hetzner_list_firewalls Read read 0 Returns all [Firewalls](#tag/firewalls). Use the provided URI parameters to modify the result.
hetzner.hetzner_create_firewall Write write 0 Create a [Firewall](#tag/firewalls). #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `server_already_added` | The [Server](#tag/servers) was applied more than once. | | `422` | `incompatible_network_type` | The resources network type is not supported by [Firewalls](#tag/firewalls). | | `422` | `firewall_resource_not_found` | The resource the [Firewall](#tag/firewalls) should be attached to was not found. |
hetzner.hetzner_list_firewalls_actions Read read 0 Returns all [Actions](#tag/actions) for [Firewalls](#tag/firewalls). Use the provided URI parameters to modify the result.
hetzner.hetzner_get_firewalls_action Read read 0 Returns the specific [Action](#tag/actions).
hetzner.hetzner_get_firewall Read read 0 Returns a single [Firewall](#tag/firewalls).
hetzner.hetzner_update_firewall Write write 0 Update a [Firewall](#tag/firewalls). In case of a parallel running change on the [Firewall](#tag/firewalls) a `conflict` error will be returned.
hetzner.hetzner_delete_firewall Write write 0 Deletes the [Firewall](#tag/firewalls). #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `resource_in_use` | [Firewall](#tag/firewalls) still applied to a resource |
hetzner.hetzner_list_firewall_actions Read read 0 Returns all [Actions](#tag/actions) for the [Firewall](#tag/firewalls). Use the provided URI parameters to modify the result.
hetzner.hetzner_apply_firewall_to_resources Write write 0 Applies a [Firewall](#tag/firewalls) to multiple resources. Supported resources: - [Servers](#tag/servers) (with a public network interface) - [Label Selectors](#description/label-selector) A [Server](#tag/servers) can be applied to [a maximum of 5 Firewalls](https://docs.hetzner.com/cloud/firewalls/overview#limits). This limit applies to [Servers](#tag/servers) applied via a matching [Label Selector](#description/label-selector) as well. Updates to resources matching or no longer matching a [Label Selector](#description/label-selector) can take up to a few seconds to be processed. A [Firewall](#tag/firewalls) is applied to a resource once the related [Action](#tag/actions) with command `apply_firewall` successfully finished. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `404` | `firewall_resource_not_found` | The resource the [Firewall](#tag/firewalls) should be applied to was not found | | `422` | `firewall_already_applied` | [Firewall](#tag/firewalls) is already applied to resource | | `422` | `incompatible_network_type` | The network type of the resource is not supported by [Firewalls](#tag/firewalls) | | `422` | `private_net_only_server` | The [Server](#tag/servers) the [Firewall](#tag/firewalls) should be applied to has no public interface |
hetzner.hetzner_remove_firewall_from_resources Write write 0 Removes a [Firewall](#tag/firewalls) from multiple resources. Supported resources: - [Servers](#tag/servers) (with a public network interface) A [Firewall](#tag/firewalls) is removed from a resource once the related [Action](#tag/actions) with command `remove_firewall` successfully finished. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `404` | `firewall_resource_not_found` | The resource the [Firewall](#tag/firewalls) should be removed from was not found | | `422` | `firewall_managed_by_label_selector` | [Firewall](#tag/firewall) is applied via a [Label Selector](#description/label-selector) and cannot be removed manually |
hetzner.hetzner_set_firewall_rules Write write 0 Set the rules of a [Firewall](#tag/firewalls). Overwrites the existing rules with the given ones. Pass an empty array to remove all rules. Rules are limited to 50 entries per [Firewall](#tag/firewalls) and [500 effective rules](https://docs.hetzner.com/cloud/firewalls/overview#limits).
hetzner.hetzner_get_firewall_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific [Action](#tag/actions) for a [Firewall](#tag/firewalls).
hetzner.hetzner_list_floating_ips Read read 0 List multiple [Floating IPs](#tag/floating-ips). Use the provided URI parameters to modify the result.
hetzner.hetzner_create_floating_ip Write write 0 Create a [Floating IP](#tag/floating-ips). Provide the `server` attribute to assign the [Floating IP](#tag/floating-ips) to that server or provide a `home_location` to locate the [Floating IP](#tag/floating-ips) at. Note that the [Floating IP](#tag/floating-ips) can be assigned to a [Server](#tag/servers) in any [Location](#tag/locations) later on. For optimal routing it is advised to use the [Floating IP](#tag/floating-ips) in the same [Location](#tag/locations) it was created in.
hetzner.hetzner_list_floating_ips_actions Read read 0 Lists multiple [Actions](#tag/actions). Use the provided URI parameters to modify the result.
hetzner.hetzner_get_floating_ips_action Read read 0 Returns a single [Action](#tag/actions).
hetzner.hetzner_get_floating_ip Read read 0 Returns a single [Floating IP](#tag/floating-ips).
hetzner.hetzner_update_floating_ip Write write 0 Update a [Floating IP](#tag/floating-ips).
hetzner.hetzner_delete_floating_ip Write write 0 Deletes a [Floating IP](#tag/floating-ips). If assigned to a [Server](#tag/servers) the [Floating IP](#tag/floating-ips) will be unassigned automatically until 1 May 2026. After this date, the [Floating IP](#tag/floating-ips) needs to be unassigned before it can be deleted. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `must_be_unassigned` | Error when IP is still assigned to a Resource. This error will appear as of 1 May 2026. |
hetzner.hetzner_list_floating_ip_actions Read read 0 Lists [Actions](#tag/actions) for a [Floating IP](#tag/floating-ips). Use the provided URI parameters to modify the result.
hetzner.hetzner_assign_floating_ip Write write 0 Assigns a [Floating IP](#tag/floating-ips) to a [Server](#tag/servers). #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `floating_ip_assigned` | The [Floating IP](#tag/floating-ips) is already assigned |
hetzner.hetzner_change_floating_ip_dns_ptr Write write 0 Change the reverse DNS records for this [Floating IP](#tag/floating-ips). Allows to modify the PTR records set for the IP address.
hetzner.hetzner_change_floating_ip_protection Write write 0 Changes the protection settings configured for the [Floating IP](#tag/floating-ips).
hetzner.hetzner_unassign_floating_ip Write write 0 Unassigns a [Floating IP](#tag/floating-ips). Results in the IP being unreachable. Can be assigned to another resource again.
hetzner.hetzner_get_floating_ip_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific [Action](#tag/actions) for a [Floating IP](#tag/floating-ips).
hetzner.hetzner_list_images Read read 0 Returns all Image objects. You can select specific Image types only and sort the results by using URI parameters.
hetzner.hetzner_list_images_actions Read read 0 Returns all Action objects. You can `sort` the results by using the sort URI parameter, and filter them with the `status` and `id` parameter.
hetzner.hetzner_get_images_action Read read 0 Returns a specific Action object.
hetzner.hetzner_get_image Read read 0 Returns a specific Image object.
hetzner.hetzner_update_image Write write 0 Updates the Image. You may change the description, convert a Backup Image to a Snapshot Image or change the Image labels. Only Images of type `snapshot` and `backup` can be updated.
hetzner.hetzner_delete_image Write write 0 Deletes an Image. Only Images of type `snapshot` and `backup` can be deleted.
hetzner.hetzner_list_image_actions Read read 0 Returns all Action objects for an Image. You can sort the results by using the `sort` URI parameter, and filter them with the `status` parameter.
hetzner.hetzner_change_image_protection Write write 0 Changes the protection configuration of the Image. Can only be used on snapshots.
hetzner.hetzner_get_image_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific Action for an Image.
hetzner.hetzner_list_isos Read read 0 Returns all available ISO objects.
hetzner.hetzner_get_iso Read read 0 Returns a specific ISO object.
hetzner.hetzner_list_load_balancer_types Read read 0 Gets all Load Balancer type objects.
hetzner.hetzner_get_load_balancer_type Read read 0 Gets a specific Load Balancer type object.
hetzner.hetzner_list_load_balancers Read read 0 Gets all existing Load Balancers that you have available.
hetzner.hetzner_create_load_balancer Write write 0 Creates a Load Balancer. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `412` | `source_port_already_used` | The source port you are trying to add is already in use | | `422` | `ip_not_owned` | The IP is not owned by the owner of the project of the Load Balancer | | `422` | `load_balancer_not_attached_to_network` | The Load Balancer is not attached to a network | | `422` | `resolve_cloud_private_targets_error` | The server you are trying to add as a target is not attached to the same network as the Load Balancer | | `422` | `resolve_cloud_public_targets_error` | The server that you are trying to add as a public target does not have a public IPv4 address | | `422` | `target_already_defined` | The Load Balancer target you are trying to define is already defined |
hetzner.hetzner_list_load_balancers_actions Read read 0 Returns all Action objects. You can `sort` the results by using the sort URI parameter, and filter them with the `status` and `id` parameter.
hetzner.hetzner_get_load_balancers_action Read read 0 Returns a specific Action object.
hetzner.hetzner_get_load_balancer Read read 0 Gets a specific Load Balancer object.
hetzner.hetzner_update_load_balancer Write write 0 Updates a Load Balancer. You can update a Load Balancer's name and a Load Balancer's labels. Note: if the Load Balancer object changes during the request, the response will be a "conflict" error.
hetzner.hetzner_delete_load_balancer Write write 0 Deletes a Load Balancer.
hetzner.hetzner_list_load_balancer_actions Read read 0 Returns all Action objects for a Load Balancer. You can sort the results by using the `sort` URI parameter, and filter them with the `status` parameter.
hetzner.hetzner_add_load_balancer_service Write write 0 Adds a service to a Load Balancer. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `412` | `source_port_already_used` | The source port you are trying to add is already in use |
hetzner.hetzner_add_load_balancer_target Write write 0 Adds a target to a Load Balancer. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `ip_not_in_vswitch_subnet` | The IP you are trying to add does not belong to the vswitch subnet of the attached network | | `422` | `ip_not_owned` | The IP you are trying to add as a target is not owned by the Project owner | | `422` | `load_balancer_public_interface_disabled` | The Load Balancer's public network interface is disabled | | `422` | `load_balancer_not_attached_to_network` | The Load Balancer is not attached to a network | | `422` | `network_has_no_vswitch_subnet` | The given IP is private but attached network does not have a vswitch subnet | | `422` | `resolve_cloud_private_targets_error` | The server you are trying to add as a target is not attached to the same network as the Load Balancer | | `422` | `resolve_cloud_public_targets_error` | The server that you are trying to add as a public target does not have a public IPv4 address | | `422` | `target_already_defined` | The Load Balancer target you are trying to define is already defined |
hetzner.hetzner_attach_load_balancer_to_network Write write 0 Attach a Load Balancer to a Network. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `load_balancer_already_attached` | The Load Balancer is already attached to a network | | `422` | `ip_not_available` | The provided Network IP is not available | | `422` | `no_subnet_available` | No Subnet or IP is available for the Load Balancer within the network |
hetzner.hetzner_change_load_balancer_algorithm Write write 0 Change the algorithm that determines to which target new requests are sent.
hetzner.hetzner_change_load_balancer_dns_ptr Write write 0 Changes the hostname that will appear when getting the hostname belonging to the public IPs (IPv4 and IPv6) of this Load Balancer. Floating IPs assigned to the Server are not affected by this.
hetzner.hetzner_change_load_balancer_protection Write write 0 Changes the protection configuration of a Load Balancer.
hetzner.hetzner_change_load_balancer_type Write write 0 Changes the type (Max Services, Max Targets and Max Connections) of a Load Balancer. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `invalid_load_balancer_type` | The Load Balancer type does not fit for the given Load Balancer |
hetzner.hetzner_delete_load_balancer_service Write write 0 Delete a service of a Load Balancer.
hetzner.hetzner_detach_load_balancer_from_network Write write 0 Detaches a Load Balancer from a network.
hetzner.hetzner_disable_load_balancer_public_interface Write write 0 Disable the public interface of a Load Balancer. The Load Balancer will be not accessible from the internet via its public IPs. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `load_balancer_not_attached_to_network` | The Load Balancer is not attached to a network | | `422` | `targets_without_use_private_ip` | The Load Balancer has targets that use the public IP instead of the private IP |
hetzner.hetzner_enable_load_balancer_public_interface Write write 0 Enable the public interface of a Load Balancer. The Load Balancer will be accessible from the internet via its public IPs.
hetzner.hetzner_remove_load_balancer_target Write write 0 Removes a target from a Load Balancer.
hetzner.hetzner_update_load_balancer_service Write write 0 Updates a Load Balancer Service. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `source_port_already_used` | The source port you are trying to add is already in use |
hetzner.hetzner_get_load_balancer_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific Action for a Load Balancer.
hetzner.hetzner_get_load_balancer_metrics Read read 0 You must specify the type of metric to get: `open_connections`, `connections_per_second`, `requests_per_second` or `bandwidth`. You can also specify more than one type by comma separation, e.g. `requests_per_second,bandwidth`. Depending on the type you will get different time series data: |Type | Timeseries | Unit | Description | |---- |------------|------|-------------| | open_connections | open_connections | number | Open connections | | connections_per_second | connections_per_second | connections/s | Connections per second | | requests_per_second | requests_per_second | requests/s | Requests per second | | bandwidth | bandwidth.in | bytes/s | Ingress bandwidth | || bandwidth.out | bytes/s | Egress bandwidth | Metrics are available for the last 30 days only. If you do not provide the step argument we will automatically adjust it so that 200 samples are returned. We limit the number of samples to a maximum of 500 and will adjust the step parameter accordingly.
hetzner.hetzner_list_locations Read read 0 Returns all [Locations](#tag/locations).
hetzner.hetzner_get_location Read read 0 Returns a [Location](#tag/locations).
hetzner.hetzner_list_networks Read read 0 List multiple [Networks](#tag/networks). Use the provided URI parameters to modify the result.
hetzner.hetzner_create_network Write write 0 Creates a [Network](#tag/networks). The provided `ip_range` can only be extended later on, but not reduced. Subnets can be added now or later on using the [add subnet action](#tag/network-actions/add_network_subnet). If you do not specify an `ip_range` for the subnet the first available /24 range will be used. Routes can be added now or later by using the [add route action](#tag/network-actions/add_network_route).
hetzner.hetzner_list_networks_actions Read read 0 Lists multiple [Actions](#tag/actions). Use the provided URI parameters to modify the result.
hetzner.hetzner_get_networks_action Read read 0 Returns a single [Action](#tag/actions).
hetzner.hetzner_get_network Read read 0 Get a specific [Network](#tag/networks).
hetzner.hetzner_update_network Write write 0 Update a [Network](#tag/networks). If a change is currently being performed on this [Network](#tag/networks), a error response with code `conflict` will be returned.
hetzner.hetzner_delete_network Write write 0 Deletes a [Network](#tag/networks). Attached resources will be detached automatically.
hetzner.hetzner_list_network_actions Read read 0 Lists [Actions](#tag/actions) for a [Network](#tag/networks). Use the provided URI parameters to modify the result.
hetzner.hetzner_add_network_route Write write 0 Adds a route entry to a [Network](#tag/networks). If a change is currently being performed on this [Network](#tag/networks), a error response with code `conflict` will be returned.
hetzner.hetzner_add_network_subnet Write write 0 Adds a new subnet to the [Network](#tag/networks). If the subnet `ip_range` is not provided, the first available `/24` IP range will be used. If a change is currently being performed on this [Network](#tag/networks), a error response with code `conflict` will be returned.
hetzner.hetzner_change_network_ip_range Write write 0 Changes the IP range of a [Network](#tag/networks). The following restrictions apply to changing the IP range: - IP ranges can only be extended and never shrunk. - IPs can only be added to the end of the existing range, therefore only the netmask is allowed to be changed. To update the routes on the connected [Servers](#tag/servers), they need to be rebooted or the routes to be updated manually. For example if the [Network](#tag/networks) has a range of `10.0.0.0/16` to extend it the new range has to start with the IP `10.0.0.0` as well. The netmask `/16` can be changed to a smaller one then `16` therefore increasing the IP range. A valid entry would be `10.0.0.0/15`, `10.0.0.0/14` or `10.0.0.0/13` and so on. If a change is currently being performed on this [Network](#tag/networks), a error response with code `conflict` will be returned.
hetzner.hetzner_change_network_protection Write write 0 Changes the protection settings of a [Network](#tag/networks). If a change is currently being performed on this [Network](#tag/networks), a error response with code `conflict` will be returned.
hetzner.hetzner_delete_network_route Write write 0 Delete a route entry from a [Network](#tag/networks). If a change is currently being performed on this [Network](#tag/networks), a error response with code `conflict` will be returned.
hetzner.hetzner_delete_network_subnet Write write 0 Deletes a single subnet entry from a [Network](#tag/networks). Subnets containing attached resources can not be deleted, they must be detached beforehand. If a change is currently being performed on this [Network](#tag/networks), a error response with code `conflict` will be returned.
hetzner.hetzner_get_network_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific [Action](#tag/actions) for a [Network](#tag/networks).
hetzner.hetzner_list_placement_groups Read read 0 Returns all Placement Group objects.
hetzner.hetzner_create_placement_group Write write 0 Creates a new Placement Group.
hetzner.hetzner_get_placement_group Read read 0 Gets a specific Placement Group object.
hetzner.hetzner_update_placement_group Write write 0 Updates the Placement Group properties. Note: if the Placement Group object changes during the request, the response will be a "conflict" error.
hetzner.hetzner_delete_placement_group Write write 0 Deletes a Placement Group.
hetzner.hetzner_get_pricing Read read 0 Returns prices for all resources available on the platform. VAT and currency of the Project owner are used for calculations. Both net and gross prices are included in the response.
hetzner.hetzner_list_primary_ips Read read 0 List multiple [Primary IPs](#tag/primary-ips). Use the provided URI parameters to modify the result.
hetzner.hetzner_create_primary_ip Write write 0 Create a new [Primary IP](#tag/primary-ips). Can optionally be assigned to a resource by providing an `assignee_id` and `assignee_type`. If not assigned to a resource the `location` key needs to be provided. This can be either the ID or the name of the [Location](#tag/locations) this [Primary IP](#tag/primary-ips) shall be created in. A [Primary IP](#tag/primary-ips) can only be assigned to resource in the same [Location](#tag/locations) later on. The `datacenter` key is deprecated in favor of `location` and will be removed after 01 July 2026. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `server_not_stopped` | The specified [Server](#tag/servers) is running, but needs to be powered off | | `422` | `server_has_ipv4` | The [Server](#tag/servers) already has an ipv4 address | | `422` | `server_has_ipv6` | The [Server](#tag/servers) already has an ipv6 address |
hetzner.hetzner_list_primary_ips_actions Read read 0 Lists multiple [Actions](#tag/actions). Use the provided URI parameters to modify the result.
hetzner.hetzner_get_primary_ips_action Read read 0 Returns a single [Action](#tag/actions).
hetzner.hetzner_list_primary_ip_actions Read read 0 Returns all [Actions](#tag/actions) for a [Primary IP](#tag/primary-ips). Use the provided URI parameters to modify the result.
hetzner.hetzner_get_primary_ip_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific [Action](#tag/actions) for a [Primary IP](#tag/primary-ips).
hetzner.hetzner_get_primary_ip Read read 0 Returns a [Primary IP](#tag/primary-ips).
hetzner.hetzner_update_primary_ip Write write 0 Update a [Primary IP](#tag/primary-ips). If another change is concurrently performed on this [Primary IP](#tag/primary-ips), a error response with code `conflict` will be returned.
hetzner.hetzner_delete_primary_ip Write write 0 Deletes a [Primary IP](#tag/primary-ips). The [Server](#tag/servers) must be powered off (status `off`) in order for this operation to succeed. If assigned to a [Server](#tag/servers) the [Primary IP](#tag/primary-ips) will be unassigned automatically until 1 May 2026. After this date, the [Primary IP](#tag/primary-ips) needs to be unassigned before it can be deleted. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `must_be_unassigned` | Error when IP is still assigned to a Resource. This error will appear as of 1 May 2026. |
hetzner.hetzner_assign_primary_ip Write write 0 Assign a [Primary IP](#tag/primary-ips) to a resource. A [Server](#tag/servers) can only have one [Primary IP](#tag/primary-ips) of type `ipv4` and one of type `ipv6` assigned. If you need more IPs use [Floating IPs](#tag/floating-ips). A [Server](#tag/servers) must be powered off (status `off`) in order for this operation to succeed. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `server_not_stopped` | The [Server](#tag/servers) is running, but needs to be powered off | | `422` | `primary_ip_already_assigned` | [Primary IP](#tag/primary-ips) is already assigned to a different [Server](#tag/servers) | | `422` | `server_has_ipv4` | The [Server](#tag/servers) already has an IPv4 address | | `422` | `server_has_ipv6` | The [Server](#tag/servers) already has an IPv6 address |
hetzner.hetzner_change_primary_ip_dns_ptr Write write 0 Change the reverse DNS records for this [Primary IP](#tag/primary-ips). Allows to modify the PTR records set for the IP address.
hetzner.hetzner_change_primary_ip_protection Write write 0 Changes the protection configuration of a [Primary IP](#tag/primary-ips). A [Primary IPs](#tag/primary-ips) deletion protection can only be enabled if its `auto_delete` property is set to `false`.
hetzner.hetzner_unassign_primary_ip Write write 0 Unassign a [Primary IP](#tag/primary-ips) from a resource. A [Server](#tag/servers) must be powered off (status `off`) in order for this operation to succeed. A [Server](#tag/servers) requires at least one network interface (public or private) to be powered on. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `server_not_stopped` | The [Server](#tag/servers) is running, but needs to be powered off | | `422` | `server_is_load_balancer_target` | The [Server](#tag/servers) IPv4 address is a loadbalancer target |
hetzner.hetzner_list_server_types Read read 0 Gets all Server type objects.
hetzner.hetzner_get_server_type Read read 0 Gets a specific Server type object.
hetzner.hetzner_list_servers Read read 0 Returns all existing Server objects.
hetzner.hetzner_create_server Write write 0 Creates a new Server. Returns preliminary information about the Server as well as an Action that covers progress of creation. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `412` | `primary_ip_version_mismatch` | The specified Primary IP has the wrong IP Version | | `422` | `placement_error` | An error during the placement occurred | | `422` | `primary_ip_assigned` | The specified Primary IP is already assigned to a server | | `422` | `primary_ip_datacenter_mismatch` | he specified Primary IP is in a different datacenter |
hetzner.hetzner_list_servers_actions Read read 0 Returns all Action objects. You can `sort` the results by using the sort URI parameter, and filter them with the `status` and `id` parameter.
hetzner.hetzner_get_servers_action Read read 0 Returns a specific Action object.
hetzner.hetzner_get_server Read read 0 Returns a specific Server object. The Server must exist inside the Project.
hetzner.hetzner_update_server Write write 0 Updates a Server. You can update a Server's name and a Server's labels. Please note that Server names must be unique per Project and valid hostnames as per RFC 1123 (i.e. may only contain letters, digits, periods, and dashes).
hetzner.hetzner_delete_server Write write 0 Deletes a Server. This immediately removes the Server from your account, and it is no longer accessible. Any resources attached to the server (like Volumes, Primary IPs, Floating IPs, Firewalls, Placement Groups) are detached while the server is deleted.
hetzner.hetzner_list_server_actions Read read 0 Returns all Action objects for a Server. You can `sort` the results by using the sort URI parameter, and filter them with the `status` parameter.
hetzner.hetzner_add_server_to_placement_group Write write 0 Adds a Server to a Placement Group. Server must be powered off for this command to succeed. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `server_not_stopped` | The action requires a stopped server | | `422` | `already_in_placement_group` | The server is already part of a placement group |
hetzner.hetzner_attach_server_iso Write write 0 Attaches an ISO to a Server. The Server will immediately see it as a new disk. An already attached ISO will automatically be detached before the new ISO is attached. Servers with attached ISOs have a modified boot order: They will try to boot from the ISO first before falling back to hard disk.
hetzner.hetzner_attach_server_to_network Write write 0 Attaches a Server to a network. This will complement the fixed public Server interface by adding an additional ethernet interface to the Server which is connected to the specified network. The Server will get an IP auto assigned from a subnet of type `server` in the same `network_zone`. Using the `alias_ips` attribute you can also define one or more additional IPs to the Servers. Please note that you will have to configure these IPs by hand on your Server since only the primary IP will be given out by DHCP. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `server_already_attached` | The server is already attached to the network | | `422` | `ip_not_available` | The provided Network IP is not available | | `422` | `no_subnet_available` | No Subnet or IP is available for the Server within the network | | `422` | `networks_overlap` | The network IP range overlaps with one of the server networks |
hetzner.hetzner_change_server_alias_ips Write write 0 Changes the alias IPs of an already attached Network. Note that the existing aliases for the specified Network will be replaced with these provided in the request body. So if you want to add an alias IP, you have to provide the existing ones from the Network plus the new alias IP in the request body.
hetzner.hetzner_change_server_dns_ptr Write write 0 Changes the hostname that will appear when getting the hostname belonging to the primary IPs (IPv4 and IPv6) of this Server. Floating IPs assigned to the Server are not affected by this.
hetzner.hetzner_change_server_protection Write write 0 Changes the protection configuration of the Server.
hetzner.hetzner_change_server_type Write write 0 Changes the type (Cores, RAM and disk sizes) of a Server. Server must be powered off for this command to succeed. This copies the content of its disk, and starts it again. You can only migrate to Server types with the same `storage_type` and equal or bigger disks. Shrinking disks is not possible as it might destroy data. If the disk gets upgraded, the Server type can not be downgraded any more. If you plan to downgrade the Server type, set `upgrade_disk` to `false`. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `invalid_server_type` | The server type does not fit for the given server or is deprecated | | `422` | `server_not_stopped` | The action requires a stopped server |
hetzner.hetzner_create_server_image Write write 0 Creates an Image (snapshot) from a Server by copying the contents of its disks. This creates a snapshot of the current state of the disk and copies it into an Image. If the Server is currently running you must make sure that its disk content is consistent. Otherwise, the created Image may not be readable. To make sure disk content is consistent, we recommend to shut down the Server prior to creating an Image. You can either create a `backup` Image that is bound to the Server and therefore will be deleted when the Server is deleted, or you can create a `snapshot` Image which is completely independent of the Server it was created from and will survive Server deletion. Backup Images are only available when the backup option is enabled for the Server. Snapshot Images are billed on a per GB basis.
hetzner.hetzner_detach_server_from_network Write write 0 Detaches a Server from a network. The interface for this network will vanish.
hetzner.hetzner_detach_server_iso Write write 0 Detaches an ISO from a Server. In case no ISO Image is attached to the Server, the status of the returned Action is immediately set to `success`.
hetzner.hetzner_disable_server_backup Write write 0 Disables the automatic backup option and deletes all existing Backups for a Server. No more additional charges for backups will be made. Caution: This immediately removes all existing backups for the Server!
hetzner.hetzner_disable_server_rescue Write write 0 Disables the Hetzner Rescue System for a Server. This makes a Server start from its disks on next reboot. Rescue Mode is automatically disabled when you first boot into it or if you do not use it for 60 minutes. Disabling rescue mode will not reboot your Server - you will have to do this yourself.
hetzner.hetzner_enable_server_backup Write write 0 Enables and configures the automatic daily backup option for the Server. Enabling automatic backups will increase the price of the Server by 20%. In return, you will get seven slots where Images of type backup can be stored. Backups are automatically created daily.
hetzner.hetzner_enable_server_rescue Write write 0 Enable the Hetzner Rescue System for this Server. The next time a Server with enabled rescue mode boots it will start a special minimal Linux distribution designed for repair and reinstall. In case a Server cannot boot on its own you can use this to access a Server's disks. Rescue Mode is automatically disabled when you first boot into it or if you do not use it for 60 minutes. Enabling rescue mode will not [reboot](https://docs.hetzner.cloud/#server-actions-soft-reboot-a-server) your Server - you will have to do this yourself.
hetzner.hetzner_poweroff_server Write write 0 Cuts power to the Server. This forcefully stops it without giving the Server operating system time to gracefully stop. May lead to data loss, equivalent to pulling the power cord. Power off should only be used when shutdown does not work.
hetzner.hetzner_poweron_server Write write 0 Starts a Server by turning its power on.
hetzner.hetzner_reboot_server Write write 0 Reboots a Server gracefully by sending an ACPI request. The Server operating system must support ACPI and react to the request, otherwise the Server will not reboot.
hetzner.hetzner_rebuild_server Write write 0 Rebuilds a Server overwriting its disk with the content of an Image, thereby **destroying all data** on the target Server The Image can either be one you have created earlier (`backup` or `snapshot` Image) or it can be a completely fresh `system` Image provided by us. You can get a list of all available Images with `GET /images`. Your Server will automatically be powered off before the rebuild command executes.
hetzner.hetzner_remove_server_from_placement_group Write write 0 Removes a Server from a Placement Group.
hetzner.hetzner_request_server_console Write write 0 Requests credentials for remote access via VNC over websocket to keyboard, monitor, and mouse for a Server. The provided URL is valid for 1 minute, after this period a new url needs to be created to connect to the Server. How long the connection is open after the initial connect is not subject to this timeout.
hetzner.hetzner_reset_server Write write 0 Cuts power to a Server and starts it again. This forcefully stops it without giving the Server operating system time to gracefully stop. This may lead to data loss, it's equivalent to pulling the power cord and plugging it in again. Reset should only be used when reboot does not work.
hetzner.hetzner_reset_server_password Write write 0 Resets the root password. Only works for Linux systems that are running the qemu guest agent. Server must be powered on (status `running`) in order for this operation to succeed. This will generate a new password for this Server and return it. If this does not succeed you can use the rescue system to netboot the Server and manually change your Server password by hand.
hetzner.hetzner_shutdown_server Write write 0 Shuts down a Server gracefully by sending an ACPI shutdown request. The Server operating system must support ACPI and react to the request, otherwise the Server will not shut down. Please note that the `action` status in this case only reflects whether the action was sent to the server. It does not mean that the server actually shut down successfully. If you need to ensure that the server is off, use the `poweroff` action.
hetzner.hetzner_get_server_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific Action object for a Server.
hetzner.hetzner_get_server_metrics Read read 0 Get Metrics for specified Server. You must specify the type of metric to get: cpu, disk or network. You can also specify more than one type by comma separation, e.g. cpu,disk. Depending on the type you will get different time series data | Type | Timeseries | Unit | Description | |---------|-------------------------|-----------|------------------------------------------------------| | cpu | cpu | percent | Percent CPU usage | | disk | disk.0.iops.read | iop/s | Number of read IO operations per second | | | disk.0.iops.write | iop/s | Number of write IO operations per second | | | disk.0.bandwidth.read | bytes/s | Bytes read per second | | | disk.0.bandwidth.write | bytes/s | Bytes written per second | | network | network.0.pps.in | packets/s | Public Network interface packets per second received | | | network.0.pps.out | packets/s | Public Network interface packets per second sent | | | network.0.bandwidth.in | bytes/s | Public Network interface bytes/s received | | | network.0.bandwidth.out | bytes/s | Public Network interface bytes/s sent | Metrics are available for the last 30 days only. If you do not provide the step argument we will automatically adjust it so that a maximum of 200 samples are returned. We limit the number of samples returned to a maximum of 500 and will adjust the step parameter accordingly.
hetzner.hetzner_list_ssh_keys Read read 0 Returns all SSH key objects.
hetzner.hetzner_create_ssh_key Write write 0 Creates a new SSH key with the given `name` and `public_key`. Once an SSH key is created, it can be used in other calls such as creating Servers.
hetzner.hetzner_get_ssh_key Read read 0 Returns a specific SSH key object.
hetzner.hetzner_update_ssh_key Write write 0 Updates an SSH key. You can update an SSH key name and an SSH key labels.
hetzner.hetzner_delete_ssh_key Write write 0 Deletes an SSH key. It cannot be used anymore.
hetzner.hetzner_list_volumes Read read 0 Gets all existing Volumes that you have available.
hetzner.hetzner_create_volume Write write 0 Creates a new Volume attached to a Server. If you want to create a Volume that is not attached to a Server, you need to provide the `location` key instead of `server`. This can be either the ID or the name of the Location this Volume will be created in. Note that a Volume can be attached to a Server only in the same Location as the Volume itself. Specifying the Server during Volume creation will automatically attach the Volume to that Server after it has been initialized. In that case, the `next_actions` key in the response is an array which contains a single `attach_volume` action. The minimum Volume size is 10GB and the maximum size is 10TB (10240GB). A volume's name can consist of alphanumeric characters, dashes, underscores, and dots, but has to start and end with an alphanumeric character. The total length is limited to 64 characters. Volume names must be unique per Project. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `no_space_left_in_location` | There is no volume space left in the given location |
hetzner.hetzner_list_volumes_actions Read read 0 Returns all Action objects. You can `sort` the results by using the sort URI parameter, and filter them with the `status` and `id` parameter.
hetzner.hetzner_get_volumes_action Read read 0 Returns a specific Action object.
hetzner.hetzner_get_volume Read read 0 Gets a specific Volume object.
hetzner.hetzner_update_volume Write write 0 Updates the Volume properties.
hetzner.hetzner_delete_volume Write write 0 Deletes a volume. All Volume data is irreversibly destroyed. The Volume must not be attached to a Server and it must not have delete protection enabled.
hetzner.hetzner_list_volume_actions Read read 0 Returns all Action objects for a Volume. You can `sort` the results by using the sort URI parameter, and filter them with the `status` parameter.
hetzner.hetzner_attach_volume Write write 0 Attaches a Volume to a Server. Works only if the Server is in the same Location as the Volume.
hetzner.hetzner_change_volume_protection Write write 0 Changes the protection configuration of a Volume.
hetzner.hetzner_detach_volume Write write 0 Detaches a Volume from the Server it's attached to. You may attach it to a Server again at a later time.
hetzner.hetzner_resize_volume Write write 0 Changes the size of a Volume. Note that downsizing a Volume is not possible.
hetzner.hetzner_get_volume_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific Action for a Volume.
hetzner.hetzner_list_zones Read read 0 Returns all [Zones](#tag/zones). Use the provided URI parameters to modify the result.
hetzner.hetzner_create_zone Write write 0 Creates a [Zone](#tag/zones). A default `SOA` and three `NS` resource records with the assigned Hetzner nameservers are created automatically.
hetzner.hetzner_get_zone Read read 0 Returns a single [Zone](#tag/zones).
hetzner.hetzner_update_zone Write write 0 Updates a [Zone](#tag/zones). To modify resource record sets ([RRSets](#tag/zone-rrsets)), use the [RRSet Actions endpoints](#tag/zone-rrset-actions).
hetzner.hetzner_delete_zone Write write 0 Deletes a [Zone](#tag/zones).
hetzner.hetzner_get_zone_zonefile Read read 0 Returns a generated [Zone](#tag/zones) file in BIND (RFC [1034](https://datatracker.ietf.org/doc/html/rfc1034)/[1035](https://datatracker.ietf.org/doc/html/rfc1035)) format. Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_list_zones_actions Read read 0 Returns all [Zone](#tag/zones) [Actions](#tag/actions). Use the provided URI parameters to modify the result.
hetzner.hetzner_get_zones_action Read read 0 Returns a specific [Action](#tag/actions).
hetzner.hetzner_list_zone_actions Read read 0 Returns all [Actions](#tag/actions) for a [Zone](#tag/zones). Use the provided URI parameters to modify the result.
hetzner.hetzner_get_zone_action Read read 0 **Deprecated**: This operation is deprecated, see our [changelog](https://docs.hetzner.cloud/changelog#2026-04-30-deprecate-get-resource-action-endpoints) for more details. Returns a specific [Action](#tag/actions) for a [Zone](#tag/zones).
hetzner.hetzner_change_zone_primary_nameservers Write write 0 Overwrites the primary nameservers of a [Zone](#tag/zones). Only applicable for [Zones](#tag/zones) in secondary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_change_zone_protection Write write 0 Changes the protection configuration of a [Zone](#tag/zones).
hetzner.hetzner_change_zone_ttl Write write 0 Changes the default Time To Live (TTL) of a [Zone](#tag/zones). This TTL is used for [RRSets](#tag/zone-rrsets) that do not explicitly define a TTL. Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_import_zone_zonefile Write write 0 Imports a zone file, replacing all resource record sets ([RRSets](#tag/zone-rrsets)). The import will fail if existing [RRSet](#tag/zone-rrsets) are `change` protected. See [Zone file import](#tag/zones/zone-file-import) for more details. Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_list_zone_rrsets Read read 0 Returns all [RRSets](#tag/zone-rrsets) in the [Zone](#tag/zones). Use the provided URI parameters to modify the result. The maximum value for `per_page` on this endpoint is `100` instead of `50`. Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_create_zone_rrset Write write 0 Create an [RRSet](#tag/zone-rrsets) in the [Zone](#tag/zones). Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_get_zone_rrset Read read 0 Returns a single [RRSet](#tag/zone-rrsets) from the [Zone](#tag/zones). Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_update_zone_rrset Write write 0 Updates an [RRSet](#tag/zone-rrsets) in the [Zone](#tag/zones). Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_delete_zone_rrset Write write 0 Deletes an [RRSet](#tag/zone-rrsets) from the [Zone](#tag/zones). Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_change_zone_rrset_protection Write write 0 Changes the protection of an [RRSet](#tag/zone-rrsets) in the [Zone](#tag/zones). Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_change_zone_rrset_ttl Write write 0 Changes the Time To Live (TTL) of an [RRSet](#tag/zone-rrsets) in the [Zone](#tag/zones). Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_set_zone_rrset_records Write write 0 Overwrites the resource records (RRs) of an existing [RRSet](#tag/zone-rrsets) in the [Zone](#tag/zones). Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_add_zone_rrset_records Write write 0 Adds resource records (RRs) to an [RRSet](#tag/zone-rrsets) in the [Zone](#tag/zones). For convenience, the [RRSet](#tag/zone-rrsets) will be automatically created if it doesn't exist. Otherwise, the new records are appended to the existing [RRSet](#tag/zone-rrsets). Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_remove_zone_rrset_records Write write 0 Removes resource records (RRs) from an existing [RRSet](#tag/zone-rrsets) in the [Zone](#tag/zones). For convenience, the [RRSet](#tag/zone-rrsets) will be automatically deleted if it doesn't contain any RRs afterwards. Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |
hetzner.hetzner_update_zone_rrset_records Write write 0 Updates resource records' (RRs) comments of an existing [RRSet](#tag/zone-rrsets) in the [Zone](#tag/zones). Only applicable for [Zones](#tag/zones) in primary mode. #### Operation specific errors | Status | Code | Description | | --- | --- | --- | | `422` | `incorrect_zone_mode` | This operation is not supported for this Zone's `mode`. |