API Changelog Directory

Hetzner Cloud API Changelog

Cloud

The Hetzner Cloud API — servers, volumes, networks, load balancers and firewalls.

Hetzner docs ↗Official OpenAPI spec ↗Last checked Sep 11, 20261 change tracked
Latest change is breaking

Get emailed when Hetzner Cloud API changes

We already watch this spec — add your email and we'll alert you on every change, breaking ones first. Free, no credit card, one click to stop.

Change history

Rebuilt automatically from the official OpenAPI spec. Every entry is a real diff — nothing is hand-written.

version 1.0.01.0.0

ChangeTypeSeverityWhy it matters
GET /actionsresponse 200 type changedBreakingResponse 200 field "actions[].finished": string,null → string,null
GET /actionsresponse 200 type changedBreakingResponse 200 field "actions[].error": object,null → object,null
GET /actionsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /actionsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /actions/{id}response 200 type changedBreakingResponse 200 field "action.finished": string,null → string,null
GET /actions/{id}response 200 type changedBreakingResponse 200 field "action.error": object,null → object,null
GET /actions/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /actions/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "certificates[].certificate": string,null → string,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "certificates[].not_valid_before": string,null → string,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "certificates[].not_valid_after": string,null → string,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "certificates[].fingerprint": string,null → string,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "certificates[].status": object,null → object,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "certificates[].status.error": object,null → object,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "meta.pagination.previous_page": integer,null → integer,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "meta.pagination.next_page": integer,null → integer,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "meta.pagination.last_page": integer,null → integer,null
GET /certificatesresponse 200 type changedBreakingResponse 200 field "meta.pagination.total_entries": integer,null → integer,null
GET /certificatesresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /certificatesresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
POST /certificatesresponse 201 type changedBreakingResponse 201 field "certificate.certificate": string,null → string,null
POST /certificatesresponse 201 type changedBreakingResponse 201 field "certificate.not_valid_before": string,null → string,null
POST /certificatesresponse 201 type changedBreakingResponse 201 field "certificate.not_valid_after": string,null → string,null
POST /certificatesresponse 201 type changedBreakingResponse 201 field "certificate.fingerprint": string,null → string,null
POST /certificatesresponse 201 type changedBreakingResponse 201 field "certificate.status": object,null → object,null
POST /certificatesresponse 201 type changedBreakingResponse 201 field "certificate.status.error": object,null → object,null
POST /certificatesresponse 201 type changedBreakingResponse 201 field "action": object,null → object,null
POST /certificatesresponse 201 type changedBreakingResponse 201 field "action.finished": string,null → string,null
POST /certificatesresponse 201 type changedBreakingResponse 201 field "action.error": object,null → object,null
POST /certificatesresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
POST /certificatesresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /certificates/actionsresponse 200 type changedBreakingResponse 200 field "actions[].finished": string,null → string,null
GET /certificates/actionsresponse 200 type changedBreakingResponse 200 field "actions[].error": object,null → object,null
GET /certificates/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.previous_page": integer,null → integer,null
GET /certificates/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.next_page": integer,null → integer,null
GET /certificates/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.last_page": integer,null → integer,null
GET /certificates/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.total_entries": integer,null → integer,null
GET /certificates/actionsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /certificates/actionsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /certificates/actions/{id}response 200 type changedBreakingResponse 200 field "action.finished": string,null → string,null
GET /certificates/actions/{id}response 200 type changedBreakingResponse 200 field "action.error": object,null → object,null
GET /certificates/actions/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /certificates/actions/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.certificate": string,null → string,null
GET /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.not_valid_before": string,null → string,null
GET /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.not_valid_after": string,null → string,null
GET /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.fingerprint": string,null → string,null
GET /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.status": object,null → object,null
GET /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.status.error": object,null → object,null
GET /certificates/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /certificates/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
PUT /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.certificate": string,null → string,null
PUT /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.not_valid_before": string,null → string,null
PUT /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.not_valid_after": string,null → string,null
PUT /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.fingerprint": string,null → string,null
PUT /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.status": object,null → object,null
PUT /certificates/{id}response 200 type changedBreakingResponse 200 field "certificate.status.error": object,null → object,null
PUT /certificates/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
PUT /certificates/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
DELETE /certificates/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
DELETE /certificates/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /certificates/{id}/actionsresponse 200 type changedBreakingResponse 200 field "actions[].finished": string,null → string,null
GET /certificates/{id}/actionsresponse 200 type changedBreakingResponse 200 field "actions[].error": object,null → object,null
GET /certificates/{id}/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.previous_page": integer,null → integer,null
GET /certificates/{id}/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.next_page": integer,null → integer,null
GET /certificates/{id}/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.last_page": integer,null → integer,null
GET /certificates/{id}/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.total_entries": integer,null → integer,null
GET /certificates/{id}/actionsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /certificates/{id}/actionsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
POST /certificates/{id}/actions/retryresponse 201 type changedBreakingResponse 201 field "action.finished": string,null → string,null
POST /certificates/{id}/actions/retryresponse 201 type changedBreakingResponse 201 field "action.error": object,null → object,null
POST /certificates/{id}/actions/retryresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
POST /certificates/{id}/actions/retryresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /certificates/{id}/actions/{action_id}response 200 type changedBreakingResponse 200 field "action.finished": string,null → string,null
GET /certificates/{id}/actions/{action_id}response 200 type changedBreakingResponse 200 field "action.error": object,null → object,null
GET /certificates/{id}/actions/{action_id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /certificates/{id}/actions/{action_id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /datacentersresponse 200 type changedBreakingResponse 200 field "meta.pagination.previous_page": integer,null → integer,null
GET /datacentersresponse 200 type changedBreakingResponse 200 field "meta.pagination.next_page": integer,null → integer,null
GET /datacentersresponse 200 type changedBreakingResponse 200 field "meta.pagination.last_page": integer,null → integer,null
GET /datacentersresponse 200 type changedBreakingResponse 200 field "meta.pagination.total_entries": integer,null → integer,null
GET /datacentersresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /datacentersresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /datacenters/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /datacenters/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /firewallsresponse 200 type changedBreakingResponse 200 field "firewalls[].rules[].description": string,null → string,null
GET /firewallsresponse 200 type changedBreakingResponse 200 field "firewalls[].rules[].port": string,null → string,null
GET /firewallsresponse 200 type changedBreakingResponse 200 field "meta.pagination.previous_page": integer,null → integer,null
GET /firewallsresponse 200 type changedBreakingResponse 200 field "meta.pagination.next_page": integer,null → integer,null
GET /firewallsresponse 200 type changedBreakingResponse 200 field "meta.pagination.last_page": integer,null → integer,null
GET /firewallsresponse 200 type changedBreakingResponse 200 field "meta.pagination.total_entries": integer,null → integer,null
GET /firewallsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /firewallsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
POST /firewallsrequest body type changedBreakingstring,null → string,null
POST /firewallsresponse 201 type changedBreakingResponse 201 field "firewall.rules[].description": string,null → string,null
POST /firewallsresponse 201 type changedBreakingResponse 201 field "firewall.rules[].port": string,null → string,null
POST /firewallsresponse 201 type changedBreakingResponse 201 field "actions[].finished": string,null → string,null
POST /firewallsresponse 201 type changedBreakingResponse 201 field "actions[].error": object,null → object,null
POST /firewallsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
POST /firewallsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /firewalls/actionsresponse 200 type changedBreakingResponse 200 field "actions[].finished": string,null → string,null
GET /firewalls/actionsresponse 200 type changedBreakingResponse 200 field "actions[].error": object,null → object,null
GET /firewalls/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.previous_page": integer,null → integer,null
GET /firewalls/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.next_page": integer,null → integer,null
GET /firewalls/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.last_page": integer,null → integer,null
GET /firewalls/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.total_entries": integer,null → integer,null
GET /firewalls/actionsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /firewalls/actionsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /firewalls/actions/{id}response 200 type changedBreakingResponse 200 field "action.finished": string,null → string,null
GET /firewalls/actions/{id}response 200 type changedBreakingResponse 200 field "action.error": object,null → object,null
GET /firewalls/actions/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /firewalls/actions/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /firewalls/{id}response 200 type changedBreakingResponse 200 field "firewall.rules[].description": string,null → string,null
GET /firewalls/{id}response 200 type changedBreakingResponse 200 field "firewall.rules[].port": string,null → string,null
GET /firewalls/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /firewalls/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
PUT /firewalls/{id}response 200 type changedBreakingResponse 200 field "firewall.rules[].description": string,null → string,null
PUT /firewalls/{id}response 200 type changedBreakingResponse 200 field "firewall.rules[].port": string,null → string,null
PUT /firewalls/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
PUT /firewalls/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
DELETE /firewalls/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
DELETE /firewalls/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /firewalls/{id}/actionsresponse 200 type changedBreakingResponse 200 field "actions[].finished": string,null → string,null
GET /firewalls/{id}/actionsresponse 200 type changedBreakingResponse 200 field "actions[].error": object,null → object,null
GET /firewalls/{id}/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.previous_page": integer,null → integer,null
GET /firewalls/{id}/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.next_page": integer,null → integer,null
GET /firewalls/{id}/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.last_page": integer,null → integer,null
GET /firewalls/{id}/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.total_entries": integer,null → integer,null
GET /firewalls/{id}/actionsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /firewalls/{id}/actionsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
POST /firewalls/{id}/actions/apply_to_resourcesresponse 201 type changedBreakingResponse 201 field "actions[].finished": string,null → string,null
POST /firewalls/{id}/actions/apply_to_resourcesresponse 201 type changedBreakingResponse 201 field "actions[].error": object,null → object,null
POST /firewalls/{id}/actions/apply_to_resourcesresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
POST /firewalls/{id}/actions/apply_to_resourcesresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
POST /firewalls/{id}/actions/remove_from_resourcesresponse 201 type changedBreakingResponse 201 field "actions[].finished": string,null → string,null
POST /firewalls/{id}/actions/remove_from_resourcesresponse 201 type changedBreakingResponse 201 field "actions[].error": object,null → object,null
POST /firewalls/{id}/actions/remove_from_resourcesresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
POST /firewalls/{id}/actions/remove_from_resourcesresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
POST /firewalls/{id}/actions/set_rulesrequest body type changedBreakingstring,null → string,null
POST /firewalls/{id}/actions/set_rulesresponse 201 type changedBreakingResponse 201 field "actions[].finished": string,null → string,null
POST /firewalls/{id}/actions/set_rulesresponse 201 type changedBreakingResponse 201 field "actions[].error": object,null → object,null
POST /firewalls/{id}/actions/set_rulesresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
POST /firewalls/{id}/actions/set_rulesresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /firewalls/{id}/actions/{action_id}response 200 type changedBreakingResponse 200 field "action.finished": string,null → string,null
GET /firewalls/{id}/actions/{action_id}response 200 type changedBreakingResponse 200 field "action.error": object,null → object,null
GET /firewalls/{id}/actions/{action_id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /firewalls/{id}/actions/{action_id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /floating_ipsresponse 200 constraint changedOKResponse 200 field "floating_ips[].name": minLength: (none) → 1
GET /floating_ipsresponse 200 constraint changedOKResponse 200 field "floating_ips[].name": maxLength: (none) → 255
GET /floating_ipsresponse 200 type changedBreakingResponse 200 field "floating_ips[].description": string,null → string,null
GET /floating_ipsresponse 200 type changedBreakingResponse 200 field "floating_ips[].server": integer,null → integer,null
GET /floating_ipsresponse 200 type changedBreakingResponse 200 field "meta.pagination.previous_page": integer,null → integer,null
GET /floating_ipsresponse 200 type changedBreakingResponse 200 field "meta.pagination.next_page": integer,null → integer,null
GET /floating_ipsresponse 200 type changedBreakingResponse 200 field "meta.pagination.last_page": integer,null → integer,null
GET /floating_ipsresponse 200 type changedBreakingResponse 200 field "meta.pagination.total_entries": integer,null → integer,null
GET /floating_ipsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /floating_ipsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
POST /floating_ipsrequest body type changedBreakinginteger,null → integer,null
POST /floating_ipsrequest body type changedBreakingstring,null → string,null
POST /floating_ipsrequest body constraint changedBreakingminLength: (none) → 1
POST /floating_ipsrequest body constraint changedBreakingmaxLength: (none) → 255
POST /floating_ipsresponse 201 constraint changedOKResponse 201 field "floating_ip.name": minLength: (none) → 1
POST /floating_ipsresponse 201 constraint changedOKResponse 201 field "floating_ip.name": maxLength: (none) → 255
POST /floating_ipsresponse 201 type changedBreakingResponse 201 field "floating_ip.description": string,null → string,null
POST /floating_ipsresponse 201 type changedBreakingResponse 201 field "floating_ip.server": integer,null → integer,null
POST /floating_ipsresponse 201 type changedBreakingResponse 201 field "action": object,null → object,null
POST /floating_ipsresponse 201 type changedBreakingResponse 201 field "action.finished": string,null → string,null
POST /floating_ipsresponse 201 type changedBreakingResponse 201 field "action.error": object,null → object,null
POST /floating_ipsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
POST /floating_ipsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /floating_ips/actionsresponse 200 type changedBreakingResponse 200 field "actions[].finished": string,null → string,null
GET /floating_ips/actionsresponse 200 type changedBreakingResponse 200 field "actions[].error": object,null → object,null
GET /floating_ips/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.previous_page": integer,null → integer,null
GET /floating_ips/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.next_page": integer,null → integer,null
GET /floating_ips/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.last_page": integer,null → integer,null
GET /floating_ips/actionsresponse 200 type changedBreakingResponse 200 field "meta.pagination.total_entries": integer,null → integer,null
GET /floating_ips/actionsresponse 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /floating_ips/actionsresponse 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /floating_ips/actions/{id}response 200 type changedBreakingResponse 200 field "action.finished": string,null → string,null
GET /floating_ips/actions/{id}response 200 type changedBreakingResponse 200 field "action.error": object,null → object,null
GET /floating_ips/actions/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /floating_ips/actions/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /floating_ips/{id}response 200 constraint changedOKResponse 200 field "floating_ip.name": minLength: (none) → 1
GET /floating_ips/{id}response 200 constraint changedOKResponse 200 field "floating_ip.name": maxLength: (none) → 255
GET /floating_ips/{id}response 200 type changedBreakingResponse 200 field "floating_ip.description": string,null → string,null
GET /floating_ips/{id}response 200 type changedBreakingResponse 200 field "floating_ip.server": integer,null → integer,null
GET /floating_ips/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
GET /floating_ips/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
PUT /floating_ips/{id}request body type changedBreakingstring,null → string,null
PUT /floating_ips/{id}request body constraint changedBreakingminLength: (none) → 1
PUT /floating_ips/{id}request body constraint changedBreakingmaxLength: (none) → 255
PUT /floating_ips/{id}response 200 constraint changedOKResponse 200 field "floating_ip.name": minLength: (none) → 1
PUT /floating_ips/{id}response 200 constraint changedOKResponse 200 field "floating_ip.name": maxLength: (none) → 255
PUT /floating_ips/{id}response 200 type changedBreakingResponse 200 field "floating_ip.description": string,null → string,null
PUT /floating_ips/{id}response 200 type changedBreakingResponse 200 field "floating_ip.server": integer,null → integer,null
PUT /floating_ips/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
PUT /floating_ips/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
DELETE /floating_ips/{id}response 4xx type changedBreakingResponse 4xx field "error.details": object,null → object,null
DELETE /floating_ips/{id}response 5xx type changedBreakingResponse 5xx field "error.details": object,null → object,null
GET /floating_ips/{id}/actionsresponse 200 type changedBreakingResponse 200 field "actions[].finished": string,null → string,null

Showing the first 200 changes of this update.

This is what your consumers wish your API had.

Point us at your own OpenAPI spec and get the same automatic changelog, plus email alerts and breaking-change classification on every release.