Scaleway API documentation.

The Scaleway API allows you to manage servers and resources in a simple, programmatic way using conventional HTTP requests. All features you will find in the web control panel are also available through the API.

Request and response

Our API works over https and is accessed from several endpoints:

  • account.scaleway.com for Account related actions.

  • cp-<region>.scaleway.com for Compute Power related actions, where <region> is par1 or ams1.

All data is sent and received as json.

Constructing Requests

Requests are made of two components:

  • Base URL: https://cp-par1.scaleway.com or https://cp-ams1.scaleway.com

  • Resource path: servers

To construct a proper request, you need to format the URL as follows:

https://cp-<region>.scaleway.com/{resource}

Example: https://cp-par1.scaleway.com/volumes/f929fe39-63f8-4be8-a80e-1e9c8ae22a76

The following code is an example request to retrieve detailed informations about a volume

% curl -H 'X-Auth-Token: 017ce0ce-20ec-4d4ez-b44c-e561a23481d2c' -H 'Content-Type: application/json' https://cp-par1.scaleway.com/volumes/f929fe39-63f8-4be8-a80e-1e9c8ae22a76 -i

HTTP/1.1 200 OK
Server: nginx
Date: Thu, 22 May 2014 07:55:00 GMT
Content-Type: application/json
Content-Length: 1345
Connection: keep-alive
X-Sentry-ID: None
Strict-Transport-Security: max-age=86400

{
  "volumes": [
    {
      "export_uri": null,
      "id": "f929fe39-63f8-4be8-a80e-1e9c8ae22a76",
      "name": "volume-0-1",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "server": null,
      "size": 10000000000,
      "volume_type": "l_ssd"
    },
    {
      "export_uri": null,
      "id": "0facb6b5-b117-441a-81c1-f28b1d723779",
      "name": "volume-0-2",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "server": null,
      "size": 20000000000,
      "volume_type": "l_ssd"
    }
  ]
}

Basic Authentication

You authenticate to the API by requesting a token. You can create a token from the account.scaleway.com domain related to account actions with a POST request on the /tokens HTTP resource.

Basic Authentication process:

  • Query via POST request the /tokens resource see here how to

  • Supply an “X-Auth-Token” header followed by the token you get previously, e.g. “4e0b46e4-7c1d-44d4-8ba6-dc5f80694397”

curl -X GET -H "X-Auth-Token: 4e0b46e4-7c1d-44d4-8ba6-dc5f80694397" -H "Content-Type: application/json" https://account.scaleway.com/{resources}

Errors

We use conventional HTTP response codes to indicate success or failure of an API request.

In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that resulted from the provided information (e.g., a required parameter is missing), and codes in the 5xx range indicate an error with our servers.

HTTP Status Code Summary

  • 200 OK - Everything worked as expected.

  • 400 Bad Request - Often missing a required parameter.

  • 401 Unauthorized - No valid API key provided.

  • 402 Request Failed - Parameters were valid but request failed.

  • 403 Forbidden - Insufficient privileges to access requested resource.

  • 404 Not Found - The requested item doesn’t exist.

  • 50x Server errors - something went wrong on api domain’s end.

Input and output data must be valid JSON with appropriate Content-Type header set.

Attributes

  • type:

    • invalid_request_error: Occur when your request has invalid parameters.
    • invitalid_auth: Arise when there is a problem of authentication.
    • unknown_resource: Occur when the resource doesn’t exist.
    • authorization_required: You don’t have sufficient right to access the resource.
    • api_error: API errors use in case of problem with api domain’s servers
  • message:

    • A human readable error giving more details about the error
  • fields (Optional):

    • An array of parameters with an human readable message giving more details about the error.

Errors responses example

  • Response 400 (application/json)

    {
          "fields": {
              "email": [
                  "incorrect email address",
                  "required key not provided"
              ],
              "firstname": [
                  "length of value must be at least 2",
                  "required key not provided"
              ],
              "lastname": [
                  "length of value must be at least 2",
                  "required key not provided"
              ]
          },
          "message": "Validation Error",
          "type": "invalid_request_error"
      }
  • Response 401 (application/json)

    {
          "message": "The header 'X-Auth-Token' is missing",
          "type": "invalid_auth"
      }
  • Response 403 (application/json)

    {
        "message": "The token provided doesn't have the requested permission.",
        "type": "authorization_required"
      }
  • Response 404 (application/json)

    {
          "message": "User not found",
          "type": "unknown_resource"
      }

Pagination

Most of listing requests receive a paginated response. Your client needs to handle the pagination transparently as Scaleway reserves the right to paginate any non-paginted API endpoint at anytime without warning.

Paginated request

Requests against paginated endpoints accept two querystring arguments:

  • page, a positive integer to choose the page to display.

  • per_page, an positive integer lower or equal to 100 to select the number of items to display.

Paginated endpoints usually also accept filters to search and sort results. These filters are documented along each endpoint documentation.

Paginated response

% curl -H 'X-Auth-Token: <token>' 'https://cp-par1.scaleway.com/images/?page=2&per_page=10' -i
HTTP/1.0 200 OK
[...]
X-Total-Count: 209
Link: </images/?page=1&per_page=10>; rel="first",</images/?page=1&per_page=10>; rel="previous",</images/?page=3&per_page=10>; rel="next",</images/?page=21&per_page=10>; rel="last"
[...]

The X-Total-Count header contains the total number of items for the resource.

The Link header as specified by rfc 5988 helps to navigate between pages. Each programming langage has a specific way to parse it. With Python for example, the Link header can be parsed with python-requests:

>>> response = requests.get('https://cp-par1.scaleway.com/images', headers={'X-Auth-Token': '<token>'})
>>> print response.links
{'last': {'url': '/images?page=5&per_page=50', 'rel': 'last'}, 'next': {'url': '/images?page=2&per_page=50', 'rel': 'next'}}

Tokens

A Token is an identifier associated with your account. We use this token to authenticate commands in our APIs.

Tokens

POST /tokens
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "email": "jsnow@got.com",
  "password": "winteriscoming",
  "expires": false
}
Responses201
  • Headers (application/json)

    Location: https://account.cloud.online.net/tokens/9de8f869-c58e-4aa3-9208-2d4eaff5fa20
