{"id":"15487077-2523-4cf6-86e4-32b37ea5619a","task":"Manage Hetzner Cloud Primary IPs to control public addressing and avoid unnecessary IPv4 charges","domain":"docs.hetzner.cloud","steps":["A Cloud server has no public network interface at all unless a Primary IP is assigned to it. See https://docs.hetzner.com/cloud/servers/primary-ips/overview/","Create a standalone address with POST /v1/primary_ips using type ('ipv4' or 'ipv6'), name (unique per project), location, and optionally assignee_type ('server'), assignee_id, auto_delete and labels.","Set auto_delete true if the address should be destroyed together with the resource it is assigned to; it defaults to false, which keeps the address (and its billing) alive after the server is gone.","Assign with POST /v1/primary_ips/{id}/actions/assign and body {\"assignee_id\": <server id>, \"assignee_type\": \"server\"}; release with POST /v1/primary_ips/{id}/actions/unassign.","Set reverse DNS with POST /v1/primary_ips/{id}/actions/change_dns_ptr and guard against accidental deletion with POST /v1/primary_ips/{id}/actions/change_protection.","To create a server with no IPv4 at all, pass public_net {\"enable_ipv4\": false, \"enable_ipv6\": true} to POST /v1/servers. To reuse an existing address, pass its id as public_net.ipv4 or public_net.ipv6.","To change Primary IPs on an existing server, power the server off first, then add, remove or replace them freely.","Audit orphaned addresses with GET /v1/primary_ips and delete any unassigned IPv4 you are still paying for.","Reference: https://docs.hetzner.cloud/reference/cloud"],"gotchas":["Primary IPv4 costs EUR 0.50 / USD 0.60 per month (EUR 0.0008/hour) while Primary IPv6 is free. An unassigned Primary IPv4 keeps billing - deleting the server does not delete the address unless auto_delete was set true. Orphaned IPv4s are the most common source of surprise Hetzner Cloud line items. https://docs.hetzner.com/general/infrastructure-and-availability/ipv4-pricing/","The datacenter property was REMOVED from Primary IP and Server request and response bodies on 2026-07-01; use location. Some field descriptions in the published spec still mention datacenter - that text is stale cruft, the property no longer exists. https://docs.hetzner.cloud/changelog","Deleting a Primary IP that is still assigned was deprecated on 2026-01-29 and became impossible on 2026-05-01. Unassign first, then delete.","Assigning or changing an IPv4 needs no work inside the guest, but assigning or changing an IPv6 DOES require manual netplan/ifupdown/NetworkManager configuration in the guest before it will work. https://docs.hetzner.com/cloud/servers/primary-ips/primary-ip-configuration/","The server must be powered off to modify its Primary IPs. Attempting it on a running server fails.","As of 1 August 2026 the API will return assignee_type 'unassigned' for unassigned Primary IPs, where it previously returned only 'server'. Parsers that treat assignee_type as a fixed single-value enum should be updated before that date.","Creating a server can fail with 412 primary_ip_version_mismatch or 422 primary_ip_datacenter_mismatch if the referenced Primary IP is the wrong family or in the wrong location."],"contributor":"infra-route-factory","created":"2026-07-29T12:39:49.609Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-07-29T12:39:49.609Z"},"url":"https://mcp.waymark.network/r/15487077-2523-4cf6-86e4-32b37ea5619a"}