Official Hetzner Cloud API - manage cloud servers, volumes, networks, firewalls, load balancers, images, and SSH keys.
Bring your own key. This API needs your own Hetzner Cloud key - get one from the provider, add it once below, and the proxy injects it on every call. Your OmniStream plan covers the unified SDK, key storage, and proxy - the provider's own rate limits still apply to your key.
This is a community listing. If you own this API, you can request ownership.
npm install omnistream-sdkimport { OmniClient } from "omnistream-sdk";
const omni = new OmniClient({ token: process.env.OMNI_KEY! });
// One key reaches every API on the marketplace.
const data = await omni.call("hetzner/getactions");One install, one key - the same client calls every API on the marketplace.
Can be used multiple times, the response will contain only Actions with specified IDs
Can be used multiple times.
Can be used multiple times, the response will contain only Actions with specified statuses
Get all Actions
Get an Action
Get all Certificates
Create a Certificate
Get a Certificate
Update a Certificate
/**
* HetznerCloud - generated by OmniStream from Hetzner Cloud's OpenAPI spec.
* One typed method per endpoint. A single Omni key reaches the API.
*/
const DEFAULT_BASE = "https://grid.skinvaults.online/v1/proxy/hetzner";
export class HetznerCloudError extends Error {
status: number;
code?: string;
constructor(status: number, code: string | undefined, message?: string) {
super(message || `HetznerCloud error ${status}`);
this.name = "HetznerCloudError";
this.status = status;
this.code = code;
}
}
export interface HetznerCloudOptions {
baseUrl?: string;
fetch?: typeof fetch;
timeoutMs?: number;
}
export class HetznerCloud {
/** @param token Your OmniStream key (one key for every API). */
constructor(private token: string, private opts: HetznerCloudOptions = {}) {
if (!token) throw new Error("HetznerCloud: token is required");
}
rateLimit: { remainingMinute?: number; remainingDay?: number } | null = null;
private async _request(method: string, path: string, { params, body }: { params?: Record<string, unknown>; body?: unknown } = {}): Promise<any> {
const f = this.opts.fetch ?? globalThis.fetch;
const url = new URL((this.opts.baseUrl ?? DEFAULT_BASE).replace(/\/+$/, "") + path);
if (params) for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const headers: Record<string, string> = { "x-omni-key": this.token };
if (body !== undefined) headers["content-type"] = "application/json";
const res = await f(url, { method, headers, body: body !== undefined ? JSON.stringify(body) : undefined });
this.rateLimit = {
remainingMinute: Number(res.headers.get("x-ratelimit-remaining-minute")) || undefined,
remainingDay: Number(res.headers.get("x-ratelimit-remaining-day")) || undefined,
};
const data = await res.json().catch(() => ({}));
if (!res.ok) throw new HetznerCloudError(res.status, data?.error?.code, data?.error?.message);
return data.data ?? data;
}
/** Get all Actions */
getactions(params: { "id"?: number; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/actions", { params });
}
/** Get an Action */
getactionsId(params: { "id": number }): Promise<any> {
return this._request("GET", "/actions/{id}", { params });
}
/** Get all Certificates */
getcertificates(params: { "sort"?: string; "name"?: string; "label_selector"?: string; "type"?: string }): Promise<any> {
return this._request("GET", "/certificates", { params });
}
/** Create a Certificate */
postcertificates(body: unknown): Promise<any> {
return this._request("POST", "/certificates", { body });
}
/** Get a Certificate */
getcertificatesId(params: { "id": number }): Promise<any> {
return this._request("GET", "/certificates/{id}", { params });
}
/** Update a Certificate */
putcertificatesId(body: unknown, params: { "id": number }): Promise<any> {
return this._request("PUT", "/certificates/{id}", { body, params });
}
/** Delete a Certificate */
deletecertificatesId(params: { "id": number }): Promise<any> {
return this._request("DELETE", "/certificates/{id}", { params });
}
/** Get all Actions for a Certificate */
getcertificatesIdActions(params: { "id": number; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/certificates/{id}/actions", { params });
}
/** Retry Issuance or Renewal */
postcertificatesIdActionsRetry(params: { "id": number }): Promise<any> {
return this._request("POST", "/certificates/{id}/actions/retry", { params });
}
/** Get an Action for a Certificate */
getcertificatesIdActionsActionId(params: { "id": number; "action_id": number }): Promise<any> {
return this._request("GET", "/certificates/{id}/actions/{action_id}", { params });
}
/** Get all Datacenters */
getdatacenters(params: { "name"?: string }): Promise<any> {
return this._request("GET", "/datacenters", { params });
}
/** Get a Datacenter */
getdatacentersId(params: { "id": number }): Promise<any> {
return this._request("GET", "/datacenters/{id}", { params });
}
/** Get all Firewalls */
getfirewalls(params: { "sort"?: string; "name"?: string; "label_selector"?: string }): Promise<any> {
return this._request("GET", "/firewalls", { params });
}
/** Create a Firewall */
postfirewalls(body: unknown): Promise<any> {
return this._request("POST", "/firewalls", { body });
}
/** Get a Firewall */
getfirewallsId(params: { "id": number }): Promise<any> {
return this._request("GET", "/firewalls/{id}", { params });
}
/** Update a Firewall */
putfirewallsId(body: unknown, params: { "id": number }): Promise<any> {
return this._request("PUT", "/firewalls/{id}", { body, params });
}
/** Delete a Firewall */
deletefirewallsId(params: { "id": number }): Promise<any> {
return this._request("DELETE", "/firewalls/{id}", { params });
}
/** Get all Actions for a Firewall */
getfirewallsIdActions(params: { "id": number; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/firewalls/{id}/actions", { params });
}
/** Apply to Resources */
postfirewallsIdActionsApplyToResources(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/firewalls/{id}/actions/apply_to_resources", { body, params });
}
/** Remove from Resources */
postfirewallsIdActionsRemoveFromResources(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/firewalls/{id}/actions/remove_from_resources", { body, params });
}
/** Set Rules */
postfirewallsIdActionsSetRules(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/firewalls/{id}/actions/set_rules", { body, params });
}
/** Get an Action for a Firewall */
getfirewallsIdActionsActionId(params: { "id": number; "action_id": number }): Promise<any> {
return this._request("GET", "/firewalls/{id}/actions/{action_id}", { params });
}
/** Get all Floating IPs */
getfloatingIps(params: { "name"?: string; "label_selector"?: string; "sort"?: string }): Promise<any> {
return this._request("GET", "/floating_ips", { params });
}
/** Create a Floating IP */
postfloatingIps(body: unknown): Promise<any> {
return this._request("POST", "/floating_ips", { body });
}
/** Get a Floating IP */
getfloatingIpsId(params: { "id": number }): Promise<any> {
return this._request("GET", "/floating_ips/{id}", { params });
}
/** Update a Floating IP */
putfloatingIpsId(body: unknown, params: { "id": number }): Promise<any> {
return this._request("PUT", "/floating_ips/{id}", { body, params });
}
/** Delete a Floating IP */
deletefloatingIpsId(params: { "id": number }): Promise<any> {
return this._request("DELETE", "/floating_ips/{id}", { params });
}
/** Get all Actions for a Floating IP */
getfloatingIpsIdActions(params: { "id": number; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/floating_ips/{id}/actions", { params });
}
/** Assign a Floating IP to a Server */
postfloatingIpsIdActionsAssign(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/floating_ips/{id}/actions/assign", { body, params });
}
/** Change reverse DNS entry for a Floating IP */
postfloatingIpsIdActionsChangeDnsPtr(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/floating_ips/{id}/actions/change_dns_ptr", { body, params });
}
/** Change Floating IP Protection */
postfloatingIpsIdActionsChangeProtection(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/floating_ips/{id}/actions/change_protection", { body, params });
}
/** Unassign a Floating IP */
postfloatingIpsIdActionsUnassign(params: { "id": number }): Promise<any> {
return this._request("POST", "/floating_ips/{id}/actions/unassign", { params });
}
/** Get an Action for a Floating IP */
getfloatingIpsIdActionsActionId(params: { "id": number; "action_id": number }): Promise<any> {
return this._request("GET", "/floating_ips/{id}/actions/{action_id}", { params });
}
/** Get all Images */
getimages(params: { "sort"?: string; "type"?: string; "status"?: string; "bound_to"?: string; "include_deprecated"?: boolean; "name"?: string; "label_selector"?: string }): Promise<any> {
return this._request("GET", "/images", { params });
}
/** Get an Image */
getimagesId(params: { "id": number }): Promise<any> {
return this._request("GET", "/images/{id}", { params });
}
/** Update an Image */
putimagesId(body: unknown, params: { "id": number }): Promise<any> {
return this._request("PUT", "/images/{id}", { body, params });
}
/** Delete an Image */
deleteimagesId(params: { "id": number }): Promise<any> {
return this._request("DELETE", "/images/{id}", { params });
}
/** Get all Actions for an Image */
getimagesIdActions(params: { "id": number; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/images/{id}/actions", { params });
}
/** Change Image Protection */
postimagesIdActionsChangeProtection(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/images/{id}/actions/change_protection", { body, params });
}
/** Get an Action for an Image */
getimagesIdActionsActionId(params: { "id": number; "action_id": number }): Promise<any> {
return this._request("GET", "/images/{id}/actions/{action_id}", { params });
}
/** Get all ISOs */
getisos(params: { "name"?: string }): Promise<any> {
return this._request("GET", "/isos", { params });
}
/** Get an ISO */
getisosId(params: { "id": number }): Promise<any> {
return this._request("GET", "/isos/{id}", { params });
}
/** Get all Load Balancer Types */
getloadBalancerTypes(params: { "name"?: string }): Promise<any> {
return this._request("GET", "/load_balancer_types", { params });
}
/** Get a Load Balancer Type */
getloadBalancerTypesId(params: { "id": number }): Promise<any> {
return this._request("GET", "/load_balancer_types/{id}", { params });
}
/** Get all Load Balancers */
getloadBalancers(params: { "sort"?: string; "name"?: string; "label_selector"?: string }): Promise<any> {
return this._request("GET", "/load_balancers", { params });
}
/** Create a Load Balancer */
postloadBalancers(body: unknown): Promise<any> {
return this._request("POST", "/load_balancers", { body });
}
/** Get a Load Balancer */
getloadBalancersId(params: { "id": number }): Promise<any> {
return this._request("GET", "/load_balancers/{id}", { params });
}
/** Update a Load Balancer */
putloadBalancersId(body: unknown, params: { "id": number }): Promise<any> {
return this._request("PUT", "/load_balancers/{id}", { body, params });
}
/** Delete a Load Balancer */
deleteloadBalancersId(params: { "id": number }): Promise<any> {
return this._request("DELETE", "/load_balancers/{id}", { params });
}
/** Get all Actions for a Load Balancer */
getloadBalancersIdActions(params: { "id": number; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/load_balancers/{id}/actions", { params });
}
/** Add Service */
postloadBalancersIdActionsAddService(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/add_service", { body, params });
}
/** Add Target */
postloadBalancersIdActionsAddTarget(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/add_target", { body, params });
}
/** Attach a Load Balancer to a Network */
postloadBalancersIdActionsAttachToNetwork(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/attach_to_network", { body, params });
}
/** Change Algorithm */
postloadBalancersIdActionsChangeAlgorithm(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/change_algorithm", { body, params });
}
/** Change reverse DNS entry for this Load Balancer */
postloadBalancersIdActionsChangeDnsPtr(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/change_dns_ptr", { body, params });
}
/** Change Load Balancer Protection */
postloadBalancersIdActionsChangeProtection(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/change_protection", { body, params });
}
/** Change the Type of a Load Balancer */
postloadBalancersIdActionsChangeType(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/change_type", { body, params });
}
/** Delete Service */
postloadBalancersIdActionsDeleteService(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/delete_service", { body, params });
}
/** Detach a Load Balancer from a Network */
postloadBalancersIdActionsDetachFromNetwork(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/detach_from_network", { body, params });
}
/** Disable the public interface of a Load Balancer */
postloadBalancersIdActionsDisablePublicInterfa(params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/disable_public_interface", { params });
}
/** Enable the public interface of a Load Balancer */
postloadBalancersIdActionsEnablePublicInterfac(params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/enable_public_interface", { params });
}
/** Remove Target */
postloadBalancersIdActionsRemoveTarget(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/remove_target", { body, params });
}
/** Update Service */
postloadBalancersIdActionsUpdateService(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/load_balancers/{id}/actions/update_service", { body, params });
}
/** Get an Action for a Load Balancer */
getloadBalancersIdActionsActionId(params: { "id": number; "action_id": number }): Promise<any> {
return this._request("GET", "/load_balancers/{id}/actions/{action_id}", { params });
}
/** Get Metrics for a LoadBalancer */
getloadBalancersIdMetrics(params: { "id": number; "type": string; "start": string; "end": string; "step"?: string }): Promise<any> {
return this._request("GET", "/load_balancers/{id}/metrics", { params });
}
/** Get all Locations */
getlocations(params: { "name"?: string }): Promise<any> {
return this._request("GET", "/locations", { params });
}
/** Get a Location */
getlocationsId(params: { "id": number }): Promise<any> {
return this._request("GET", "/locations/{id}", { params });
}
/** Get all Networks */
getnetworks(params: { "name"?: string; "label_selector"?: string }): Promise<any> {
return this._request("GET", "/networks", { params });
}
/** Create a Network */
postnetworks(body: unknown): Promise<any> {
return this._request("POST", "/networks", { body });
}
/** Get a Network */
getnetworksId(params: { "id": number }): Promise<any> {
return this._request("GET", "/networks/{id}", { params });
}
/** Update a Network */
putnetworksId(body: unknown, params: { "id": number }): Promise<any> {
return this._request("PUT", "/networks/{id}", { body, params });
}
/** Delete a Network */
deletenetworksId(params: { "id": number }): Promise<any> {
return this._request("DELETE", "/networks/{id}", { params });
}
/** Get all Actions for a Network */
getnetworksIdActions(params: { "id": number; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/networks/{id}/actions", { params });
}
/** Add a route to a Network */
postnetworksIdActionsAddRoute(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/networks/{id}/actions/add_route", { body, params });
}
/** Add a subnet to a Network */
postnetworksIdActionsAddSubnet(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/networks/{id}/actions/add_subnet", { body, params });
}
/** Change IP range of a Network */
postnetworksIdActionsChangeIpRange(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/networks/{id}/actions/change_ip_range", { body, params });
}
/** Change Network Protection */
postnetworksIdActionsChangeProtection(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/networks/{id}/actions/change_protection", { body, params });
}
/** Delete a route from a Network */
postnetworksIdActionsDeleteRoute(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/networks/{id}/actions/delete_route", { body, params });
}
/** Delete a subnet from a Network */
postnetworksIdActionsDeleteSubnet(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/networks/{id}/actions/delete_subnet", { body, params });
}
/** Get an Action for a Network */
getnetworksIdActionsActionId(params: { "id": number; "action_id": number }): Promise<any> {
return this._request("GET", "/networks/{id}/actions/{action_id}", { params });
}
/** Get all PlacementGroups */
getplacementGroups(params: { "sort"?: string; "name"?: string; "label_selector"?: string; "type"?: string }): Promise<any> {
return this._request("GET", "/placement_groups", { params });
}
/** Create a PlacementGroup */
postplacementGroups(body: unknown): Promise<any> {
return this._request("POST", "/placement_groups", { body });
}
/** Get a PlacementGroup */
getplacementGroupsId(params: { "id": number }): Promise<any> {
return this._request("GET", "/placement_groups/{id}", { params });
}
/** Update a PlacementGroup */
putplacementGroupsId(body: unknown, params: { "id": number }): Promise<any> {
return this._request("PUT", "/placement_groups/{id}", { body, params });
}
/** Delete a PlacementGroup */
deleteplacementGroupsId(params: { "id": number }): Promise<any> {
return this._request("DELETE", "/placement_groups/{id}", { params });
}
/** Get all prices */
getpricing(): Promise<any> {
return this._request("GET", "/pricing", {});
}
/** Get all Primary IPs */
getprimaryIps(params: { "name"?: string; "label_selector"?: string; "ip"?: string; "sort"?: string }): Promise<any> {
return this._request("GET", "/primary_ips", { params });
}
/** Create a Primary IP */
postprimaryIps(body: unknown): Promise<any> {
return this._request("POST", "/primary_ips", { body });
}
/** Get a Primary IP */
getprimaryIpsId(params: { "id": number }): Promise<any> {
return this._request("GET", "/primary_ips/{id}", { params });
}
/** Update a Primary IP */
putprimaryIpsId(body: unknown, params: { "id": number }): Promise<any> {
return this._request("PUT", "/primary_ips/{id}", { body, params });
}
/** Delete a Primary IP */
deleteprimaryIpsId(params: { "id": number }): Promise<any> {
return this._request("DELETE", "/primary_ips/{id}", { params });
}
/** Assign a Primary IP to a resource */
postprimaryIpsIdActionsAssign(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/primary_ips/{id}/actions/assign", { body, params });
}
/** Change reverse DNS entry for a Primary IP */
postprimaryIpsIdActionsChangeDnsPtr(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/primary_ips/{id}/actions/change_dns_ptr", { body, params });
}
/** Change Primary IP Protection */
postprimaryIpsIdActionsChangeProtection(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/primary_ips/{id}/actions/change_protection", { body, params });
}
/** Unassign a Primary IP from a resource */
postprimaryIpsIdActionsUnassign(params: { "id": number }): Promise<any> {
return this._request("POST", "/primary_ips/{id}/actions/unassign", { params });
}
/** Get all Server Types */
getserverTypes(params: { "name"?: string }): Promise<any> {
return this._request("GET", "/server_types", { params });
}
/** Get a Server Type */
getserverTypesId(params: { "id": number }): Promise<any> {
return this._request("GET", "/server_types/{id}", { params });
}
/** Get all Servers */
getservers(params: { "name"?: string; "label_selector"?: string; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/servers", { params });
}
/** Create a Server */
postservers(body: unknown): Promise<any> {
return this._request("POST", "/servers", { body });
}
/** Get a Server */
getserversId(params: { "id": number }): Promise<any> {
return this._request("GET", "/servers/{id}", { params });
}
/** Update a Server */
putserversId(body: unknown, params: { "id": number }): Promise<any> {
return this._request("PUT", "/servers/{id}", { body, params });
}
/** Delete a Server */
deleteserversId(params: { "id": number }): Promise<any> {
return this._request("DELETE", "/servers/{id}", { params });
}
/** Get all Actions for a Server */
getserversIdActions(params: { "id": number; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/servers/{id}/actions", { params });
}
/** Add a Server to a Placement Group */
postserversIdActionsAddToPlacementGroup(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/add_to_placement_group", { body, params });
}
/** Attach an ISO to a Server */
postserversIdActionsAttachIso(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/attach_iso", { body, params });
}
/** Attach a Server to a Network */
postserversIdActionsAttachToNetwork(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/attach_to_network", { body, params });
}
/** Change alias IPs of a Network */
postserversIdActionsChangeAliasIps(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/change_alias_ips", { body, params });
}
/** Change reverse DNS entry for this Server */
postserversIdActionsChangeDnsPtr(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/change_dns_ptr", { body, params });
}
/** Change Server Protection */
postserversIdActionsChangeProtection(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/change_protection", { body, params });
}
/** Change the Type of a Server */
postserversIdActionsChangeType(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/change_type", { body, params });
}
/** Create Image from a Server */
postserversIdActionsCreateImage(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/create_image", { body, params });
}
/** Detach a Server from a Network */
postserversIdActionsDetachFromNetwork(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/detach_from_network", { body, params });
}
/** Detach an ISO from a Server */
postserversIdActionsDetachIso(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/detach_iso", { params });
}
/** Disable Backups for a Server */
postserversIdActionsDisableBackup(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/disable_backup", { params });
}
/** Disable Rescue Mode for a Server */
postserversIdActionsDisableRescue(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/disable_rescue", { params });
}
/** Enable and Configure Backups for a Server */
postserversIdActionsEnableBackup(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/enable_backup", { params });
}
/** Enable Rescue Mode for a Server */
postserversIdActionsEnableRescue(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/enable_rescue", { body, params });
}
/** Power off a Server */
postserversIdActionsPoweroff(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/poweroff", { params });
}
/** Power on a Server */
postserversIdActionsPoweron(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/poweron", { params });
}
/** Soft-reboot a Server */
postserversIdActionsReboot(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/reboot", { params });
}
/** Rebuild a Server from an Image */
postserversIdActionsRebuild(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/rebuild", { body, params });
}
/** Remove from Placement Group */
postserversIdActionsRemoveFromPlacementGroup(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/remove_from_placement_group", { params });
}
/** Request Console for a Server */
postserversIdActionsRequestConsole(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/request_console", { params });
}
/** Reset a Server */
postserversIdActionsReset(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/reset", { params });
}
/** Reset root Password of a Server */
postserversIdActionsResetPassword(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/reset_password", { params });
}
/** Shutdown a Server */
postserversIdActionsShutdown(params: { "id": number }): Promise<any> {
return this._request("POST", "/servers/{id}/actions/shutdown", { params });
}
/** Get an Action for a Server */
getserversIdActionsActionId(params: { "id": number; "action_id": number }): Promise<any> {
return this._request("GET", "/servers/{id}/actions/{action_id}", { params });
}
/** Get Metrics for a Server */
getserversIdMetrics(params: { "id": number; "type": string; "start": string; "end": string; "step"?: string }): Promise<any> {
return this._request("GET", "/servers/{id}/metrics", { params });
}
/** Get all SSH keys */
getsshKeys(params: { "sort"?: string; "name"?: string; "fingerprint"?: string; "label_selector"?: string }): Promise<any> {
return this._request("GET", "/ssh_keys", { params });
}
/** Create an SSH key */
postsshKeys(body: unknown): Promise<any> {
return this._request("POST", "/ssh_keys", { body });
}
/** Get a SSH key */
getsshKeysId(params: { "id": number }): Promise<any> {
return this._request("GET", "/ssh_keys/{id}", { params });
}
/** Update an SSH key */
putsshKeysId(body: unknown, params: { "id": string }): Promise<any> {
return this._request("PUT", "/ssh_keys/{id}", { body, params });
}
/** Delete an SSH key */
deletesshKeysId(params: { "id": string }): Promise<any> {
return this._request("DELETE", "/ssh_keys/{id}", { params });
}
/** Get all Volumes */
getvolumes(params: { "status"?: string; "sort"?: string; "name"?: string; "label_selector"?: string }): Promise<any> {
return this._request("GET", "/volumes", { params });
}
/** Create a Volume */
postvolumes(body: unknown): Promise<any> {
return this._request("POST", "/volumes", { body });
}
/** Get a Volume */
getvolumesId(params: { "id": number }): Promise<any> {
return this._request("GET", "/volumes/{id}", { params });
}
/** Update a Volume */
putvolumesId(body: unknown, params: { "id": string }): Promise<any> {
return this._request("PUT", "/volumes/{id}", { body, params });
}
/** Delete a Volume */
deletevolumesId(params: { "id": string }): Promise<any> {
return this._request("DELETE", "/volumes/{id}", { params });
}
/** Get all Actions for a Volume */
getvolumesIdActions(params: { "id": number; "sort"?: string; "status"?: string }): Promise<any> {
return this._request("GET", "/volumes/{id}/actions", { params });
}
/** Attach Volume to a Server */
postvolumesIdActionsAttach(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/volumes/{id}/actions/attach", { body, params });
}
/** Change Volume Protection */
postvolumesIdActionsChangeProtection(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/volumes/{id}/actions/change_protection", { body, params });
}
/** Detach Volume */
postvolumesIdActionsDetach(params: { "id": number }): Promise<any> {
return this._request("POST", "/volumes/{id}/actions/detach", { params });
}
/** Resize Volume */
postvolumesIdActionsResize(body: unknown, params: { "id": number }): Promise<any> {
return this._request("POST", "/volumes/{id}/actions/resize", { body, params });
}
/** Get an Action for a Volume */
getvolumesIdActionsActionId(params: { "id": number; "action_id": number }): Promise<any> {
return this._request("GET", "/volumes/{id}/actions/{action_id}", { params });
}
}
export default HetznerCloud;
No reviews yet. Be the first to rate this API.
Yes. Hetzner Cloud uses bearer authentication, so you bring your own key from the provider. You store it once on OmniStream and the proxy injects it into every call, so your code only ever sends your Omni key.
Official Hetzner Cloud API - manage cloud servers, volumes, networks, firewalls, load balancers, images, and SSH keys. It exposes 144 endpoints over GET, POST, PUT, DELETE, including GET /actions, GET /actions/{id}, GET /certificates.
Install the OmniStream SDK for your language and call Hetzner Cloud through it. The client is generated from this API's OpenAPI spec, so parameters and responses are fully typed, and the same client also calls every other API in the marketplace.
You can start on the free plan. OmniStream charges for the unified SDK, key storage and proxy rather than for Hetzner Cloud itself, and Hetzner Cloud's own rate limits still apply to your provider key.
Delete a Certificate
Get all Actions for a Certificate
Retry Issuance or Renewal
Get an Action for a Certificate
Get all Datacenters
Get a Datacenter
Get all Firewalls
Create a Firewall
Get a Firewall
Update a Firewall
Delete a Firewall
Get all Actions for a Firewall
Apply to Resources
Remove from Resources
Set Rules
Get an Action for a Firewall
Get all Floating IPs
Create a Floating IP
Get a Floating IP
Update a Floating IP
Delete a Floating IP
Get all Actions for a Floating IP
Assign a Floating IP to a Server
Change reverse DNS entry for a Floating IP
Change Floating IP Protection
Unassign a Floating IP
Get an Action for a Floating IP
Get all Images
Get an Image
Update an Image
Delete an Image
Get all Actions for an Image
Change Image Protection
Get an Action for an Image
Get all ISOs
Get an ISO
Get all Load Balancer Types
Get a Load Balancer Type
Get all Load Balancers
Create a Load Balancer
Get a Load Balancer
Update a Load Balancer
Delete a Load Balancer
Get all Actions for a Load Balancer
Add Service
Add Target
Attach a Load Balancer to a Network
Change Algorithm
Change reverse DNS entry for this Load Balancer
Change Load Balancer Protection
Change the Type of a Load Balancer
Delete Service
Detach a Load Balancer from a Network
Disable the public interface of a Load Balancer
Enable the public interface of a Load Balancer
Remove Target
Update Service
Get an Action for a Load Balancer
Get Metrics for a LoadBalancer
Get all Locations
Get a Location
Get all Networks
Create a Network
Get a Network
Update a Network
Delete a Network
Get all Actions for a Network
Add a route to a Network
Add a subnet to a Network
Change IP range of a Network
Change Network Protection
Delete a route from a Network
Delete a subnet from a Network
Get an Action for a Network
Get all PlacementGroups
Create a PlacementGroup
Get a PlacementGroup
Update a PlacementGroup
Delete a PlacementGroup
Get all prices
Get all Primary IPs
Create a Primary IP
Get a Primary IP
Update a Primary IP
Delete a Primary IP
Assign a Primary IP to a resource
Change reverse DNS entry for a Primary IP
Change Primary IP Protection
Unassign a Primary IP from a resource
Get all Server Types
Get a Server Type
Get all Servers
Create a Server
Get a Server
Update a Server
Delete a Server
Get all Actions for a Server
Add a Server to a Placement Group
Attach an ISO to a Server
Attach a Server to a Network
Change alias IPs of a Network
Change reverse DNS entry for this Server
Change Server Protection
Change the Type of a Server
Create Image from a Server
Detach a Server from a Network
Detach an ISO from a Server
Disable Backups for a Server
Disable Rescue Mode for a Server
Enable and Configure Backups for a Server
Enable Rescue Mode for a Server
Power off a Server
Power on a Server
Soft-reboot a Server
Rebuild a Server from an Image
Remove from Placement Group
Request Console for a Server
Reset a Server
Reset root Password of a Server
Shutdown a Server
Get an Action for a Server
Get Metrics for a Server
Get all SSH keys
Create an SSH key
Get a SSH key
Update an SSH key
Delete an SSH key
Get all Volumes
Create a Volume
Get a Volume
Update a Volume
Delete a Volume
Get all Actions for a Volume
Attach Volume to a Server
Change Volume Protection
Detach Volume
Resize Volume
Get an Action for a Volume