Body
{
  "token": {
    "creation_date": "2014-05-22T08:05:57.556385+00:00",
    "expires": null,
    "id": "9de8f869-c58e-4aa3-9208-2d4eaff5fa20",
    "inherits_user_perms": true,
    "permissions": [],
    "roles": {
      "organization": null,
      "role": null
    },
    "user_id": "5bea0358-db40-429e-bd82-914686a7e7b9"
  }
}

Create a token
POST/tokens

Authenticates a user against their username, password, and then returns a new Token, which can be used until it expires.

The response is an object that has a key called token. This key contain a standard token object.


GET /tokens
Responses200
Headers
Content-Type: application/json
Body
{
    {
        "tokens": [
            {
                "creation_date": "2014-03-13T10:53:11.456319+00:00",
                "expires": null,
                "id": "4e5570fb-c854-5349-979f-9f51d608d34z",
                "inherits_user_perms": true,
                "permissions": [],
                "roles": {
                    "organization": null,
                    "role": null
                },
                "user_id": "5bea0358-db40-429e-bd82-953016a7e2s7"
            },
           {
                "creation_date": "2014-05-19T18:05:47.304433+00:00",
                "expires": "2014-05-20T14:05:06.393875+00:00",
                "id": "654c95b0-2cf5-41a3-b3cc-733ffba4b4b7",
                "inherits_user_perms": true,
                "permissions": [],
                "roles": {
                    "organization": null,
                    "role": null
                },
                "user_id": "5bea0358-db40-429e-bd82-953016a7e2s7"
            }
        ]
    }
}

List all tokens
GET/tokens

List all Tokens associate with your account

The response is an object that has a key called tokens. This key contain an array of token objects each of which contain the standard token attributes.


Token

GET /tokens/654c95b0-2cf5-41a3-b3cc-733ffba4b4b7
Responses200
Headers
Content-Type: application/json
Body
{
  "token": {
    "creation_date": "2014-05-22T08:06:51.742826+00:00",
    "expires": "2014-05-20T14:05:06.393875+00:00",
    "id": "654c95b0-2cf5-41a3-b3cc-733ffba4b4b7",
    "inherits_user_perms": true,
    "permissions": [],
    "roles": {
      "organization": null,
      "role": null
    },
    "user_id": "5bea0358-db40-429e-bd82-953016a7e2s7"
  }
}

Retrieve a token
GET/tokens/{token_id}

List an individual Token

The response is an object that has a key called token. This key contain a standard token object.

URI Parameters
HideShow
token_id
string (required) Example: 654c95b0-2cf5-41a3-b3cc-733ffba4b4b7

Token unique identifier


PATCH /tokens/654c95b0-2cf5-41a3-b3cc-733ffba4b4b7
Responses200
Headers
Content-Type: application/json
Body
{
  "token": {
    "creation_date": "2014-05-22T08:06:51.742826+00:00",
    "expires": "2014-05-22T11:18:07.786841+00:00",
    "id": "654c95b0-2cf5-41a3-b3cc-733ffba4b4b7",
    "inherits_user_perms": true,
    "permissions": [],
    "roles": {
      "organization": null,
      "role": null
    },
    "user_id": "5bea0358-db40-429e-bd82-953016a7e2s7"
  }
}

Update a token
PATCH/tokens/{token_id}

Increase Token expiration time of 30 minutes

The response is an object that has a key called token. This key contain a standard token object.

URI Parameters
HideShow
token_id
string (required) Example: 654c95b0-2cf5-41a3-b3cc-733ffba4b4b7

Token unique identifier


DELETE /tokens/654c95b0-2cf5-41a3-b3cc-733ffba4b4b7
Responses204
This response has no content.

Remove a token
DELETE/tokens/{token_id}

Delete an individual token

The response code is a 204, which means that the action was successful with no returned body data.

URI Parameters
HideShow
token_id
string (required) Example: 654c95b0-2cf5-41a3-b3cc-733ffba4b4b7

Token unique identifier


Organizations

This resources of API methods allows you to get your Organizations informations

Organizations

GET /organizations
Responses200
Headers
Content-Type: application/json
Body
{
  "organizations": [
    {
      "id": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "name": "jsnow@got.com",
      "users": [
        {
          "email": "jsnow@got.com",
          "firstname": "John",
          "fullname": "John Snow",
          "id": "59a98700-8622-4495-a11a-e1efbfac5972",
          "lastname": "Snow",
          "organizations": [
            {
              "id": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
              "name": "jsnow@got.com"
            }
          ],
          "roles": [
            {
              "organization": {
                "id": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
                "name": "jsnow@got.com"
              },
              "role": "manager"
            }
          ],
          "ssh_public_keys": []
        }
      ]
    }
  ]
}

List all organizations
GET/organizations

List all Organizations associate with your account

The response is an object that has a key called organizations. This key contain an array of organization objects each of which contain the standard organization attributes.


Users

User

GET /users/5bea0358-db40-429e-bd82-953016a7e2s7
Responses200
Headers
Content-Type: application/json
Body
"user": {
        "email": "jsnow@got.com",
        "firstname": "John",
        "fullname": "John Snow",
        "id": "5bea0358-db40-429e-bd82-953016a7e2s7",
        "lastname": "Snow",
        "organizations": null,
        "roles": null,
        "ssh_public_keys": null
    }

Retrieve a user
GET/users/{user_id}

List informations about your user account

The response is an object that has a key called user. This key contain a standard user object.

URI Parameters
HideShow
user_id
string (required) Example: 5bea0358-db40-429e-bd82-953016a7e2s7

User unique identifier


Servers

A Server is a dedicated machine for your own use. servers endpoint allow you to create, list or delete your servers.

Servers

