> For the complete documentation index, see [llms.txt](https://docs.allnodes.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.allnodes.com/endpoints/bare-metal-server.md).

# Bare-Metal Server

## Get all servers

<mark style="color:blue;">`GET`</mark> `https://www.allnodes.com/api/v1/server`

This endpoint allows to get list of all your servers.

#### Headers

| Name                                            | Type   | Description  |
| ----------------------------------------------- | ------ | ------------ |
| Authorization<mark style="color:red;">\*</mark> | string | Bearer TOKEN |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  servers: [
    {
      id: number;
      alias: string;
      hostname: string | null;
      servername: string;
      platform: 'epyc' | 'threadripper' | 'ryzen' | 'core';
      cpu: {
        name: string;
        cores: number;
        threads: number;
        baseClockMhz: number;
        boostClockMhz: number;
        type: 'SINGLE' | 'DUAL';
      }
      gpu: {
        name: string;
        vramSizeGb: number;
        gddrVersion: 'GDDR6' | 'GDDR6X' | 'GDDR7';
        vendor: 'nvidia' | 'amd';
        count: number;
      } | null; 
      motherboard: {
        name: string;
        dimmCount: number;
      }
      ram: {
        ddrVersion: 'DDR4' | 'DDR5';
        totalSizeGb: number;
        stickSizeGb: number;
        stickCount: number;
        speedMts: number;
        isECC: boolean;
      }
      ssd: [
        {
          pcieVersion: '4.0' | '5.0';
          sizeGb: number;
          name: string;
          slotType: 'M2' | 'U2'; 
          count: number;
        }
      ]
      securityModules: [
        [
          {
            id: number;
            type: 'TPM_MODULE';
            manufacturer: string;
            name: string;
            model: string;
            platforms: string[];
          },
          number // count
        ]
      ]
      connectivity: {
        speedGbit: number;
      }
      traffic: {
        amountTb: number;
      }
      ipAddresses: string[];
      psu: 'SINGLE' | 'DUAL';
      powerStatus: string | null;
      ipmi: boolean;
      os: {
        name: string;
        version: string | null;
      }
      bios: {
        model: string;
        value: string;
        serial: string;
      } | null;
      location: {
        country: string;
        city: string;
      }
      datacenter: {
        id: string;
        name: string;
      }
      priceMonthlyUSD: number;
      priceHourlyUSD: number;
      currentChargesUSD: number;
      prepaidTill: string | null;
      createdAt: string;
      // Timestamp when the server was assigned to the account and marked as delivered.
      // Does not indicate OS installation completion or SSH availability.
      readyAt: string | null;
    } 
  ]  
}
```

{% endtab %}
{% endtabs %}

## Get all available Instant servers

<mark style="color:blue;">`GET`</mark> `https://www.allnodes.com/api/v1/server/hosting/instant`

This endpoint allows to get list of all available to host Instant servers.

This endpoint returns live inventory. Each `id` identifies a specific currently available physical server, not a reusable hardware configuration. Once a server is ordered, it is removed from the list. Do not cache or hard-code these IDs; fetch the latest inventory shortly before placing an order.

#### Headers

| Name                                            | Type   | Description  |
| ----------------------------------------------- | ------ | ------------ |
| Authorization<mark style="color:red;">\*</mark> | string | Bearer TOKEN |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  instantServers: [
    {
      id: number;
      platform: 'epyc' | 'threadripper' | 'ryzen' | 'core';
      cpu: {
        name: string;
        cores: number;
        threads: number;
        baseClockMhz: number;
        boostClockMhz: number;
        type: 'SINGLE' | 'DUAL';
      }
      gpu: {
        name: string;
        vramSizeGb: number;
        gddrVersion: string;
        vendor: string;
        count: number;
      } | null;
      motherboard: {
        name: string;
        dimmCount: number;
      }
      ram: {
        ddrVersion: 'DDR4' | 'DDR5';
        totalSizeGb: number;
        stickSizeGb: number;
        stickCount: number;
        speedMts: number;
        isECC: boolean;
      }
      ssd: [
        {
          pcieVersion: '4.0' | '5.0';
          sizeGb: number;
          name: string;
          slotType: 'M2' | 'U2'; 
          count: number;
        }
      ]
      securityModules: [
        {
          manufacturer: string;
          name: string;
          model: string;
          count: number;
        }
      ]
      connectivity: {
        speedGbit: number;
      }
      traffic: {
        amountTb: number;
      }
      psu: 'SINGLE' | 'DUAL';
      location: {
        country: string;
        city: string;
      }
      pricing: {
        onDemand?: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        oneMonth: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        threeMonths: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        sixMonths: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        oneYear: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
      }
    }
  ]
}
```

{% endtab %}
{% endtabs %}

## Get all available Instant server upgrades

<mark style="color:blue;">`GET`</mark> `https://www.allnodes.com/api/v1/server/hosting/instant/upgrades`

