Jump toSuggest an edit

Deploying an Elastic Metal server with one API call

Reviewed on 24 June 2024Published on 26 May 2021

Our Elastic Metal server offer provide 100% dedicated resources, combined with the advantages of the cloud, such as hourly billing and full flexibility. The server’s hardware is entirely dedicated to you, with no virtualization, overallocation, or neighbors on it. They come combined with a powerful REST-API, allowing you to automate tasks on your machines and deploy them automatically with tools like Terraform.

The new deployment in one command feature allows you to speed up the delivery of your servers, as you do not have to wait for it to be delivered to install the server. You can do both in a single API call, and your server is up and running in less than 15 minutes.

Before you start

To complete the actions presented below, you must have:

  • A Scaleway account logged into the console
  • Owner status or IAM permissions allowing you to perform actions in the intended Organization
  • An SSH key
  • A valid API key

Deploying Elastic Metal servers using the API

Besides creating your Elastic Metal servers from the graphical Scaleway console, you can also create and manage them directly from the command line using the CLI-tool or the API.


You need to generate API keys to access the Scaleway API.

  1. Open a terminal on your computer and set your secret API key, your SSH key ID, and your Project ID as variables.

    export SCW_SECRET_KEY="<Your secret key>"
    export SCW_SSH_KEY="<Your SSH key ID>"
    export SCW_PROJECT_ID="<Your Project ID>"
  2. Retrieve a list of all operating systems available in the desired Availability Zone.

    curl -H "X-Auth-Token: $SCW_SECRET_KEY" | jq . | grep "EM-"

    A list of all available offers displays. Take note of the ID of the offer you want to deploy, as you need it in a later step.

    "name": "EM-A210R-SATA",
    "name": "EM-L101X-SATA",
    "name": "EM-A410X-SSD",
    "name": "EM-B111X-SATA",
    "name": "EM-B112X-SSD",
    "name": "EM-B211X-SATA",
    "name": "EM-B212X-SSD",
    "name": "EM-L110X-SATA",
    "name": "EM-B311X-SATA",
    "name": "EM-B312X-SSD",
    "name": "EM-T210E-NVME",
    "name": "EM-T510X-NVME",
  3. Retrieve a list of all available operating systems available in the desired Availability Zone (in our case, fr-par-2).

    curl -H "X-Auth-Token: $SCW_SECRET_KEY" | jq .

    You will receive a JSON-formatted list of all operating systems available, and their associated ID. Take note of the ID of the image you want to install:

    "total_count": 8,
    "os": [
    "id": "03b7f4ba-a6a1-4305-984e-b54fafbf1681",
    "name": "Ubuntu",
    "version": "20.04"
    "id": "60f5d1e3-fa69-45af-9fc0-c9e3c114dd09",
    "name": "Ubuntu",
    "version": "19.10"
  4. Create the Elastic Metal server from the API using cURL and the POST command on the endpoint /baremetal/v1/zones/fr-par-2/servers:

    The syntax to create the server is as follows:

    "offer_id": "<OFFER_ID>",
    "project_id": "$SCW_SECRET_KEY",
    "name": "<SERVER_NAME>",
    "description": "<SERVER_DESCRIPTION>",
    "tags": [
    "install": {
    "os_id": "<OS_ID>",
    "hostname": "<SERVER_HOSTNAME>",
    "ssh_key_ids": [

    In the following example, we create a GP-BM1-S server running on Ubuntu 20.04 LTS:

    curl -X POST -H "X-Auth-Token: $SCW_KEY" -H "Content-Type: application/json" -d "{ \"offer_id\": \"7fde3890-9787-488c-ac89-c4e00a4e5f83\", \"project_id\": \"$SCW_PROJECT\", \"name\": \"my-bmaas\", \"description\": \"my server running on ubuntu\", \"tags\": [
    \"bmaas, tutorial\" ], \"install\": { \"os_id\": \"03b7f4ba-a6a1-4305-984e-b54fafbf1681\", \"hostname\": \"my-bmaas-api\", \"ssh_key_ids\": [ \"$SSH_KEY_ID\" ] }}" | jq .

    Again, the API returns a JSON output informing you about the server creation:

    "id": "<SERVER_ID>",
    "organization_id": "<ORGANIZATION_ID>",
    "name": "my-bmaas",
    "description": "my server running on ubuntu",
    "updated_at": "2020-10-05T13:37:02.136789208Z",
    "created_at": "2020-10-05T13:37:02.136789208Z",
    "status": "delivering",
    "offer_id": "7fde3890-9787-488c-ac89-c4e00a4e5f83",
    "install": {
    "os_id": "03b7f4ba-a6a1-4305-984e-b54fafbf1681",
    "hostname": "my-bmaas-api",
    "ssh_key_ids": [
    "status": "to_install"
    "tags": [
    "bmaas, tutorial"
    "ips": [],
    "domain": "",
    "boot_type": "normal",
    "ping_status": "ping_status_unknown",
    "project_id": "<PROJECT_ID>",
    "zone": "fr-par-2"
  5. The server is being delivered to your account and is automatically being installed on the operating system chosen. You can retrieve the status of the installation using the following API call:

    curl{server_id} -H "X-Auth-Token: $SCW_SECRET_KEY" | jq .

    Your new Elastic Metal server will be installed and ready to be used in usually less than 15 minutes, all API features are listed in the API documentation.

For more information about Elastic Metal servers, refer to our dedicated product documentation and the FAQ.

Docs APIScaleway consoleDedibox consoleScaleway LearningScaleway.comPricingBlogCarreer
© 2023-2024 – Scaleway