POST /servers
Requestsexample 1
Body
{
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
  "name": "my_server",
  "image": "85917034-46b0-4cc5-8b48-f0a2245e357e",
  "commercial_type": "VC1S",
  "tags": [
    "test",
    "www"
  ],
  "enable_ipv6": true
}
Responses201
Headers
Content-Type: application/json
Location: https://cp-par1.scaleway.com/servers/3cb18e2d-f4f7-48f7-b452-59b88ae8fc8c
Body
{
  "server": {
    "bootscript": null,
    "dynamic_ip_required": true,
    "id": "3cb18e2d-f4f7-48f7-b452-59b88ae8fc8c",
    "image": {
      "id": "85917034-46b0-4cc5-8b48-f0a2245e357e",
      "name": "ubuntu working"
    },
    "name": "my_server",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "private_ip": null,
    "public_ip": null,
    "enable_ipv6": true,
    "state": "stopped",
    "ipv6": null,
    "commercial_type": "VC1S",
    "arch": "x86_64",
    "tags": [
      "test",
      "www"
    ],
    "volumes": {
      "0": {
        "export_uri": null,
        "id": "d9257116-6919-49b4-a420-dcfdff51fcb1",
        "name": "vol simple snapshot",
        "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
        "server": {
          "id": "3cb18e2d-f4f7-48f7-b452-59b88ae8fc8c",
          "name": "my_server"
        },
        "size": 10000000000,
        "volume_type": "l_ssd"
      }
    }
  }
}

Create a new server
POST/servers

Create a new server

The response is an object that has a key called server. This key contain a standard server object.


GET /servers
Responses200
Headers
Content-Type: application/json
Body
{
  "servers": [
    {
      "bootscript": null,
      "dynamic_public_ip": false,
      "id": "741db378-6b87-46d4-a8c5-4e46a09ab1f8",
      "image": {
        "id": "85917034-46b0-4cc5-8b48-f0a2245e357e",
        "name": "ubuntu working"
      },
      "name": "my_server",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "private_ip": null,
      "public_ip": null,
      "state": "running",
      "tags": [
        "test",
        "www"
      ],
      "volumes": {
        "0": {
          "export_uri": null,
          "id": "c1eb8f3a-4f0b-4b95-a71c-93223e457f5a",
          "name": "vol simple snapshot",
          "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
          "server": {
            "id": "741db378-6b87-46d4-a8c5-4e46a09ab1f8",
            "name": "my_server"
          },
          "size": 10000000000,
          "volume_type": "l_ssd"
        }
      }
    },
    {
      "bootscript": null,
      "dynamic_public_ip": false,
      "id": "0e9f85af-b6aa-401e-a00d-484f832c5024",
      "image": {
        "id": "85917034-46b0-4cc5-8b48-f0a2245e357e",
        "name": "ubuntu working"
      },
      "name": "my_server",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "private_ip": null,
      "public_ip": null,
      "state": "running",
      "tags": [
        "test",
        "www"
      ],
      "volumes": {
        "0": {
          "export_uri": null,
          "id": "fb09bb31-ecd9-4dff-8b55-b6e45715199d",
          "name": "vol simple snapshot",
          "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
          "server": {
            "id": "0e9f85af-b6aa-401e-a00d-484f832c5024",
            "name": "my_server"
          },
          "size": 10000000000,
          "volume_type": "l_ssd"
        }
      }
    }
  ]
}

List all servers
GET/servers

List all servers associate with your account

The response is an object that has a key called servers. This key contain an array of server objects each of which contain the standard server attributes.


Server

GET /servers/741db378-6b87-46d4-a8c5-4e46a09ab1f8
Responses200
Headers
Content-Type: application/json
Body
{
  "server": {
    "bootscript": null,
    "dynamic_public_ip": false,
    "id": "741db378-6b87-46d4-a8c5-4e46a09ab1f8",
    "image": {
      "id": "85917034-46b0-4cc5-8b48-f0a2245e357e",
      "name": "ubuntu working"
    },
    "name": "my_server",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "private_ip": null,
    "public_ip": null,
    "state": "running",
    "tags": [
      "test",
      "www"
    ],
    "volumes": {
      "0": {
        "export_uri": null,
        "id": "c1eb8f3a-4f0b-4b95-a71c-93223e457f5a",
        "name": "vol simple snapshot",
        "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
        "server": {
          "id": "741db378-6b87-46d4-a8c5-4e46a09ab1f8",
          "name": "my_server"
        },
        "size": 10000000000,
        "volume_type": "l_ssd"
      }
    }
  }
}

Retrieve a server
GET/servers/{server_id}

List an individual server

The response is an object that has a key called server. This key contain a standard server object.

URI Parameters
HideShow
server_id
string (required) Example: 741db378-6b87-46d4-a8c5-4e46a09ab1f8

Server unique identifier


PUT /servers/741db378-6b87-46d4-a8c5-4e46a09ab1f8
Requestsexample 1
Body
{
  "bootscript": null,
  "dynamic_public_ip": false,
  "id": "741db378-6b87-46d4-a8c5-4e46a09ab1f8",
  "image": {
    "id": "85917034-46b0-4cc5-8b48-f0a2245e357e",
    "name": "ubuntu working"
  },
  "name": "my_server",
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
  "private_ip": null,
  "public_ip": null,
  "state": "running",
  "tags": [
    "test",
    "www",
    "new"
  ],
  "volumes": {
    "0": {
      "export_uri": null,
      "id": "c39b49f4-1804-4d03-96b4-952896b0918e",
      "name": "vol simple snapshot",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "server": {
        "id": "345b862b-9198-4633-94a5-3f0307702652",
        "name": "my_server"
      },
      "size": 10000000000,
      "volume_type": "l_ssd"
    }
  }
}
Responses200
Headers
Content-Type: application/json
Body
{
  "server": {
    "bootscript": null,
    "dynamic_public_ip": false,
    "id": "741db378-6b87-46d4-a8c5-4e46a09ab1f8",
    "image": {
      "id": "85917034-46b0-4cc5-8b48-f0a2245e357e",
      "name": "ubuntu working"
    },
    "name": "my_server",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "private_ip": null,
    "public_ip": null,
    "state": "running",
    "tags": [
      "prod",
      "www",
      "new"
    ],
    "volumes": {
      "0": {
        "export_uri": null,
        "id": "c1eb8f3a-4f0b-4b95-a71c-93223e457f5a",
        "name": "vol simple snapshot",
        "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
        "server": {
          "id": "741db378-6b87-46d4-a8c5-4e46a09ab1f8",
          "name": "my_server"
        },
        "size": 10000000000,
        "volume_type": "l_ssd"
      }
    }
  }
}

Update a server
PUT/servers/{server_id}