This endpoint allows to get list of all available upgrades for Instant server.

#### Headers

| Name                                            | Type   | Description  |
| ----------------------------------------------- | ------ | ------------ |
| Authorization<mark style="color:red;">\*</mark> | string | Bearer TOKEN |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  upgrades: {
    solanaPackage: {
      name: "Solana Package"
      additionalTrafficTb: number;
      pricing: {
        onDemand?: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        oneMonth: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        threeMonths: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        sixMonths: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        oneYear: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
      }
    } | null;
    additionalIp: {
      maxAdditionalIps: number;
      pricing: {
        onDemand?: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        oneMonth: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        threeMonths: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        sixMonths: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
        oneYear: {
          priceMonthlyUSD: number;
          priceHourlyUSD: number;
          discountPercent: number;
        }
      }
    }
  }
}
```

{% endtab %}
{% endtabs %}

## Get all available Instant server installation profiles

<mark style="color:blue;">`GET`</mark> `https://www.allnodes.com/api/v1/server/hosting/instant/:id/profiles`

This endpoint allows to get list of all available installation profiles (OS) for Instant server.

#### Path Parameters

| Name                                 | Type   | Description                                                           |
| ------------------------------------ | ------ | --------------------------------------------------------------------- |
| id<mark style="color:red;">\*</mark> | string | ID can be extracted from the “Get all available Instant servers” call |

#### Headers

| Name                                            | Type   | Description  |
| ----------------------------------------------- | ------ | ------------ |
| Authorization<mark style="color:red;">\*</mark> | string | Bearer TOKEN |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  profiles: [
    {
      id: number;
      name: string;
      version: string;
      allowSshKeys: boolean;
      allowSetHostname: boolean;
      allowSetRootPassword: boolean;
      diskLayouts: [
        {
          id: number;
          name: string;
        }
      ]
    }
  ]
}
```

{% endtab %}
{% endtabs %}

## Get OS installation status

<mark style="color:blue;">`GET`</mark> `https://www.allnodes.com/api/v1/server/:id/os-installation-status`

Returns the current operating system installation status for a server.

Use this endpoint after ordering an instant server to determine when the operating system installation has completed. The readyAt field returned by the server endpoints indicates when the server order was provisioned, not when the operating system became available.

Possible status values:

* pending – the installation has not started yet or is not currently reported as running or completed.
* installing – the operating system installation is in progress.
* completed – the operating system installation has completed.

Poll this endpoint until status becomes completed. After the installation completes, the server automatically reboots and requires additional time before it is ready to accept SSH connections.

#### Path Parameters

| Name                                 | Type   | Description                                                                                                                                                                                                                                                                              |
| ------------------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id<mark style="color:red;">\*</mark> | string | ID of the server whose OS installation status to retrieve. Use the `id` field of the corresponding server returned by the “Get all servers” endpoint (`servers[].id`). For a newly created server, the same ID is returned as `serverOrder.id` by the “Host an Instant server” endpoint. |

#### Headers

| Name                                            | Type   | Description  |
| ----------------------------------------------- | ------ | ------------ |
| Authorization<mark style="color:red;">\*</mark> | string | Bearer TOKEN |

