Instances
An instance is a Genesis Cloud virtual machine.
By sending requests to the instances
endpoint, you can list, create and delete instances.
Instance Types
An instance type defines the hardware configuration of your instance. Please refer the pricing page for the costs of each type.
NVIDIA® GeForce™ RTX 3090
Instance Type (Product Name) | API Instance Type Identifier | vCPUs | Memory | Disk | GPUs |
---|---|---|---|---|---|
GPU Instance 1x GeForce™ RTX 3090 | vcpu-4_memory-24g_disk-80g_nvidia3090-1 | 4 | 24 GiB | 80 GiB | 1 |
GPU Instance 2x GeForce™ RTX 3090 | vcpu-8_memory-48g_disk-80g_nvidia3090-2 | 8 | 48 GiB | 80 GiB | 2 |
GPU Instance 3x GeForce™ RTX 3090 | vcpu-12_memory-72g_disk-80g_nvidia3090-3 | 12 | 72 GiB | 80 GiB | 3 |
GPU Instance 4x GeForce™ RTX 3090 | vcpu-16_memory-96g_disk-80g_nvidia3090-4 | 16 | 96 GiB | 80 GiB | 4 |
GPU Instance 5x GeForce™ RTX 3090 | vcpu-20_memory-120g_disk-80g_nvidia3090-5 | 20 | 120 GiB | 80 GiB | 5 |
GPU Instance 6x GeForce™ RTX 3090 | vcpu-24_memory-144g_disk-80g_nvidia3090-6 | 24 | 144 GiB | 80 GiB | 6 |
GPU Instance 7x GeForce™ RTX 3090 | vcpu-28_memory-168g_disk-80g_nvidia3090-7 | 28 | 168 GiB | 80 GiB | 7 |
GPU Instance 8x GeForce™ RTX 3090 | vcpu-32_memory-192g_disk-80g_nvidia3090-8 | 32 | 192 GiB | 80 GiB | 8 |
NVIDIA® GeForce™ RTX 3090 (Optimized CPU & Memory)
Instance Type (Product Name) | API Instance Type Identifier | vCPUs | Memory | Disk | GPUs |
---|---|---|---|---|---|
GPU Instance 1x GeForce™ RTX 3090 | vcpu-8_memory-48g_disk-80g_nvidia3090-1 | 8 | 48 GiB | 80 GiB | 1 |
GPU Instance 2x GeForce™ RTX 3090 | vcpu-16_memory-96g_disk-80g_nvidia3090-2 | 16 | 96 GiB | 80 GiB | 2 |
GPU Instance 3x GeForce™ RTX 3090 | vcpu-24_memory-144g_disk-80g_nvidia3090-3 | 24 | 144 GiB | 80 GiB | 3 |
GPU Instance 4x GeForce™ RTX 3090 | vcpu-32_memory-192g_disk-80g_nvidia3090-4 | 32 | 192 GiB | 80 GiB | 4 |
NVIDIA® GeForce™ RTX 3080
Instance Type (Product Name) | API Instance Type Identifier | vCPUs | Memory | Disk | GPUs |
---|---|---|---|---|---|
GPU Instance 1x GeForce™ RTX 3080 | vcpu-4_memory-12g_disk-80g_nvidia3080-1 | 4 | 12 GiB | 80 GiB | 1 |
GPU Instance 2x GeForce™ RTX 3080 | vcpu-8_memory-24g_disk-80g_nvidia3080-2 | 8 | 24 GiB | 80 GiB | 2 |
GPU Instance 3x GeForce™ RTX 3080 | vcpu-12_memory-36g_disk-80g_nvidia3080-3 | 12 | 36 GiB | 80 GiB | 3 |
GPU Instance 4x GeForce™ RTX 3080 | vcpu-16_memory-48g_disk-80g_nvidia3080-4 | 16 | 48 GiB | 80 GiB | 4 |
GPU Instance 5x GeForce™ RTX 3080 | vcpu-20_memory-60g_disk-80g_nvidia3080-5 | 20 | 60 GiB | 80 GiB | 5 |
GPU Instance 6x GeForce™ RTX 3080 | vcpu-24_memory-72g_disk-80g_nvidia3080-6 | 24 | 72 GiB | 80 GiB | 6 |
GPU Instance 7x GeForce™ RTX 3080 | vcpu-28_memory-84g_disk-80g_nvidia3080-7 | 28 | 84 GiB | 80 GiB | 7 |
GPU Instance 8x GeForce™ RTX 3080 | vcpu-32_memory-96g_disk-80g_nvidia3080-8 | 32 | 96 GiB | 80 GiB | 8 |
NVIDIA® GeForce™ RTX 3080 (Optimized CPU & Memory)
Instance Type (Product Name) | API Instance Type Identifier | vCPUs | Memory | Disk | GPUs |
---|---|---|---|---|---|
GPU Instance 1x GeForce™ RTX 3080 | vcpu-8_memory-32g_disk-80g_nvidia3080-1 | 8 | 32 GiB | 80 GiB | 1 |
GPU Instance 2x GeForce™ RTX 3080 | vcpu-16_memory-64g_disk-80g_nvidia3080-2 | 16 | 64 GiB | 80 GiB | 2 |
GPU Instance 3x GeForce™ RTX 3080 | vcpu-24_memory-96g_disk-80g_nvidia3080-3 | 24 | 96 GiB | 80 GiB | 3 |
GPU Instance 4x GeForce™ RTX 3080 | vcpu-32_memory-128g_disk-80g_nvidia3080-4 | 32 | 128 GiB | 80 GiB | 4 |
NVIDIA® GeForce™ RTX 3060 Ti
Instance Type (Product Name) | API Instance Type Identifier | vCPUs | Memory | Disk | GPUs |
---|---|---|---|---|---|
GPU Instance 1x GeForce™ RTX 3060 Ti | vcpu-4_memory-12g_disk-80g_nvidia3060ti-1 | 4 | 12 GiB | 80 GiB | 1 |
GPU Instance 2x GeForce™ RTX 3060 Ti | vcpu-8_memory-24g_disk-80g_nvidia3060ti-2 | 8 | 24 GiB | 80 GiB | 2 |
GPU Instance 3x GeForce™ RTX 3060 Ti | vcpu-12_memory-36g_disk-80g_nvidia3060ti-3 | 12 | 36 GiB | 80 GiB | 3 |
GPU Instance 4x GeForce™ RTX 3060 Ti | vcpu-16_memory-48g_disk-80g_nvidia3060ti-4 | 16 | 48 GiB | 80 GiB | 4 |
GPU Instance 5x GeForce™ RTX 3060 Ti | vcpu-20_memory-60g_disk-80g_nvidia3060ti-5 | 20 | 60 GiB | 80 GiB | 5 |
GPU Instance 6x GeForce™ RTX 3060 Ti | vcpu-24_memory-72g_disk-80g_nvidia3060ti-6 | 24 | 72 GiB | 80 GiB | 6 |
GPU Instance 7x GeForce™ RTX 3060 Ti | vcpu-28_memory-84g_disk-80g_nvidia3060ti-7 | 28 | 84 GiB | 80 GiB | 7 |
GPU Instance 8x GeForce™ RTX 3060 Ti | vcpu-32_memory-96g_disk-80g_nvidia3060ti-8 | 32 | 96 GiB | 80 GiB | 8 |
NVIDIA® GeForce™ GTX 1080 Ti
Instance Type (Product Name) | API Instance Type Identifier | vCPUs | Memory | Disk | GPUs |
---|---|---|---|---|---|
GPU Instance 1x GeForce™ GTX 1080 Ti | vcpu-4_memory-12g_disk-80g_nvidia1080ti-1 | 4 | 12 GiB | 80 GiB | 1 |
GPU Instance 2x GeForce™ GTX 1080 Ti | vcpu-8_memory-24g_disk-80g_nvidia1080ti-2 | 8 | 24 GiB | 80 GiB | 2 |
GPU Instance 3x GeForce™ GTX 1080 Ti | vcpu-12_memory-36g_disk-80g_nvidia1080ti-3 | 12 | 36 GiB | 80 GiB | 3 |
GPU Instance 4x GeForce™ GTX 1080 Ti | vcpu-16_memory-48g_disk-80g_nvidia1080ti-4 | 16 | 48 GiB | 80 GiB | 4 |
GPU Instance 5x GeForce™ GTX 1080 Ti | vcpu-20_memory-60g_disk-80g_nvidia1080ti-5 | 20 | 60 GiB | 80 GiB | 5 |
GPU Instance 6x GeForce™ GTX 1080 Ti | vcpu-24_memory-72g_disk-80g_nvidia1080ti-6 | 24 | 72 GiB | 80 GiB | 6 |
GPU Instance 7x GeForce™ GTX 1080 Ti | vcpu-28_memory-84g_disk-80g_nvidia1080ti-7 | 28 | 84 GiB | 80 GiB | 7 |
GPU Instance 8x GeForce™ GTX 1080 Ti | vcpu-32_memory-96g_disk-80g_nvidia1080ti-8 | 32 | 96 GiB | 80 GiB | 8 |
CPU Instance (AMD® EPYC™ 2.20-3.35 GHz)
Instance Type (Product Name) | API Instance Type Identifier | vCPUs | Memory | Disk |
---|---|---|---|---|
CPU Instance 2x vCPU | vcpu-2_memory-4g_disk-80g | 2 | 4 GiB | 80 GiB |
CPU Instance 4x vCPU | vcpu-4_memory-8g_disk-80g | 4 | 8 GiB | 80 GiB |
CPU Instance 8x vCPU | vcpu-8_memory-16g_disk-80g | 8 | 16 GiB | 80 GiB |
CPU Instance 12x vCPU | vcpu-12_memory-24g_disk-80g | 12 | 24 GiB | 80 GiB |
CPU Instance 16x vCPU | vcpu-16_memory-32g_disk-80g | 16 | 32 GiB | 80 GiB |
CPU Instance 20x vCPU | vcpu-20_memory-40g_disk-80g | 20 | 40 GiB | 80 GiB |
CPU Instance 24x vCPU | vcpu-24_memory-48g_disk-80g | 24 | 48 GiB | 80 GiB |
Instance Schema
id
String - A unique identifier for each instance. This is automatically generated.name
String - The human-readable name set for the instance.hostname
String - The instance host name.type
String - The instance type (eg.vcpu-4_memory-12g_disk-80g_nvidia1080ti-1
).region
String - The region identifier this instance exists in (eg.ARC-IS-HAF-1
).placement_option
String - The placement option identifier (eg.AUTO
).image
Object - The instance base image object.ssh_keys
Array - The instance's ssh keys.security_groups
Array - The instance's security groups.volumes
Array - The instance's volumes.is_protected
String - The instance termination protection flag.status
String - The instance status. Possible values arecreating
,pending_payment
,active
,stopping
,stopped
,starting
,resetting
,error
anddeleting
.private_ip
String - The instance private ip. It may take some time to be assigned after the instance is created.public_ip
String - The instance public ip. It may take some time to be assigned after the instance is created.public_ip_type
String - The public ip type (static
ordynamic
).created_at
String - A time value given in ISO8601 combined date and time format that represents when the instance was created.updated_at
String - A time value given in ISO8601 combined date and time format that represents when the instance was updated.
For legacy projects and accounts there is an additional status enqueued
as well as other undocumented statuses.
These can include but are not limited to copying
, build
, restarting
, shutoff
, updating
and unknown
.
Create an Instance
Please Note: Creating an instance results in costs according to Genesis Cloud's pricing. You can see all your billed resources in the billing dashboard.
To create a new instance, send a request to:
POST /compute/v1/instances (HTTP 201 - Created)
The attribute values that must be set to successfully create an instance are:
Body parameters
name
String Required - The human-readable name set for the instance.hostname
String Required - The hostname of your instance.type
String Required - The instance type identifier, see API instance type identifiers.region
String Optional - The region identifier in which this instance should be created in, see Regions. Defaults toARC-IS-HAF-1
.placement_option
String Optional - The placement option identifier in which instances are physically located relative to each other within a zone. Defaults toAUTO
.image
String Required - The image id or snapshot id.ssh_keys
Array Required - An array of ssh key ids. This should not be provided ifpassword
authentication method is desired.volumes
Array Optional - An array of volume ids. Please Note: These should be ids for valid volumes with a status ofavailable
, see volume schema.password
String Optional - The password to access the instance. Your password must have a minimum length of 16 characters. Please Note: Only one ofssh_keys
orpassword
can be provided. Password is less secure - we recommend you use an SSH key-pair instead.security_groups
Array Optional - An array of security group ids. Please Note: If no value is specified, the instance will be created with the standard security group. You can override this behavior by passing an array of security group ids. Passing the empty array will result in an instance without any security groups.is_protected
Boolean Optional - Specifies if the instance is termination protected. When set totrue
, it's not possible to destroy the instance until it's switched tofalse
. Set totrue
automatically for long-term billed instances. Defaults tofalse
.public_ip_type
String Optional -static
ordynamic
. When set tostatic
, the instance's public IP will not change between start and stop actions. Defaults todynamic
.metadata
Object Optional - Option to provide metadata. Currently supported isstartup_script
.- A
startup_script
is a plain text bash script or 'cloud-config' file that will be executed after the first instance boot. It is limited to 64 KiB in size. You can use it to configure your instance, e.g. installing the NVIDIA GPU driver. Learn more about startup scripts and installing the GPU driver.
{
"name": "name",
"hostname": "hostname",
"type": "vcpu-4_memory-12g_disk-80g_nvidia1080ti-1",
"region": "ARC-IS-HAF-1",
"image": "7b1644e2-d97d-4725-a927-0028bc60bc28",
"ssh_keys": ["45bcd3ac-fccd-4eea-a812-21f01d665464"],
"metadata": {
"startup_script": "#!/bin/bash\nsudo apt update && sudo apt install iperf3"
}
}
Response body
A Instance will be created using the provided information. The response body will contain a JSON object with standard attributes for your new Instance, see Instance Schema:
{
"instance": {
"id": "9e8ce501-d692-402c-8fca-5a8f5d8ddd57",
"name": "name",
"hostname": "hostname",
"type": "vcpu-4_memory-12g_disk-80g_nvidia1080ti-1",
"region": "ARC-IS-HAF-1",
"image": {
"id": "ac26fa2b-c6d5-47a7-bc4e-5a219797e70f",
"name": "Ubuntu 20.04"
},
"ssh_keys": [
{
"id": "45bcd3ac-fccd-4eea-a812-21f01d665464",
"name": "ssh-key-name"
}
],
"security_groups": [
{
"id": "fd537d69-9db7-4a44-83b8-96f79d10071a",
"name": "standard"
}
],
"volumes": [
{
"id": "0580fb4c-de74-4b83-8bdb-1fd87d89f827",
"name": "<volume_name>"
}
],
"is_protected": false,
"status": "active",
"private_ip": "192.168.10.124",
"public_ip": "198.51.100.127",
"public_ip_type": "dynamic",
"created_at": "2020-03-23T10:09:29.152Z",
"updated_at": "2020-03-23T10:10:28.797Z"
}
}
From a snapshot
If you want to create an instance from a given snapshot you can pass the snapshot id as the image
property. Check how you can create snapshots here.
List all Instances
To list all the instances, send a GET request to /compute/v1/instances
.
GET /compute/v1/instances (HTTP 200 - OK)
Query parameters
per_page
Integer Optional - A positive integer lower or equal to 100 to select the number of items to return (default: 50).page
Integer Optional - A positive integer to choose the page to return.
Response body
The response will be a JSON object with pagination details and a key called instances
. This will be set to an array of instance objects, each of which will contain the instance object, see Instance Schema:
{
"instances": [
{
"id": "9e8ce501-d692-402c-8fca-5a8f5d8ddd57",
"name": "name",
"hostname": "hostname",
"type": "vcpu-4_memory-12g_disk-80g_nvidia3080-1",
"region": "ARC-IS-HAF-1",
"image": {
"id": "ac26fa2b-c6d5-47a7-bc4e-5a219797e70f",
"name": "Ubuntu 20.04"
},
"ssh_keys": [
{
"id": "45bcd3ac-fccd-4eea-a812-21f01d665464",
"name": "ssh-key-name"
}
],
"security_groups": [
{
"id": "fd537d69-9db7-4a44-83b8-96f79d10071a",
"name": "standard"
},
{
"id": "00faf681-6f59-4c94-8523-28903f13da47",
"name": "default"
}
],
"volumes": [
{
"id": "0580fb4c-de74-4b83-8bdb-1fd87d89f827",
"name": "<volume_name>"
}
],
"is_protected": false,
"status": "active",
"private_ip": "192.168.10.124",
"public_ip": "198.51.100.127",
"public_ip_type": "dynamic",
"created_at": "2020-03-23T10:09:29.152Z",
"updated_at": "2020-03-23T10:10:28.797Z"
}
],
"total_count": 1,
"page": 1,
"per_page": 50
}
Get Instance
Get details of an instance with the given ID.
GET /compute/v1/instances/{instance_id} (HTTP 200 - OK)
Path parameters:
instance_id
String - Instance id
Response body
The response will be a JSON object that contains the instance attributes, see Instance Schema:
{
"instance": {
"id": "9e8ce501-d692-402c-8fca-5a8f5d8ddd57",
"name": "name",
"hostname": "hostname",
"type": "vcpu-4_memory-12g_disk-80g_nvidia3080-1",
"region": "ARC-IS-HAF-1",
"image": {
"id": "ac26fa2b-c6d5-47a7-bc4e-5a219797e70f",
"name": "Ubuntu 20.04"
},
"ssh_keys": [
{
"id": "45bcd3ac-fccd-4eea-a812-21f01d665464",
"name": "ssh-key-name"
}
],
"security_groups": [
{
"id": "fd537d69-9db7-4a44-83b8-96f79d10071a",
"name": "standard"
},
{
"id": "00faf681-6f59-4c94-8523-28903f13da47",
"name": "default"
}
],
"volumes": [
{
"id": "0580fb4c-de74-4b83-8bdb-1fd87d89f827",
"name": "<volume_name>"
}
],
"is_protected": false,
"status": "active",
"private_ip": "192.168.10.124",
"public_ip": "198.51.100.127",
"public_ip_type": "dynamic",
"created_at": "2020-03-23T10:09:29.152Z",
"updated_at": "2020-03-23T10:10:28.797Z"
}
}
Destroy an instance
Destroy an instance with the given ID. The data on the boot disk will be lost. Attached volumes are not affected. The billing will stop as soon as you request the instance destroy.
DELETE /compute/v1/instances/{instance_id} (HTTP 204 - No content)
Path parameters:
instance_id
String - Instance id
Snapshot an Instance
Takes a snapshot of the instance.
POST /compute/v1/instances/{instance_id}/snapshots (HTTP 201 - Created)
Path parameters:
instance_id
String - Instance id
Body parameters
name
String Required - The snapshot name.
{
"name": "name"
}
Response body
The response will be a JSON object that contains the snapshot attributes, see Snapshot Schema:
{
"snapshot": {
"id": "ca73c941-7bd7-4d05-98d3-485e7980638b",
"name": "snapshot",
"region": "ARC-IS-HAF-1",
"status": "created",
"resource_id": "<instance-id>",
"created_at": "2020-03-30T13:39:44.540Z"
}
}
List Snapshots of an Instance
Lists all snapshots that were taken of this instance.
GET /compute/v1/instances/{instance_id}/snapshots (HTTP 200 - OK)
Path parameters:
instance_id
String - Instance id
Response body
The response will be a JSON object with pagination details and a key called snapshots
.
This will be set to an array of instance snapshot objects, each of which will contain the instance snapshot object, see Snapshot Schema:
{
"snapshots": [
{
"id": "ff942497-62f6-4a9d-8dc4-3766ebc2b8a2",
"name": "snapshot name",
"size": "85899345920",
"region": "ARC-IS-HAF-1",
"status": "created",
"resource_id": "<snapshotted-resource-id>",
"created_at": "2020-04-06T10:47:46.786Z"
}
],
"total_count": 1,
"page": 1,
"per_page": 50
}
Attach/Detach Security Groups from an Instance
Attaching/Detaching a security group to an instance is possible by passing the full list of security groups IDs. This means, in order to add one additional security group you need to pass the list of current security groups plus the security group to be added. If no value is passed, the current list of security groups will be kept. Passing the empty array will detach all security groups.
PATCH /compute/v1/instances/{instance_id} (HTTP 200 - OK)
Path parameters:
instance_id
String - Instance id.
Body parameters
security_groups
Array Required - The list of security group IDs.
{
"security_groups": [
"fd537d69-9db7-4a44-83b8-96f79d10071a",
"00faf681-6f59-4c94-8523-28903f13da47"
]
}
Response body
The response will be a JSON object that represents the instance object, see Instance Schema:
{
"instance": {
"id": "9e8ce501-d692-402c-8fca-5a8f5d8ddd57",
"name": "name",
"hostname": "hostname",
"type": "vcpu-4_memory-12g_disk-80g_nvidia1080ti-1",
"region": "ARC-IS-HAF-1",
"image": {
"id": "ac26fa2b-c6d5-47a7-bc4e-5a219797e70f",
"name": "Ubuntu 20.04"
},
"ssh_keys": [
{
"id": "45bcd3ac-fccd-4eea-a812-21f01d665464",
"name": "ssh-key-name"
}
],
"security_groups": [
{
"id": "fd537d69-9db7-4a44-83b8-96f79d10071a",
"name": "standard"
},
{
"id": "00faf681-6f59-4c94-8523-28903f13da47",
"name": "example sg"
}
],
"volumes": [
{
"id": "0580fb4c-de74-4b83-8bdb-1fd87d89f827",
"name": "<volume_name>"
}
],
"is_protected": false,
"status": "active",
"private_ip": "192.168.10.124",
"public_ip": "198.51.100.127",
"public_ip_type": "dynamic",
"created_at": "2020-03-23T10:09:29.152Z",
"updated_at": "2020-03-23T10:10:28.797Z"
}
}
Attach/Detach Volumes from an Instance
Attach/Detach a volume to an instance is possible by passing the full list of volumes IDs. This means, in order to add one additional volume you need to pass the list of current volumes plus the volume to be added.
PATCH /compute/v1/instances/{instance_id} (HTTP 200 - OK)
Path parameters:
instance_id
String - Instance id.
Body parameters
volumes
Array Required - The list of volume IDs.
{
"volumes": ["0580fb4c-de74-4b83-8bdb-1fd87d89f827"]
}
Response body
The response will be a JSON object that represents the instance object, see Instance Schema:
{
"instance": {
"id": "9e8ce501-d692-402c-8fca-5a8f5d8ddd57",
"name": "name",
"hostname": "hostname",
"type": "vcpu-4_memory-12g_disk-80g_nvidia1080ti-1",
"region": "ARC-IS-HAF-1",
"image": {
"id": "ac26fa2b-c6d5-47a7-bc4e-5a219797e70f",
"name": "Ubuntu 20.04"
},
"ssh_keys": [
{
"id": "45bcd3ac-fccd-4eea-a812-21f01d665464",
"name": "ssh-key-name"
}
],
"security_groups": [
{
"id": "fd537d69-9db7-4a44-83b8-96f79d10071a",
"name": "standard"
},
{
"id": "00faf681-6f59-4c94-8523-28903f13da47",
"name": "example sg"
}
],
"volumes": [
{
"id": "0580fb4c-de74-4b83-8bdb-1fd87d89f827",
"name": "<volume_name>"
}
],
"is_protected": false,
"status": "active",
"private_ip": "192.168.10.124",
"public_ip": "198.51.100.127",
"public_ip_type": "dynamic",
"created_at": "2020-03-23T10:09:29.152Z",
"updated_at": "2020-03-23T10:10:28.797Z"
}
}
Update an Instance
Update the details of an Instance. You can update the instance's name
and/or the is_protected
flag. You can patch the instance by sending in the request only the properties you want to update.
PATCH /compute/v1/instances/{instance_id} (HTTP 200 - OK)
Path parameters:
instance_id
String - Instance id.
Body parameters
name
String Optional - The new name of the instance. Thehostname
is not affected.is_protected
Boolean Optional - Specifies if the instance is termination protected.
{
"name": "My Genesis Cloud instance",
"is_protected": true
}
Response body
The response will be a JSON object that represents the instance object, see Instance Schema:
{
"instance": {
"id": "9e8ce501-d692-402c-8fca-5a8f5d8ddd57",
"name": "My Genesis Cloud instance",
"hostname": "hostname",
"type": "vcpu-4_memory-12g_disk-80g_nvidia1080ti-1",
"region": "ARC-IS-HAF-1",
"image": {
"id": "ac26fa2b-c6d5-47a7-bc4e-5a219797e70f",
"name": "Ubuntu 20.04"
},
"ssh_keys": [
{
"id": "45bcd3ac-fccd-4eea-a812-21f01d665464",
"name": "ssh-key-name"
}
],
"security_groups": [
{
"id": "fd537d69-9db7-4a44-83b8-96f79d10071a",
"name": "standard"
},
{
"id": "00faf681-6f59-4c94-8523-28903f13da47",
"name": "example sg"
}
],
"volumes": [
{
"id": "0580fb4c-de74-4b83-8bdb-1fd87d89f827",
"name": "<volume_name>"
}
],
"is_protected": true,
"status": "active",
"private_ip": "192.168.10.124",
"public_ip": "198.51.100.127",
"public_ip_type": "dynamic",
"created_at": "2020-03-23T10:09:29.152Z",
"updated_at": "2020-03-23T10:10:28.797Z"
}
}
Get Instance actions
List all actions that can currently be performed on a instance.
GET /compute/v1/instances/{instance_id}/actions (HTTP 200 - OK)
Path parameters:
instance_id
String - Instance id
Response body
The response will be a JSON object that contains the instance actions:
actions
Array - List all actions that can currently be performed on a instance.
{
"actions": ["reset", "stop"]
}
Perform action
The action to perform on the instance.
POST /compute/v1/instances/{instance_id}/actions (HTTP 204 - No Content)
Body parameters
action
String Required - The action to perform on the instance. Possible values:start
,stop
orreset
.
{
"action": "reset"
}
Examples (cURL)
# Create a new instance
curl -H "X-Auth-Token: $TOKEN" \
-X POST "https://api.genesiscloud.com/compute/v1/instances" \
-H "Content-Type: application/json" \
--data-raw '{
"name": "name",
"hostname": "hostname",
"type": "vcpu-4_memory-12g_disk-80g_nvidia3080-1",
"image": "ac26fa2b-c6d5-47a7-bc4e-5a219797e70f",
"ssh_keys": ["45bcd3ac-fccd-4eea-a812-21f01d665464"]
}'
# List all instances of an account
curl -H "X-Auth-Token: $TOKEN" \
"https://api.genesiscloud.com/compute/v1/instances"
# Get instance by id
curl -H "X-Auth-Token: $TOKEN" \
"https://api.genesiscloud.com/compute/v1/instances/<instance_id>"
# Destroy a instance
curl -H "X-Auth-Token: $TOKEN" \
-X DELETE "https://api.genesiscloud.com/compute/v1/instances/<instance_id>"
# Snapshot an instance
curl -H "X-Auth-Token: $TOKEN" \
-X POST "https://api.genesiscloud.com/compute/v1/instances/<instance_id>/snapshots" \
-H "Content-Type: application/json" \
--data-raw '{
"name": "snapshot-name"
}'
# List all Snapshots of an instance
curl -H "X-Auth-Token: $TOKEN" \
"https://api.genesiscloud.com/compute/v1/instances/<instance_id>/snapshots"
# Update the security groups of an instance
curl -H "X-Auth-Token: $TOKEN" \
-X PATCH "https://api.genesiscloud.com/compute/v1/instances/<instance_id>" \
-H "Content-Type: application/json" \
--data-raw '{
"security_groups": ["fd537d69-9db7-4a44-83b8-96f79d10071a"]
}'
# Update the volumes of an instance
curl -H "X-Auth-Token: $TOKEN" \
-X PATCH "https://api.genesiscloud.com/compute/v1/instances/<instance_id>" \
-H "Content-Type: application/json" \
--data-raw '{
"volumes": ["0580fb4c-de74-4b83-8bdb-1fd87d89f827"]
}'
# Get instance actions
curl -H "X-Auth-Token: $TOKEN" \
"https://api.genesiscloud.com/compute/v1/instances/<instance_id>/actions"
# Perform a reset action
curl -H "X-Auth-Token: $TOKEN" \
-X POST "https://api.genesiscloud.com/compute/v1/instances/<instance_id>/actions" \
-H "Content-Type: application/json" \
--data-raw '{
"action": "reset"
}'