Update details about a server

The response is an object that has a key called server. This key contain a standard server object.

URI Parameters
HideShow
server_id
string (required) Example: 741db378-6b87-46d4-a8c5-4e46a09ab1f8

Server unique identifier


DELETE /servers/741db378-6b87-46d4-a8c5-4e46a09ab1f8
Responses204
This response has no content.

Remove a server
DELETE/servers/{server_id}

Delete a server

The response code is a 204, which means that the action was successful with no returned body data.

URI Parameters
HideShow
server_id
string (required) Example: 741db378-6b87-46d4-a8c5-4e46a09ab1f8

Server unique identifier


Actions

A collection of actions to be applied on a server

GET /servers/741db378-6b87-46d4-a8c5-4e46a09ab1f8/action
Responses200
Headers
Content-Type: application/json
Body
{
  "actions": [
    "poweron",
    "poweroff",
    "reboot"
  ]
}

List all actions
GET/servers/{server_id}/action

List all actions available for the secified server

The response is an object that has a key called actions. This key contain an array of action

URI Parameters
HideShow
server_id
string (required) Example: 741db378-6b87-46d4-a8c5-4e46a09ab1f8

Server unique identifier


POST /servers/741db378-6b87-46d4-a8c5-4e46a09ab1f8/action
Requestsexample 1
Body
{
  "action": "poweroff"
}
Responses202
Headers
Content-Type: application/json
location: https://cp-par1.scaleway.com/tasks/a8a1775c-0dda-4f52-87b2-4e8101d68d6e
Body
{
  "task": {
    "description": "server_poweroff",
    "href_from": "/servers/741db378-6b87-46d4-a8c5-4e46a09ab1f8/action",
    "id": "a8a1775c-0dda-4f52-87b2-4e8101d68d6e",
    "progress": "0",
    "status": "pending"
  }
}

Execute an action
POST/servers/{server_id}/action

Execute an action on a server

The response is an object that has a key called task. This key contain a standard task object.

URI Parameters
HideShow
server_id
string (required) Example: 741db378-6b87-46d4-a8c5-4e46a09ab1f8

Server unique identifier

action
string (required) Example: poweron

Action to execute


Volumes

A Volume abstracts data storage operations for your servers in a flexible manner. volumes endpoint allow you to create, list or delete your volumes.

Volumes

POST /volumes
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "name": "volume-0-3",
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
  "size": 10000000000,
  "volume_type": "l_ssd"
}
Responses201
  • Headers (application/json)

    https://cp-par1.scaleway.com/volumes/c675f420-cfeb-48ff-ba2a-9d2a4dbe3fcd
Body
{
  "volume": {
    "export_uri": null,
    "id": "c675f420-cfeb-48ff-ba2a-9d2a4dbe3fcd",
    "name": "volume-0-3",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "server": null,
    "size": 10000000000,
    "volume_type": "l_ssd"
  }
}

Create a new volume
POST/volumes

Create a new volume

The response is an object that has a key called volume. This key contain a standard volume object.


GET /volumes
Responses200
Headers
Content-Type: application/json
Body
{
  "volumes": [
    {
      "export_uri": null,
      "id": "f929fe39-63f8-4be8-a80e-1e9c8ae22a76",
      "name": "volume-0-1",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "server": null,
      "size": 10000000000,
      "volume_type": "l_ssd"
    },
    {
      "export_uri": null,
      "id": "0facb6b5-b117-441a-81c1-f28b1d723779",
      "name": "volume-0-2",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "server": null,
      "size": 20000000000,
      "volume_type": "l_ssd"
    }
  ]
}

Retrieves all volumes
GET/volumes

List all volumes associate with your account

The response is an object that has a key called volumes. This key contain an array of volume objects each of which contain the standard volume attributes.


Volume

GET /volumes/f929fe39-63f8-4be8-a80e-1e9c8ae22a76
Responses200
Headers
Content-Type: application/json
Body
{
  "volume": {
    "export_uri": null,
    "id": "f929fe39-63f8-4be8-a80e-1e9c8ae22a76",
    "name": "volume-0-1",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "server": null,
    "size": 10000000000,
    "volume_type": "l_ssd"
  }
}

Retrieves informations about a volume
GET/volumes/{volume_id}

List an individual volume

The response is an object that has a key called volume. This key contain a standard volume object.

URI Parameters
HideShow
volume_id
string (required) Example: f929fe39-63f8-4be8-a80e-1e9c8ae22a76

Volume unique identifier


DELETE /volumes/f929fe39-63f8-4be8-a80e-1e9c8ae22a76
Responses204
This response has no content.

Delete a volume
DELETE/volumes/{volume_id}

Delete a volume

The response code is a 204, which means that the action was successful with no returned body data.

URI Parameters
HideShow
volume_id
string (required) Example: f929fe39-63f8-4be8-a80e-1e9c8ae22a76

Volume unique identifier


Snapshots

A snapshot is a full-volume copy stored in our secure data centers.

Snapshots

POST /snapshots
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "name": "snapshot-0-1",
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
  "volume_id": "701a8946-ff9d-4579-95e3-1c2c2d0f892d"
}
Responses200
Headers
Content-Type: application/json
Body
{
  "snapshot": {
    "base_volume": {
      "id": "701a8946-ff9d-4579-95e3-1c2c2d0f892d",
      "name": "vol simple snapshot"
    },
    "creation_date": "2014-05-22T12:10:05.596769+00:00",
    "id": "f0361e7b-cbe4-4882-a999-945192b7171b",
    "name": "snapshot-0-1",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "size": 10000000000,
    "state": "snapshotting",
    "volume_type": "l_ssd"
  }
}

Create a snapshot
POST/snapshots

Create a new snapshot.

The response is an object that has a key called snapshot. This key contain a standard snapshot object.