{% tabs %}
{% tab title="200: OK " %}

```javascript
{
  status: 'pending' | 'installing' | 'completed';
}
```

{% endtab %}
{% endtabs %}

## Host an Instant server

<mark style="color:green;">`POST`</mark> `https://www.allnodes.com/api/v1/server/hosting/instant`

This endpoint allows to host an Instant server.

#### Headers

| Name                                            | Type   | Description  |
| ----------------------------------------------- | ------ | ------------ |
| Authorization<mark style="color:red;">\*</mark> | string | Bearer TOKEN |

**Body**

| Name                           | Type          | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| ------------------------------ | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------- | ------------------ | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `instantServerId`              | number        | ID of a specific physical server from the latest “Get all available Instant servers” response (`instantServers[].id`). Availability is not guaranteed until the order has been successfully created.                                                                                                                                                                                                                                                                                                                                                                  |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `prepaidType`                  | <p>"onDemand" | </p><p>"oneMonth"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     | </p><p>"threeMonths" | </p><p>"sixMonths" | </p><p>"oneYear"</p> | <p>Defines the prepaid billing period for the server.<br><br>This value represents the <strong>initial payment option</strong>:<br><br><code>onDemand</code> — no upfront payment. Usage is billed by UTC calendar hour, and each started hour is charged in full. Partial hours are not prorated.<br>For example, using a server from <code>12:50 UTC</code> to <code>13:10 UTC</code> results in two billable hours.<br><br><code>oneMonth</code>, <code>threeMonths</code>, <code>sixMonths</code>, <code>oneYear</code> — prepaid plans with a fixed monthly price and discounts depending on the selected period</p> |
| `instantServerPriceMonthlyUSD` | number        | The monthly price in USD that **must exactly match** the `priceMonthlyUSD` value from the selected `prepaidType` in the "Get all available Instant servers" API                                                                                                                                                                                                                                                                                                                                                                                                       |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `solanaPackage`                | boolean       | <p>Whether to enable the <strong>Solana Package Traffic Upgrade</strong> for this server.<br></p><ul><li><code>true</code> — Solana traffic package will be added.</li><li><code>false</code> — no Solana traffic upgrade</li></ul>                                                                                                                                                                                                                                                                                                                                   |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `additionalIpCount`            | number        | <p>Number of additional IPv4 addresses to attach to the server.<br></p><ul><li>The server includes <strong>1 IPv4 address by default</strong>.</li><li>You can request up to <strong>11 additional IPv4 addresses</strong>.</li><li>Maximum total IPv4 addresses per server: <strong>12</strong></li></ul>                                                                                                                                                                                                                                                            |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `osInstallation`               | object        | Configuration object describing the operating system and installation parameters that will be automatically installed on the server                                                                                                                                                                                                                                                                                                                                                                                                                                   |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `osInstallation.profileId`     | number        | <p>ID of the operating system installation profile.</p><p>You can obtain this value from the "Get all available Instant server installation profiles" API</p>                                                                                                                                                                                                                                                                                                                                                                                                         |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `osInstallation.hostname`      | string        | <p>Hostname to be set on the server during OS installation.</p><p><br>This field is <strong>required only if</strong> the selected installation profile has <code>allowSetHostname = true</code><br><br>If the profile does not allow setting a hostname, this field must be omitted</p>                                                                                                                                                                                                                                                                              |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `osInstallation.rootPassword`  | string        | <p>Root user password for the operating system.<br></p><p>This field is <strong>required only if</strong> the selected installation profile has <code>allowSetRootPassword = true</code><br><br><br>If the profile does not allow setting a root password, this field must be omitted<br><br>The password must be between 8 and 63 characters long. It may contain uppercase and lowercase Latin letters (<code>A-Z</code>, <code>a-z</code>), digits (<code>0-9</code>), and the following special characters: <code>! @ # $ % ^ & \* \_ + - = . , : ; ?</code>.</p> |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `osInstallation.diskLayoutId`  | number        | <p>ID of the disk layout to use during OS installation.<br><br>Available disk layout IDs can be obtained from the <code>diskLayouts</code> list of the selected installation profile</p>                                                                                                                                                                                                                                                                                                                                                                              |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| `osInstallation.sshKeyIds`     | number\[]     | <p>List of SSH key IDs that will be added to the server during OS installation.<br><br></p><ul><li>SSH key IDs can be obtained from the "Get all SSH Keys" API.</li><li>This field must be provided <strong>only if</strong> the selected installation profile has <code>allowSshKeys = true</code>.</li><li>If SSH keys are not allowed by the profile, this field must be omitted</li></ul>                                                                                                                                                                         |                      |                    |                      |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |

