Hetzner Cloud API mit cURL

Hetzner hat eine saubere REST-API mit der man Server, Firewalls, DNS und mehr per Script verwalten kann.
Praktisch für automatisierte Setups oder wenn man mal schnell einen Server hochziehen will.

API-Token erstellen

In der Hetzner Cloud Console unter Security → API Tokens einen neuen Token mit Read+Write erstellen.

Einfache Bash-Funktion

HCLOUD_TOKEN="mein-api-token"

hcloud() {
    local method="$1"
    local endpoint="$2"
    local data="${3:-}"

    curl -s \
        -X "$method" \
        -H "Authorization: Bearer $HCLOUD_TOKEN" \
        -H "Content-Type: application/json" \
        ${data:+-d "$data"} \
        "https://api.hetzner.cloud/v1/$endpoint"
}

Alle Server auflisten

hcloud GET servers | jq '.servers[] | {id: .id, name: .name, ip: .public_net.ipv4.ip, status: .status}'

Neuen Server erstellen

hcloud POST servers '{
    "name": "web-01",
    "server_type": "cx22",
    "image": "debian-12",
    "location": "nbg1",
    "ssh_keys": ["mein-ssh-key"]
}'

Server löschen

hcloud DELETE servers/12345678

Firewall-Regeln abrufen

hcloud GET firewalls | jq '.firewalls[].name'

DNS über Hetzner DNS API

curl -s \
    -H "Auth-API-Token: $HDNS_TOKEN" \
    "https://dns.hetzner.com/api/v1/zones" \
    | jq '.zones[].name'

Das ist eine separate API mit eigenem Token — nicht mit dem Cloud-Token verwechseln.