GET /snapshots
Responses200
Headers
Content-Type: application/json
Body
{
  "snapshots": [
    {
      "base_volume": {
        "id": "09a4184c-733b-43c8-99c3-f1dde30536fe",
        "name": "vol simple snapshot"
      },
      "creation_date": "2014-05-22T12:11:06.055998+00:00",
      "id": "6f418e5f-b42d-4423-a0b5-349c74c454a4",
      "name": "snapshot-0-1",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "size": 10000000000,
      "state": "snapshotting",
      "volume_type": "l_ssd"
    },
    {
      "base_volume": {
        "id": "09a4184c-733b-43c8-99c3-f1dde30536fe",
        "name": "vol simple snapshot"
      },
      "creation_date": "2014-05-22T12:13:09.877961+00:00",
      "id": "c6ff5501-eb35-44b8-aa01-8777211a830b",
      "name": "snapshot-0-2",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "size": 10000000000,
      "state": "snapshotting",
      "volume_type": "l_ssd"
    }
  ]
}

List all snapshots
GET/snapshots

List all snapshots associate with your account

The response is an object that has a key called snapshots. This key contain an array of snapshot objects each of which contain the standard snapshot attributes.


Snapshot

GET /snapshots/6f418e5f-b42d-4423-a0b5-349c74c454a4
Responses200
Headers
Content-Type: application/json
Body
{
  "snapshot": {
    "base_volume": {
      "id": "09a4184c-733b-43c8-99c3-f1dde30536fe",
      "name": "vol simple snapshot"
    },
    "creation_date": "2014-05-22T12:11:06.055998+00:00",
    "id": "6f418e5f-b42d-4423-a0b5-349c74c454a4",
    "name": "snapshot-0-1",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "size": 10000000000,
    "state": "snapshotting",
    "volume_type": "l_ssd"
  }
}

Retrieve a snapshot
GET/snapshots/{snapshot_id}

List an individual snapshot

The response is an object that has a key called snapshot. This key contain a standard snapshot object.

URI Parameters
HideShow
snapshot_id
string (required) Example: 6f418e5f-b42d-4423-a0b5-349c74c454a4

Snapshot unique identifier


PUT /snapshots/6f418e5f-b42d-4423-a0b5-349c74c454a4
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "name": "snapshot-0-1"
}
Responses200
Headers
Content-Type: application/json
Body
{
  "snapshot": {
    "base_volume": {
      "id": "09a4184c-733b-43c8-99c3-f1dde30536fe",
      "name": "vol simple snapshot"
    },
    "creation_date": "2014-05-22T12:11:06.055998+00:00",
    "id": "6f418e5f-b42d-4423-a0b5-349c74c454a4",
    "name": "snapshot-0-1",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "size": 10000000000,
    "state": "snapshotting",
    "volume_type": "l_ssd"
  }
}

Update a snapshot
PUT/snapshots/{snapshot_id}

Update details about a snapshot

The response is an object that has a key called snapshot. This key contain a standard snapshot object.

URI Parameters
HideShow
snapshot_id
string (required) Example: 6f418e5f-b42d-4423-a0b5-349c74c454a4

Snapshot unique identifier


DELETE /snapshots/6f418e5f-b42d-4423-a0b5-349c74c454a4
Responses204
This response has no content.

Remove a snapshot
DELETE/snapshots/{snapshot_id}

Delete a snapshot

The response code is a 204, which means that the action was successful with no returned body data.

URI Parameters
HideShow
snapshot_id
string (required) Example: 6f418e5f-b42d-4423-a0b5-349c74c454a4

Snapshot unique identifier


Images

Images allow you to create series of servers with predefined configuration. For instance, you can prepare to scale your serving capacity with a frontend image for an Apache server.

Images

POST /images
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
  "arch": "arm",
  "name": "my_image",
  "root_volume": "f0361e7b-cbe4-4882-a999-945192b7171b"
}
Responses201
Headers
Content-Type: application/json
Body
{
  "image": {
    "arch": "arm",
    "creation_date": "2014-05-22T12:56:56.984011+00:00",
    "extra_volumes": "[]",
    "from_image": null,
    "from_server": null,
    "id": "98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0",
    "marketplace_key": null,
    "modification_date": "2014-05-22T12:56:56.984011+00:00",
    "name": "my_image",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "public": false,
    "root_volume": {
      "id": "f0361e7b-cbe4-4882-a999-945192b7171b",
      "name": "vol-0-1"
    }
  }
}

Create a new image
POST/images

Create a new image

The response is an object that has a key called image. This key contain a standard image object.


GET /images
Responses200
Headers
Content-Type: application/json
Body
{
  "images": [
    {
      "arch": "arm",
      "creation_date": "2014-05-22T12:56:56.984011+00:00",
      "extra_volumes": "[]",
      "from_image": null,
      "from_server": null,
      "id": "98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0",
      "marketplace_key": null,
      "modification_date": "2014-05-22T12:56:56.984011+00:00",
      "name": "my_image",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "public": false,
      "root_volume": {
        "id": "f0361e7b-cbe4-4882-a999-945192b7171b",
        "name": "vol-0-1"
      }
    },
    {
      "arch": "arm",
      "creation_date": "2014-05-22T12:57:22.514299+00:00",
      "extra_volumes": "[]",
      "from_image": null,
      "from_server": null,
      "id": "1f73d975-35fc-4365-9ead-8dab7e54152f",
      "marketplace_key": null,
      "modification_date": "2014-05-22T12:57:22.514299+00:00",
      "name": "my_image_1",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "public": false,
      "root_volume": {
        "id": "f0361e7b-cbe4-4882-a999-945192b7171b",
        "name": "vol-0-2"
      }
    }
  ]
}

List all images
GET/images

List all images associate with your account

The response is an object that has a key called images. This key contain an array of image objects each of which contain the standard images attributes.


Operation on a single image

GET /images/98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0
Responses200
Headers
Content-Type: application/json
Body
{
  "image": {
    "arch": "arm",
    "creation_date": "2014-05-22T12:56:56.984011+00:00",
    "extra_volumes": "[]",
    "from_image": null,
    "from_server": null,
    "id": "98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0",
    "marketplace_key": null,
    "modification_date": "2014-05-22T12:56:56.984011+00:00",
    "name": "my_image",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "public": false,
    "root_volume": {
      "id": "f0361e7b-cbe4-4882-a999-945192b7171b",
      "name": "vol-0-1"
    }
  }
}

Retrieves an image
GET/images/{image_id}

List an individual image

The response is an object that has a key called image. This key contain a standard image object.

URI Parameters
HideShow
image_id
string (required) Example: 98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0