{% tabs %}
{% tab title="201: OK " %}

```javascript
{
  serverOrder: {
    id: number;
    alias: string;
    hostname: string | null;
    servername: string;
    platform: 'epyc' | 'threadripper' | 'ryzen' | 'core';
    cpu: {
      name: string;
      cores: number;
      threads: number;
      baseClockMhz: number;
      boostClockMhz: number;
      type: 'SINGLE' | 'DUAL';
    }
    gpu: {
      name: string;
      vramSizeGb: number;
      gddrVersion: 'GDDR6' | 'GDDR6X' | 'GDDR7';
      vendor: 'nvidia' | 'amd';
      count: number;
    } | null; 
    motherboard: {
      name: string;
      dimmCount: number;
    }
    ram: {
      ddrVersion: 'DDR4' | 'DDR5';
      totalSizeGb: number;
      stickSizeGb: number;
      stickCount: number;
      speedMts: number;
      isECC: boolean;
    }
    ssd: [
      {
        pcieVersion: '4.0' | '5.0';
        sizeGb: number;
        name: string;
        slotType: 'M2' | 'U2'; 
        count: number;
      }
    ]
    securityModules: [
      [
        {
          id: number;
          type: 'TPM_MODULE';
          manufacturer: string;
          name: string;
          model: string;
          platforms: string[];
        },
        number // count
      ]
    ]
    connectivity: {
      speedGbit: number;
    }
    traffic: {
      amountTb: number;
    }
    ipAddresses: string[];
    psu: 'SINGLE' | 'DUAL';
    powerStatus: string | null;
    ipmi: boolean;
    os: {
      name: string;
      version: string | null;
    }
    bios: {
      model: string;
      value: string;
      serial: string;
    } | null;
    location: {
      country: string;
      city: string;
    }
    datacenter: {
      id: string;
      name: string;
    }
    priceMonthlyUSD: number;
    priceHourlyUSD: number;
    currentChargesUSD: number;
    prepaidTill: string | null;
    createdAt: string;
    // Timestamp when the server was assigned to the account and marked as delivered.
    // Does not indicate OS installation completion or SSH availability.
    readyAt: string | null;
  }
}
```

{% endtab %}

{% tab title="403: Forbidden" %}

```
{
  error: "NOT_REGISTERED";
  description?: string;
}
```

{% endtab %}
{% endtabs %}

## Remove a server

<mark style="color:red;">`DELETE`</mark> `https://www.allnodes.com/api/v1/server/:id`

This endpoint allows you to remove a Bare-Metal server from your account.

#### Path Parameters

| Name                                 | Type   | Description                                                                                                                                                                                                                                               |
| ------------------------------------ | ------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id<mark style="color:red;">\*</mark> | string | ID of the server to remove. Use the `id` field of the corresponding server returned by the “Get all servers” endpoint (`servers[].id`). For a newly created server, the same ID is returned as `serverOrder.id` by the “Host an Instant server” endpoint. |

#### Headers

| Name                                            | Type   | Description  |
| ----------------------------------------------- | ------ | ------------ |
| Authorization<mark style="color:red;">\*</mark> | string | Bearer TOKEN |

{% tabs %}
{% tab title="204: Server successfully removed " %}

{% endtab %}

{% tab title="404: Not Found" %}

```
{
  "error": "SERVER_NOT_FOUND"
}
```

{% endtab %}
{% endtabs %}