Image unique identifier


PUT /images/98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "arch": "arm",
  "creation_date": "2014-05-22T12:57:22.514299+00:00",
  "extra_volumes": "[]",
  "from_image": null,
  "from_server": null,
  "id": "1f73d975-35fc-4365-9ead-8dab7e54152f",
  "marketplace_key": null,
  "modification_date": "2014-05-22T12:58:42.511040+00:00",
  "name": "my_image_old",
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
  "public": false,
  "root_volume": {
    "id": "f0361e7b-cbe4-4882-a999-945192b7171b",
    "name": "vol-0-1"
  }
}
Responses200
Headers
Content-Type: application/json
Body
{
  "image": {
    "arch": "arm",
    "creation_date": "2014-05-22T12:56:56.984011+00:00",
    "extra_volumes": "[]",
    "from_image": null,
    "from_server": null,
    "id": "98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0",
    "marketplace_key": null,
    "modification_date": "2014-05-22T13:00:15.462764+00:00",
    "name": "my_image_old",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "public": false,
    "root_volume": {
      "id": "f0361e7b-cbe4-4882-a999-945192b7171b",
      "name": "TOTO"
    }
  }
}

Update an image
PUT/images/{image_id}

Update details about a image

The response is an object that has a key called image. This key contain a standard image object.

URI Parameters
HideShow
image_id
string (required) Example: 98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0

Image unique identifier


DELETE /images/98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0
Responses204
This response has no content.

Delete an image
DELETE/images/{image_id}

Delete an image

The response code is a 204, which means that the action was successful with no returned body data.

URI Parameters
HideShow
image_id
string (required) Example: 98bf3ac2-a1f5-471d-8c8f-1b706ab57ef0

Image unique identifier


IPs

A reserved IP address is a static IP address designed for cloud computing. Reserved IPs address allow you to mask the failure of a server rapidly reallocating the IPs address to another server in your account.

IPs

POST /ips
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a"
}
Responses201
Headers
Content-Type: application/json
Body
{
  "ip": {
    "address": "212.47.226.88",
    "id": "b50cd740-892d-47d3-8cbf-88510ef626e7",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "server": null
  }
}

Create a new IP
POST/ips

Create a new reserved IP address

The response is an object that has a key called ip. This key contain a standard ip object.


GET /ips
Responses200
Headers
Content-Type: application/json
Body
{
  "ips": [
    {
      "address": "212.47.226.88",
      "id": "b50cd740-892d-47d3-8cbf-88510ef626e7",
      "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
      "server": null
    }
  ]
}

Retrieves all IPs addresses
GET/ips

List all IPs associate with your account

The response is an object that has a key called ips. This key contain an array of ip objects each of which contain the standard ip attributes.


IP

GET /ips/b50cd740-892d-47d3-8cbf-88510ef626e7
Responses200
Headers
Content-Type: application/json
Body
{
  "ip": {
    "address": "212.47.226.88",
    "id": "b50cd740-892d-47d3-8cbf-88510ef626e7",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "server": null
  }
}

Retrieve an IP address
GET/ips/{ip_id}

List an individual IP address

The response is an object that has a key called ip. This key contain a standard ip object.

URI Parameters
HideShow
ip_id
string (required) Example: b50cd740-892d-47d3-8cbf-88510ef626e7

IP unique identifier


PUT /ips/b50cd740-892d-47d3-8cbf-88510ef626e7
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "address": "212.47.226.88",
  "id": "b50cd740-892d-47d3-8cbf-88510ef626e7",
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
  "server": "c2d8994f-1582-413e-8d48-c53076db06cc"
}
Responses200
Headers
Content-Type: application/json
Body
{
  "ip": {
    "address": "212.47.226.88",
    "id": "b50cd740-892d-47d3-8cbf-88510ef626e7",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "server": {
      "id": "c2d8994f-1582-413e-8d48-c53076db06cc",
      "name": "default_server_name - acfb51"
    }
  }
}

Attach an IP address
PUT/ips/{ip_id}

Allow you to remap an IP address to another server

The response is an object that has a key called ip. This key contain a standard ip object.

URI Parameters
HideShow
ip_id
string (required) Example: b50cd740-892d-47d3-8cbf-88510ef626e7

IP unique identifier


DELETE /ips/b50cd740-892d-47d3-8cbf-88510ef626e7
Responses204
This response has no content.

Remove an IP address
DELETE/ips/{ip_id}

Delete an IP

The response code is a 204, which means that the action was successful with no returned body data.

URI Parameters
HideShow
ip_id
string (required) Example: b50cd740-892d-47d3-8cbf-88510ef626e7

IP unique identifier


Security groups

Security groups are like a virtual firewall. With security groups, you can define rules that restrict network access to your servers.

Security Groups

POST /security_groups
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
  "name": "security-group-01",
  "description": "Security group 01"
}
Responses201
Headers
Content-Type: application/json
Body
{
  "security_group": {
    "description": "Security group 01",
    "enable_default_security": true,
    "id": "adb5887b-5ab5-445a-ae70-276df95a9852",
    "name": "security-group-01",
    "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
    "organization_default": false,
    "servers": []
  }
}

Create a security group
POST/security_groups

Create a new security group

The response is an object that has a key called security_group. This key contain a standard security_group object.


GET /security_groups
Responses200
Headers
Content-Type: application/json
Body
{
  "security_groups": [
    {
      "description": "Base security group",
      "enable_default_security": true,
      "id": "000a115d-2852-4b1a-9ce8-47f1134ba95a",
      "name": "Base group",
      "organization": "ecc1c86a-eabb-43a7-9c0a-77e371753c0a",
      "organization_default": true,
      "servers": [
        {
          "id": "b5614869-1967-9ce8-8cd2-801febf9a3f9",
          "name": "scw-9b0823"
        },
        {
          "id": "4167bf23-9ce8-4790-2852-d7c5b86934df",
          "name": "scw-9b088e"
        }
      ]
    }
  ]
}

List all security groups
GET/security_groups

List all security groups associate with your account

The response is an object that has a key called security_groups. This key contain an array of security group objects each of which contain the standard security_groups attributes.


Operation on a security groups

GET /security_groups/000a115d-2852-4b1a-9ce8-47f1134ba95a
Responses200
Headers
Content-Type: application/json
Body
{
  "security_group": {
    "description": "Base security group",
    "enable_default_security": true,
    "id": "000a115d-2852-4b1a-9ce8-47f1134ba95a",
    "name": "Base group",
    "organization": "ecc1c86a-eabb-43a7-9c0a-77e371753c0a",
    "organization_default": true,
    "servers": [
      {
        "id": "b5614869-1967-9ce8-8cd2-801febf9a3f9",
        "name": "scw-9b0823"
      },
      {
        "id": "4167bf23-9ce8-4790-2852-d7c5b86934df",
        "name": "scw-9b088e"
      }
    ]
  }
}

Retrieves a security group
GET/security_groups/{group_id}

List an individual security group

The response is an object that has a key called security_group. This key contain a standard security_group object.

URI Parameters
HideShow
group_id
string (required) Example: 000a115d-2852-4b1a-9ce8-47f1134ba95a

Security group id unique identifier


PUT /security_groups/000a115d-2852-4b1a-9ce8-47f1134ba95a
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "organization": "000a115d-2852-4b0a-9ce8-47f1134ba95a",
  "name": "security-group-02",
  "description": "Security group 02"
}
Responses200
Headers
Content-Type: application/json
Body
{
  "security_group": {
    "description": "Security group 02",
    "enable_default_security": true,
    "id": "000a115d-2852-4b1a-9ce8-47f1134ba95a",
    "name": "security-group-02",
    "organization": "ecc1c86a-eabb-43a7-9c0a-77e371753c0a",
    "organization_default": true,
    "servers": [
      {
        "id": "b5614869-1967-9ce8-8cd2-801febf9a3f9",
        "name": "scw-9b0823"
      },
      {
        "id": "4167bf23-9ce8-4790-2852-d7c5b86934df",
        "name": "scw-9b088e"
      }
    ]
  }
}

Update a security group
PUT/security_groups/{group_id}

Update a security group details

The response is an object that has a key called security_group. This key contain a standard security_group object.

URI Parameters
HideShow
group_id
string (required) Example: 000a115d-2852-4b1a-9ce8-47f1134ba95a

Security group id unique identifier


DELETE /security_groups/000a115d-2852-4b1a-9ce8-47f1134ba95a
Responses204
This response has no content.

Delete a security group
DELETE/security_groups/{group_id}

Delete a security group

The response code is a 204, which means that the action was successful with no returned body data.

URI Parameters
HideShow
group_id
string (required) Example: 000a115d-2852-4b1a-9ce8-47f1134ba95a

Security group id unique identifier


Manage rules

POST /security_groups/rules
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "action": "drop",
  "direction": "inbound",
  "ip_range": "0.0.0.0/0",
  "protocol": "TCP"
}
Responses201
Headers
Content-Type: application/json
Body
{
  "rule": {
    "direction": "inbound",
    "protocol": "TCP",
    "ip_range": "0.0.0.0/0",
    "dest_port_from": null,
    "action": "drop",
    "position": 2,
    "dest_port_to": null,
    "editable": null,
    "id": "ef2136c9-6c21-491a-b238-b38de24726a7"
  }
}

Create a new rule
POST/security_groups/rules

Create a new rule

The response is an object that has a key called rule. This key contain a standard rule object.

action: “accept” direction: “outbound” ip_range: “0.0.0.0/0” protocol: “ICMP”


GET /security_groups/rules
Responses200
Headers
Content-Type: application/json
Body
{
  "rules": [
    {
      "direction": "outbound",
      "protocol": "TCP",
      "ip_range": "0.0.0.0/0",
      "dest_port_from": 25,
      "action": "drop",
      "position": 1,
      "dest_port_to": null,
      "editable": false,
      "id": "58909be7-d17c-4ac8-9eb3-23d5fc58abc5"
    },
    {
      "direction": "outbound",
      "protocol": "TCP",
      "ip_range": "0.0.0.0/0",
      "dest_port_from": 465,
      "action": "drop",
      "position": 2,
      "dest_port_to": null,
      "editable": false,
      "id": "25680235-108b-4bbc-8e25-114303d950bd"
    },
    {
      "direction": "outbound",
      "protocol": "TCP",
      "ip_range": "0.0.0.0/0",
      "dest_port_from": 587,
      "action": "drop",
      "position": 3,
      "dest_port_to": null,
      "editable": false,
      "id": "4a31b633-118e-4900-bd52-facf1085fc8d"
    }
  ]
}

List all rules
GET/security_groups/rules

List all rules for a security group

The response is an object that has a key called rules. This key contain an array of rules for a security group each of which contain the standard rule attributes.


Operation on a security rule

PUT /security_groups/rules/
Requestsexample 1
Headers
Content-Type: application/json
Body
{
  "action": "drop",
  "direction": "outbound",
  "ip_range": "0.0.0.0/0",
  "protocol": "TCP"
}
Responses200
Headers
Content-Type: application/json
Body
{
  "rule": {
    "direction": "outbound",
    "protocol": "TCP",
    "ip_range": "0.0.0.0/0",
    "dest_port_from": null,
    "action": "drop",
    "position": 2,
    "dest_port_to": null,
    "editable": null,
    "id": "ef2136c9-6c21-491a-b238-b38de24726a7"
  }
}

Update a security rule
PUT/security_groups/rules/

Update a security rule

The response is an object that has a key called rule. This key contain a standard rule object.


GET /security_groups/rules/
Responses200
Headers
Content-Type: application/json
Body
{
  "rule": {
    "direction": "outbound",
    "protocol": "TCP",
    "ip_range": "0.0.0.0/0",
    "dest_port_from": null,
    "action": "drop",
    "position": 2,
    "dest_port_to": null,
    "editable": null,
    "id": "ef2136c9-6c21-491a-b238-b38de24726a7"
  }
}

Retrieves a security rule
GET/security_groups/rules/

List an individual security rule

The response is an object that has a key called rule. This key contain a standard rule object.


DELETE /security_groups/rules/
Responses204
This response has no content.

Delete a security rule
DELETE/security_groups/rules/

Delete and deactivate a security rule

The response code is a 204, which means that the action was successful with no returned body data.


Metadata

Resources related to server Metadata available from your servers at http://169.254.42.42

Server metadata

GET /conf?format=
Responses200200
Headers
Content-Type: application/json
Body
{
  "id": "9fc9a037-5eaa-4073-9919-63adbe400ab9",
  "name": "Server 2",
  "organization": "11111111-1111-4111-8111-111111111111",
  "private_ip": "10.42.1.2",
  "public_ip": "42.1.2.3",
  "ssh_public_keys": [
    "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjHvTHk5QY+JZdCvAep6APwOhZvIimlC4aybrXkGSBxpNeZI1f+AexDuFFWGZPb1y135pgTAc7VXpKD2FU2xd4EwsSTHaBcaBIs1HkhpFScTwN15IfLiefIHgjgveP/8U8AKQvCK7oecz3egjvqNtBDDj9cHySpQ6w5Zq/rtF7Ku8xAfBa78NEQrwaYvdfHqI/1APeoo61MJse+xZH2LVHX1EZp79jRbHny/0WkZifVXudDCmM9aqI3G1ZgWTWvFxHW/HTkSLz1v8OHD1ZPOEjIIKLxCoYE4kukK2eVZVUWFb+iU+u6GunwqWUa6W/g+0NzpEoSHVcasIC88d3tBZD",
    "ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAutWtCIFyrtcpxBevMyDrNlYabV6cCVPjfWwfuKABofuWwCSX8gP2gSnmjQCdtTwYnz/vAuAXbKxn8pxtUy4c24oRvtwqHpEsFDMpzzMzWtghQFOHEd7NWzda3yDGCaJ8OFD1IkiFad5QNKmOt8nlERBUK9cwbPjzhTnP/o2Odn5nJJ8WySn0/TWwMaHH6hpZTtKMSrIn06Fo5MviPfeZ9Loe8IfgV7llB7ITMFTUKP5vPVvMlPJi8MYeo0AYmhFhbTO5wWj8hK8AJELF9RwMCehcsxjDRxKKbxiv9RL3yIdBH0dftlaNX5rYazRp4zB2BYvfPNjhpTqrY2RdPYAvTw=="
  ],
  "tags": [],
  "volumes": []
}
Headers
Content-Type: plain/text
Body
NAME='Server 2'
TAGS=0
PUBLIC_IP=42.1.2.3
SSH_PUBLIC_KEYS=2
SSH_PUBLIC_KEYS_0='ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCjHvTHk5QY+JZdCvAep6APwOhZvIimlC4aybrXkGSBxpNeZI1f+AexDuFFWGZPb1y135pgTAc7VXpKD2FU2xd4EwsSTHaBcaBIs1HkhpFScTwN15IfLiefIHgjgveP/8U8AKQvCK7oecz3egjvqNtBDDj9cHySpQ6w5Zq/rtF7Ku8xAfBa78NEQrwaYvdfHqI/1APeoo61MJse+xZH2LVHX1EZp79jRbHny/0WkZifVXudDCmM9aqI3G1ZgWTWvFxHW/HTkSLz1v8OHD1ZPOEjIIKLxCoYE4kukK2eVZVUWFb+iU+u6GunwqWUa6W/g+0NzpEoSHVcasIC88d3tBZD'
SSH_PUBLIC_KEYS_1='ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEAutWtCIFyrtcpxBevMyDrNlYabV6cCVPjfWwfuKABofuWwCSX8gP2gSnmjQCdtTwYnz/vAuAXbKxn8pxtUy4c24oRvtwqHpEsFDMpzzMzWtghQFOHEd7NWzda3yDGCaJ8OFD1IkiFad5QNKmOt8nlERBUK9cwbPjzhTnP/o2Odn5nJJ8WySn0/TWwMaHH6hpZTtKMSrIn06Fo5MviPfeZ9Loe8IfgV7llB7ITMFTUKP5vPVvMlPJi8MYeo0AYmhFhbTO5wWj8hK8AJELF9RwMCehcsxjDRxKKbxiv9RL3yIdBH0dftlaNX5rYazRp4zB2BYvfPNjhpTqrY2RdPYAvTw=='
PRIVATE_IP=10.42.1.2
VOLUMES=0
ORGANIZATION=11111111-1111-4111-8111-111111111111
ID=9fc9a037-5eaa-4073-9919-63adbe400ab9

Serves server metadata
GET/conf{?format}

Serves instance metadata using its own IP address as authentication token.

URI Parameters
HideShow
format
string (optional) Default: sh 

Rendering format

Choices: sh json


User Data

User data is a key value store API you can use to provide data from and to your server without authentication.

As an example of use, Scaleway images contain the script scw-generate-ssh-keys which generates SSH server’s host keys then stores their fingerprints as user data under the key “ssh-host-fingerprints”. This way, our users can ensure they are really connecting to their Scaleway instance and they are not victim of a MITM attack.

There are two endpoints to access user data:

  • from a running instance, by using the metadata API at http://169.254.42.42/user_data. To enhance security, we only allow user data viewing and editing as root. To know if the query is issued by the root user, we only accept queries made from a local port below 1024 (by default, non-root users can’t bind ports below 1024). To specify the local port with cURL, use curl --local-port 1-1024 http://169.254.42.42/user_data

  • from the compute API at https://cp-<region>.scaleway.com/servers/<server_id>/user_data..

User Data keys

GET /user_data
Responses200
Headers
Content-Type: application/json
Body
{
  "user_data": [
    "ssh-host-fingerprints",
    "mykey"
  ]
}

Get all User Data keys
GET/user_data

Get the keys of available User Data.


Specific User Data

PATCH /user_data/mykey
RequestsUser Data content
Headers
Content-Type: text/plain
Body
supervalue
Responses201
This response has no content.

Create/Edit User Data
PATCH/user_data/{key_id}

URI Parameters
HideShow
key_id
string (required) Example: mykey

GET /user_data/mykey
Responses200
Headers
Content-Type: text/plain
Body
supervalue

Show User Data
GET/user_data/{key_id}

URI Parameters
HideShow
key_id
string (required) Example: mykey

DELETE /user_data/mykey
Responses204
This response has no content.

Delete User Data
DELETE/user_data/{key_id}

URI Parameters
HideShow
key_id
string (required) Example: mykey