Verda Cloud Public API

Introduction

Verda Cloud (formerly DataCrunch) API allows you to deploy, control instances & more via external code.

Open API schema

Download OpenAPI 3.1.0 schema here: /v1/openapi.json

The API is a RESTful API over HTTPS, all requests & responses use JSON as the data exchange format.

Official SDKs

The following SDK packages maintained by Verda Cloud and use this API:

Quick Start Guide

We use OAuth 2.0 Client Credentials authentication scheme.

You can generate credentials via the console UI https://console.verda.com for external applications to use Verda API. The credentials are used to generate Access & Refresh tokens. All requests to this API must be authenticated using the Access token, except for a few open endpoints. Access tokens have a short lifespan, and can be regenerated using the Refresh token.

1. Get Credentials from the Verda Cloud Dashboard

Go to the Project page => Keys => Cloud API Credentials section and click on Create.

These credentials will be used like a username & password for your application. Store the client secret safely - like a password.

2. Generate Access Token

An Access Token is needed to be sent with any API call for authentication. The Access Token has a limited lifetime and is expired after a while as defined in expires_in.

It is used as a bearer token

To get an access token, call the token endpoint with the credentials obtained in step 1:

{
  "method": "post",
  "url": "https://api.verda.com/v1/oauth2/token",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "grant_type": "client_credentials",
    "client_id": "<YOUR_CLIENT_ID>",
    "client_secret": "<YOUR_CLIENT_SECRET>"
  }
}

A valid response would look similar to this:

{
  "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoZXkiOiJ5b3UgYWN1YWxseSBjaGVja2VkIHRoaXM_In0.0RjcdKQ1NJP9gbRyXITE6LFFLwKGzeeshuubnkkfkb8",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3b3ciOiJhbmQgdGhpcyB0b28_In0.AC5gk-o-MOptUgrouEErlhr8WT3Hg_RR6px6A0I7ZEk",
  "scope": "cloud-api-v1"
}

access_token is the token value, to be used in the next step.

expires_in is the duration in seconds until the token is expired.

refresh_token can be used to create a new access token if expired.

When an Access Token expires, create a new one using the refresh token:

{
  "method": "post",
  "url": "https://api.verda.com/v1/oauth2/token",
  "headers": {
    "Content-Type": "application/json"
  },
  "body": {
    "grant_type": "refresh_token",
    "refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ3b3ciOiJhbmQgdGhpcyB0b28_In0.AC5gk-o-MOptUgrouEErlhr8WT3Hg_RR6px6A0I7ZEk"
  }
}

The response will include a new token.

3. Make REST API Calls

That's it, you are ready to use the API, don't forget to add the Access Token to your calls:

Let's call the /balance endpoint.

Add the Access Token value to the Authorization header, preceded by the "Bearer" string and a space:

{
  "method": "get",
  "url": "https://api.verda.com/v1/balance",
  "headers": {
    "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJoZXkiOiJ5b3UgYWN1YWxseSBjaGVja2VkIHRoaXM_In0.0RjcdKQ1NJP9gbRyXITE6LFFLwKGzeeshuubnkkfkb8"
  }
}

Rate Limits

Authenticated public API requests are rate limited per project in 60 second windows.

Limits enforced

The endpoint limit key includes the full request path. Route-specific endpoint policies override the regular endpoint limit for the matching request path.

Headers

Rate limit information is returned in response headers on authenticated requests:

If a limit is exceeded, the API will return HTTP 429 Too Many Requests and also include a Retry-After header with the number of seconds until requests are allowed again.

Example of successful response with rate limits policy specified

curl -X GET --verbose https://api.verda.com/v1/instances
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
Content-Length: 213
RateLimit-Policy: "project";q=500;w=60, "endpoint";q=60;w=60
RateLimit: "project";r=486;t=37, "endpoint";r=48;t=37

{...}

Example of throttled response

curl -X GET --verbose https://api.verda.com/v1/instances

HTTP/1.1 429 Too Many Requests Content-Type: application/json; charset=utf-8 Content-Length: 11 RateLimit-Policy: "project";q=500;w=60, "endpoint";q=50;w=60 RateLimit: "project";r=419;t=44, "endpoint";r=0;t=49 Retry-After: 49

Pagination

Some endpoints support pagination using the page and pageSize query parameters. For backward compatibility, pagination does not change the JSON response payload format. Instead, clients request a page with query parameters and read pagination metadata from response headers.

Request and response format

When pagination is available, the response includes these headers:

Example request:

GET /v1/scripts?page=1&pageSize=100

Example response:

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 11111
X-Page: 1
X-Page-Size: 100
X-Total-Count: 10000

[{ "id": "2b1af58-7537-4edb-ba81-82cee082c5e9", "name": "My startup script" }]

Errors

Error response body has following schema:

Key Info
code Error type
message Textual description of the error details

Error types

Code Description Matching HTTP error code
invalid_request Invalid request, usually an input error - missing or invalid property etc. 400
unauthorized_request Access token is missing or invalid 401
insufficient_funds Not enough funds to perform the action 402
forbidden_action Can't perform the current action 403
not_found Resource not found, or invalid path 404
rate_limit_exceeded Too many requests for the current project or endpoint window 429
server_error Error on datacrunch's side 500
service_unavailable Not enough resources at the moment, try again later or use a different resource 503

Changelog

2026-03-30 Startup script quota and pagination

Total number of startup scripts in a project now limited by a per-user quota with a default of 100 scripts and a hard maximum of 1000.

GET /v1/scripts now supports pagination via the page and pageSize query parameters. For backward compatibility, the response payload shape is unchanged and pagination metadata is returned in headers instead. See the Pagination section for details.

2026-03-20 Scope-based access control for API tokens

API tokens created via the OAuth 2.0 Client Credentials flow are now issued with the scope cloud-api-v1 and restricted to documented Public API endpoints only. Previously, these tokens could access internal endpoints not intended for external use. If you are using API tokens for any undocumented endpoints, those requests will now return 403 Forbidden with "Insufficient scope". Only the endpoints listed in this API documentation are accessible with API tokens.

2026-03-20 Long term periods endpoints

GET /v1/long-term/periods is now deprecated. Use the dedicated endpoints instead:

Improved OpenAPI documentation for all long term period endpoints with detailed property descriptions and examples.

2026-03-19 Property location_code is now required

The location_code property is now required in the request body when creating instances, clusters, and volumes via the Public API. Requests that omit it will receive an HTTP 400 Bad Request response instead of silently defaulting to FIN-01. This brings the API in line with the SDK, where specifying a region has always been mandatory.

Breakdown of API changes:

Description Endpoint Schema change
Deploy instance POST /v1/instances { /* required */ location_code: string, ... }
Deploy cluster POST /v1/clusters { /* required */ location_code: string, ... }
Create block volume or SFS POST /v1/volumes { /* required */ location_code: string, ... }

2026-03-19 OpenAPI spec auth fix

Fixed the OpenAPI specification incorrectly requiring bearer authentication on public endpoints (/v1/instance-types, /v1/cluster-types, /v1/container-types, /v1/long-term/periods). These endpoints are publicly accessible and no longer show an authentication requirement in the spec.

2026-03-16 Volume response improvements

GET /v1/volumes/{id} now includes is_permanently_deleted and deleted_at fields when the volume is in deleted status. These fields are omitted for active volumes. The OpenAPI schema for this endpoint now uses oneOf to distinguish between the active-volume and deleted-volume response shapes.

2026-03-12 Improved instance action and volume deletion responses

Bulk instance actions (PUT /v1/instances) now return structured per-action results. Each result includes the instance id, a status (success or error), and an error message when applicable. When all actions succeed the response is 202 Accepted; when some fail, you receive a 207 Multi-Status with individual outcomes. A single-instance action that is already in the requested state now returns 204 No Content instead of an error.

Volume deletion (DELETE /v1/volumes/{id}) now returns 204 No Content when the volume is already deleted, making the operation idempotent.

OpenAPI schema fields that accept both a single UUID string and an array of UUIDs (id, ssh_key_ids, volume_ids) are now documented with oneOf for accurate client generation.

2026-03-11 API rate limits

Introduced rate limits to our Public API to ensure the stability of our API and platform for everyone. Rate limits are restrictions our API enforces on how frequently a user or client can make requests to our services within a given timeframe.

Please take a look at our API documentation section "Rate limits".

2026-02-03 Spot instance volume policy

When creating a spot instance, it is now possible to specify a removal policy for the OS volume and any additional volumes created alongside it. Use the on_spot_discontinue field:

POST /v1/instances

POST v1/instances
{
  "instance_type": "CPU.4V.16G",
  "image": "ubuntu-24.04",
  "ssh_key_ids": ["442e6a59-26c2-4cea-a619-39762c0d2385"],
  "hostname": "test-instance",
  "location_code": "FIN-03",
  "is_spot": true,
  "os_volume": {
    "name": "test-instance-os-volume",
    "size": 55,
    // If "delete_permanently", the volume will be deleted when the spot instance is discontinued
    "on_spot_discontinue": "keep_detached" | "move_to_trash" | "delete_permanently"
  }
}

2026-02-03 Delete volumes permanently when deleting an instance

When deleting an instance, you can now specify whether its volumes should be moved to deleted storage (default) or deleted permanently:

PUT /v1/instances

PUT v1/instances
{
  "action": "delete",
  "id": "442e6a59-26c2-4cea-a619-39762c0d2385",
  "volume_ids": ["5e9e63a9-fc3b-427b-b259-0c77dce61090"],
  // Will delete the instance and volumes permanently
  "delete_permanently": true
}

Servers

Operations

Get access token

Get access token for public API using client credentials or refresh token.You can manage your credentials at https://console.verda.com, under the Keys => Cloud API credentials section.

Request Body

Content-Type: application/json

One of:

Example:

{
  "grant_type": "client_credentials",
  "client_id": "6a51jsgnISg6JOyE7wYZh",
  "client_secret": "TvSBFujsqloJb4Jbcezths1OPK9my3zodM3zot9Fn5"
}

Responses

Status: 200 Valid credentials
Content-Type: application/json

Example:

{
  "access_token": "eyJhbGciOiJIUzI1NiI...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "OU4O2BwA690cKg2OfGS8pgIfGSTD2vJ...",
  "scope": "cloud-api-v1"
}
Status: 400 Invalid request
Content-Type: application/json

Example:

{
  "code": "invalid_request",
  "message": ""
}
Status: 401 Unauthorized
Content-Type: application/json

Example:

{
  "code": "invalid_request",
  "message": ""
}

Get project balance

Responses

Status: 200 Returns the project balance
Content-Type: application/json

Example:

{
  "amount": 1000,
  "currency": "usd"
}

Get images types for instances

Responses

Status: 200 Returns available image types for instances
Content-Type: application/json

Array of:

Example:

[
  {
    "id": "342377e1-9f51-4c30-8797-1e12f6ae1d22",
    "image_type": "ubuntu-24.04",
    "name": "Ubuntu 24.04",
    "is_default": false,
    "details": [
      "Ubuntu 24.04",
      "Minimal Image"
    ],
    "category": "ubuntu",
    "is_cluster": false
  }
]
Status: 404 Instance type not found

Get images types for cluster

Responses

Status: 200 Returns available image types for cluster
Content-Type: application/json

Array of:

Example:

[
  {
    "id": "342377e1-9f51-4c30-8797-1e12f6ae1d22",
    "image_type": "ubuntu-24.04",
    "name": "Ubuntu 24.04",
    "is_default": false,
    "details": [
      "Ubuntu 24.04",
      "Minimal Image"
    ],
    "category": "ubuntu",
    "is_cluster": false
  }
]
Status: 404 Instance type not found

Get all volumes

Responses

Status: 200 Returns a list of all volumes ### Rate limits This endpoint is rate limited to 120 requests per minute per project.
Content-Type: application/json

Array of:

Example:

[
  {
    "id": "9609bc1b-e199-4820-8ab8-fdcfe9a4fd65",
    "instance_id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
    "instances": [
      {
        "id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
        "auto_rental_extension": null,
        "ip": "123.123.123.123",
        "instance_type": "4A100.88V",
        "status": "running",
        "os_volume_id": "25daef82-f821-4a43-82a5-1e15c7e701b5",
        "hostname": "hazy-star-swims-fin-01"
      }
    ],
    "name": "OS-NVMe-84Ca37Jf",
    "created_at": "2024-07-08T19:19:54.247Z",
    "status": "attached",
    "size": 100,
    "is_os_volume": true,
    "target": "vda",
    "type": "NVMe",
    "location": "FIN-01",
    "ssh_key_ids": [
      "84a57808-bc31-4007-b1ee-4797dc606d97"
    ],
    "pseudo_path": "volume-84Ca37Jf",
    "create_directory_command": "mkdir -p /mnt/volume",
    "mount_command": "mount -t nfs -o nconnect=16 nfs.fin-01.datacrunch.io:volume-88eb67d0 /mnt/volume",
    "filesystem_to_fstab_command": "grep -qxF 'nfs.fin-01.datacrunch.io:volume-88eb67d0 /mnt/volume nfs defaults 0 0' /etc/fstab || echo 'nfs.fin-01.datacrunch.io:volume-88eb67d0 /mnt/volume nfs defaults 0 0' | sudo tee -a /etc/fstab",
    "contract": "LONG_TERM",
    "base_hourly_cost": 0.0273972602739726,
    "monthly_price": 20,
    "currency": "eur",
    "long_term": {
      "end_date": "2025-01-08T19:34:16.663Z",
      "long_term_period": "3 months",
      "discount_percentage": 14,
      "auto_rental_extension": false,
      "next_period_price": 49.93356,
      "current_period_price": 49.93356
    }
  }
]

Create volume

Request Body

Content-Type: application/json

Example:

{
  "type": "NVMe",
  "location_code": "FIN-01",
  "size": 50,
  "instance_id": "13c706c8-7929-4a07-a359-cbe67ee98c0b",
  "instance_ids": [
    "7af2aabf-1feb-48a3-a4fd-aba8a7cd1712",
    "57efe6eb-fa6c-4f9d-8bc2-90fdb434161a"
  ],
  "name": "my-volume"
}

Responses

Status: 202 Volume ID
Content-Type: application/json
Status: 403 One or more of the specified instances is not shut down

Perform action on a volume or multiple volumes

Request Body

Content-Type: application/json

Example:

{
  "action": "detach",
  "id": [
    "5a10bb0c-dd09-4e7f-b7f4-81d315111077"
  ],
  "size": 100,
  "instance_id": "981b5828-64d9-40d8-9e81-12959c7839f5",
  "instance_ids": [
    "b367e426-99e2-4ad1-a633-4fa81912c4c8",
    "4435a7f3-8421-4ae1-a6b1-a2c4906cd646"
  ],
  "name": "volume-name",
  "type": "NVMe",
  "is_permanent": true,
  "location_code": "FIN-01"
}

Responses

Status: 202

Get all volumes that are in trash

Responses

Status: 200 Returns a list of all volumes in trash
Content-Type: application/json

Array of:

Example:

[
  {
    "id": "9609bc1b-e199-4820-8ab8-fdcfe9a4fd65",
    "instance_id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
    "instances": [
      {
        "id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
        "auto_rental_extension": null,
        "ip": "123.123.123.123",
        "instance_type": "4A100.88V",
        "status": "running",
        "os_volume_id": "25daef82-f821-4a43-82a5-1e15c7e701b5",
        "hostname": "hazy-star-swims-fin-01"
      }
    ],
    "name": "OS-NVMe-84Ca37Jf",
    "created_at": "2024-07-08T19:19:54.247Z",
    "status": "attached",
    "size": 100,
    "is_os_volume": true,
    "target": "vda",
    "type": "NVMe",
    "location": "FIN-01",
    "ssh_key_ids": [
      "84a57808-bc31-4007-b1ee-4797dc606d97"
    ],
    "contract": "LONG_TERM",
    "base_hourly_cost": 0.0273972602739726,
    "monthly_price": 20,
    "currency": "eur",
    "deleted_at": "2025-01-10T11:35:47.633Z",
    "is_permanently_deleted": false
  }
]

Get volume by id

Responses

Status: 200 Returns volume details
Content-Type: application/json

One of:

Example:

{
  "id": "9609bc1b-e199-4820-8ab8-fdcfe9a4fd65",
  "instance_id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
  "instances": [
    {
      "id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
      "auto_rental_extension": null,
      "ip": "123.123.123.123",
      "instance_type": "4A100.88V",
      "status": "running",
      "os_volume_id": "25daef82-f821-4a43-82a5-1e15c7e701b5",
      "hostname": "hazy-star-swims-fin-01"
    }
  ],
  "name": "OS-NVMe-84Ca37Jf",
  "created_at": "2024-07-08T19:19:54.247Z",
  "status": "attached",
  "size": 100,
  "is_os_volume": true,
  "target": "vda",
  "type": "NVMe",
  "location": "FIN-01",
  "ssh_key_ids": [
    "84a57808-bc31-4007-b1ee-4797dc606d97"
  ],
  "pseudo_path": "volume-84Ca37Jf",
  "create_directory_command": "mkdir -p /mnt/volume",
  "mount_command": "mount -t nfs -o nconnect=16 nfs.fin-01.datacrunch.io:volume-88eb67d0 /mnt/volume",
  "filesystem_to_fstab_command": "grep -qxF 'nfs.fin-01.datacrunch.io:volume-88eb67d0 /mnt/volume nfs defaults 0 0' /etc/fstab || echo 'nfs.fin-01.datacrunch.io:volume-88eb67d0 /mnt/volume nfs defaults 0 0' | sudo tee -a /etc/fstab",
  "contract": "LONG_TERM",
  "base_hourly_cost": 0.0273972602739726,
  "monthly_price": 20,
  "currency": "eur",
  "long_term": {
    "end_date": "2025-01-08T19:34:16.663Z",
    "long_term_period": "3 months",
    "discount_percentage": 14,
    "auto_rental_extension": false,
    "next_period_price": 49.93356,
    "current_period_price": 49.93356
  }
}

Delete volume by id

Request Body

Content-Type: application/json

Example:

{
  "is_permanent": false
}

Responses

Status: 202

Get volume types

Responses

Status: 200 Returns the list of available volume types
Content-Type: application/json

Array of:

Example:

[
  {
    "type": "NVMe",
    "price": {
      "price_per_month_per_gb": 0.2,
      "cps_per_gb": 7.6103500761035e-8,
      "currency": "usd"
    },
    "is_shared_fs": false,
    "burst_bandwidth": 2500,
    "continuous_bandwidth": 2000,
    "internal_network_speed": 50,
    "iops": "100k",
    "throughput_gbps": 4
  }
]

Get instances

Return all instances of the project, or all instances with a specific status (optional)

Rate limits

This endpoint is rate limited to 120 requests per minute per project.

Responses

Status: 200 Instance or a list of instances
Content-Type: application/json

Array of:

Example:

[
  {
    "id": "fb68976d-fd34-4b2d-adbe-c205e8e3d1d3",
    "ip": "1.2.3.4",
    "status": "running",
    "created_at": "2023-07-15T14:10:26.654Z",
    "cpu": {
      "description": "176 CPU",
      "number_of_cores": 176
    },
    "gpu": {
      "description": "8x A100",
      "number_of_gpus": 8
    },
    "gpu_memory": {
      "description": "80GB GPU RAM",
      "size_in_gigabytes": 80
    },
    "memory": {
      "description": "640GB RAM",
      "size_in_gigabytes": 640
    },
    "storage": {
      "description": "dynamic"
    },
    "hostname": "hazy-star-swims-fin-01",
    "description": "ubuntu-22-04-cuda-12-0-docker-fin-01",
    "location": "FIN-01",
    "price_per_hour": 2.481,
    "is_spot": false,
    "instance_type": "8A100.176V",
    "image": "ubuntu-22-04-cuda-12-0-docker",
    "os_name": "Ubuntu 22.04",
    "startup_script_id": "95cec4c3-af69-42eb-a790-fcacebfdfcea",
    "ssh_key_ids": [
      "dd50b622-1c36-48c2-a485-f4d4937a3ea1"
    ],
    "os_volume_id": "95cec4c3-af69-42eb-a790-fcacebfdfcea",
    "jupyter_token": "b9e6d8517db3a722ccfb309ca599a35f",
    "contract": "PAY_AS_YOU_GO",
    "pricing": "FIXED_PRICE",
    "volume_ids": [
      "95cec4c3-af69-42eb-a790-fcacebfdfcea",
      "dd50b622-1c36-48c2-a485-f4d4937a3ea1"
    ]
  }
]

Deploy instance

Deploy a new instance.

Before deploying an instance, you need to add at least ssh key to be able to access your instance.

Instance types can be listed using the GET /instance-types endpoint.

Available images can be listed using the GET /images endpoint, using the image_type value from the result.

Existing detached OS volumes could be used as an image, put the volume ID as the image value.

It's also possible to define new volumes that will be created and attached to the new instance. New volumes location will be the same as the instance.

Existing detached volumes can be attached to the deployed instance by adding their IDs to the existing_volumes property.

Request Body

Content-Type: application/json

Example:

{
  "instance_type": "1H100.80S.30V",
  "image": "ubuntu-22.04-cuda-12.4-docker",
  "ssh_key_ids": [
    "13fbab2d-d6b6-4f24-a74c-d3e8716b8b9a"
  ],
  "startup_script_id": "a427f4b0-6919-432f-a75e-b66a20856c66",
  "hostname": "my-instance-hostname",
  "description": "",
  "location_code": "FIN-01",
  "os_volume": {
    "name": "custom-os-volume-name",
    "size": 100,
    "on_spot_discontinue": "keep_detached"
  },
  "is_spot": true,
  "coupon": "COUPON-CODE-2026",
  "volumes": [
    {
      "name": "additional-volume-name",
      "size": 1000,
      "type": "NVMe"
    }
  ],
  "existing_volumes": [
    "bcbaf4c0-d8b8-482c-8668-bc0e916ec1b1"
  ],
  "contract": "PAY_AS_YOU_GO"
}

Responses

Status: 202 Instance ID
Content-Type: application/json

Perform action on an instance or multiple instances

Perform an action on a single or multiple instances.

Note: to hibernate an instance, you must first shutdown it. All instance volumes would be detached and the instance will be deleted.

Important: To remove an instance and stop charging your account, you must delete it. Using shutdown will keep charging your account.

When deleting an instance, you can specify which of its' attached volumes will be deleted by providing volume_ids array. Any attached volumes that are not specified in the array would be detached.

Note: If not providing a volume_ids array, only the OS volume will be deleted and the rest detached.

Request Body

Content-Type: application/json

Example:

{
  "action": "boot",
  "id": [
    "9fc4b894-2236-4e04-be83-b35b403c61f9"
  ],
  "volume_ids": [
    "99f7e7da-3797-4008-8117-57a114ef1312"
  ],
  "delete_permanently": false
}

Responses

Status: 202 All actions completed successfully
Content-Type: application/json

Array of:

Example:

[
  {
    "instanceId": "",
    "action": "boot",
    "status": "success",
    "error": "",
    "statusCode": 400
  }
]
Status: 204 Instance is already in the requested state (single action only)
Status: 207 Some actions failed - returns per-action results with individual statuses and errors
Content-Type: application/json

Array of:

Example:

[
  {
    "instanceId": "",
    "action": "boot",
    "status": "success",
    "error": "",
    "statusCode": 400
  }
]
Status: 400 Invalid request or action not allowed (single action only)
Status: 404 Instance not found (single action only)

Get instance types - deprecated ⚠️ Deprecated

Responses

Status: 200

Get instance by id

Responses

Status: 200 Instance details
Content-Type: application/json

Example:

{
  "id": "fb68976d-fd34-4b2d-adbe-c205e8e3d1d3",
  "ip": "1.2.3.4",
  "status": "running",
  "created_at": "2023-07-15T14:10:26.654Z",
  "cpu": {
    "description": "176 CPU",
    "number_of_cores": 176
  },
  "gpu": {
    "description": "8x A100",
    "number_of_gpus": 8
  },
  "gpu_memory": {
    "description": "80GB GPU RAM",
    "size_in_gigabytes": 80
  },
  "memory": {
    "description": "640GB RAM",
    "size_in_gigabytes": 640
  },
  "storage": {
    "description": "dynamic"
  },
  "hostname": "hazy-star-swims-fin-01",
  "description": "ubuntu-22-04-cuda-12-0-docker-fin-01",
  "location": "FIN-01",
  "price_per_hour": 2.481,
  "is_spot": false,
  "instance_type": "8A100.176V",
  "image": "ubuntu-22-04-cuda-12-0-docker",
  "os_name": "Ubuntu 22.04",
  "startup_script_id": "95cec4c3-af69-42eb-a790-fcacebfdfcea",
  "ssh_key_ids": [
    "dd50b622-1c36-48c2-a485-f4d4937a3ea1"
  ],
  "os_volume_id": "95cec4c3-af69-42eb-a790-fcacebfdfcea",
  "jupyter_token": "b9e6d8517db3a722ccfb309ca599a35f",
  "contract": "PAY_AS_YOU_GO",
  "pricing": "FIXED_PRICE",
  "volume_ids": [
    "95cec4c3-af69-42eb-a790-fcacebfdfcea",
    "dd50b622-1c36-48c2-a485-f4d4937a3ea1"
  ]
}

Check instance type availability - deprecated ⚠️ Deprecated

Responses

Status: 200

Perform action - deprecated ⚠️ Deprecated

Request Body

Content-Type: application/json

Example:

{
  "action": "boot",
  "id": [
    "9fc4b894-2236-4e04-be83-b35b403c61f9"
  ],
  "volume_ids": [
    "99f7e7da-3797-4008-8117-57a114ef1312"
  ],
  "delete_permanently": false
}

Responses

Status: 202

Get instance types

Responses

Status: 200
Content-Type: application/json

Array of:

Example:

[
  {
    "best_for": [
      "Giant ML models",
      "Multi-GPU training",
      "FP64 calculations",
      "NVLINK"
    ],
    "cpu": {
      "description": "22 CPU",
      "number_of_cores": 22
    },
    "deploy_warning": "Make sure your VM is running on latest Nvidia Driver 525.100+ or newer",
    "description": "Dedicated Hardware Instance",
    "gpu": {
      "description": "1x H100 SXM5 80GB",
      "number_of_gpus": 1
    },
    "gpu_memory": {
      "description": "80GB GPU RAM",
      "size_in_gigabytes": 80
    },
    "id": "c01dd00d-0000-4972-ae4e-d429115d055b",
    "instance_type": "1H100.80S.22V",
    "memory": {
      "description": "187GB RAM",
      "size_in_gigabytes": 187
    },
    "model": "H100",
    "name": "H100 SXM5 80GB",
    "p2p": "600 GB/s",
    "price_per_hour": "3.17",
    "spot_price": "0.31",
    "serverless_price": "1.75",
    "serverless_spot_price": "0.87",
    "storage": {
      "description": "dynamic"
    },
    "currency": "usd",
    "manufacturer": "NVIDIA",
    "display_name": "NVIDIA H100 SXM5 80GB",
    "supported_os": [
      "ubuntu-22.04-cuda-12.3",
      "ubuntu-24.04"
    ]
  }
]

Get daily dynamic price history (only the last price update per day) - Not supported anymore ⚠️ Deprecated

Responses

Status: 200

Get all instance type availabilities for all locations

Responses

Status: 200 Returns the instance type availabilities for all locations
Content-Type: application/json

Array of:

Example:

[
  {
    "location_code": "FIN-01",
    "availabilities": [
      "1H100.80S.22V",
      "2H100.80S.60V",
      "4H100.80S.176V",
      "8H100.80S.352V"
    ]
  }
]

Get instance type availability

Responses

Status: 200 Returns the instance type availability
Content-Type: application/json

boolean

Example:

true

Get SSH keys

Responses

Status: 200 Returns a list of the project's SSH keys
Content-Type: application/json

Array of:

Example:

[
  {
    "id": "f7b3b3b3-1b3b-4b3b-8b3b-3b3b3b3b3b3b",
    "name": "my-key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..."
  }
]

Add new SSH key

Request Body

Content-Type: application/json

Example:

{
  "name": "my-key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..."
}

Responses

Status: 201 Returns the ID of the newly created SSH key
Content-Type: application/json

Delete ssh keys

Request Body

Content-Type: application/json

Example:

{
  "keys": [
    "ad04a68a-e9a4-43d9-951a-ea1b4ec1ae0e"
  ]
}

Responses

Status: 200

Get SSH keys

Responses

Status: 200 Returns a list of the project's SSH keys
Content-Type: application/json

Array of:

Example:

[
  {
    "id": "f7b3b3b3-1b3b-4b3b-8b3b-3b3b3b3b3b3b",
    "name": "my-key",
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..."
  }
]

Add new SSH key

Request Body

Content-Type: application/json

Example:

{
  "name": "my-key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..."
}

Responses

Status: 201 Returns the ID of the newly created SSH key
Content-Type: application/json

Delete ssh keys

Request Body

Content-Type: application/json

Example:

{
  "keys": [
    "ad04a68a-e9a4-43d9-951a-ea1b4ec1ae0e"
  ]
}

Responses

Status: 200

Get single SSH key by ID

Responses

Status: 200 Returns the SSH key
Content-Type: application/json

Example:

{
  "id": "f7b3b3b3-1b3b-4b3b-8b3b-3b3b3b3b3b3b",
  "name": "my-key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..."
}

Delete single SSH key by ID

Responses

Status: 200

Get single SSH key by ID

Responses

Status: 200 Returns the SSH key
Content-Type: application/json

Example:

{
  "id": "f7b3b3b3-1b3b-4b3b-8b3b-3b3b3b3b3b3b",
  "name": "my-key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..."
}

Delete single SSH key by ID

Responses

Status: 200

Get startup scripts

Responses

Status: 200 Returns a list of the project's startup scripts
Content-Type: application/json

Array of:

Example:

[
  {
    "id": "8c50b448-5fcd-4023-895b-68267f75078a",
    "name": "My startup script",
    "script": "#!/bin/bash\n\necho hello world"
  }
]

Add new startup script

Request Body

Content-Type: application/json

Example:

{
  "name": "My startup script",
  "script": "#!/bin/bash\n\necho hello world"
}

Responses

Status: 201 Returns the ID of the newly created script
Content-Type: application/json

Delete startup scripts

Request Body

Content-Type: application/json

Example:

{
  "scripts": [
    "daff4e13-a35a-42bc-ab2d-556f5e9c1a25"
  ]
}

Responses

Status: 200

Get single startup script by ID

Responses

Status: 200 Return startup script with specific ID
Content-Type: application/json

Example:

{
  "id": "8c50b448-5fcd-4023-895b-68267f75078a",
  "name": "My startup script",
  "script": "#!/bin/bash\n\necho hello world"
}

Delete single startup script by ID

Responses

Status: 200

Returns a list of available locations

Responses

Status: 200 Returns a list of available locations
Content-Type: application/json

Array of:

Example:

[
  {
    "code": "FIN-01",
    "name": "Finland 1",
    "country_code": "FI"
  }
]

Get long term periods ⚠️ Deprecated

Responses

Status: 200 Returns the long term periods
Content-Type: application/json

Array of:

Example:

[
  {
    "code": "3_MONTHS",
    "name": "3 months",
    "is_enabled": true,
    "unit_name": "month",
    "unit_value": 3,
    "discount_percentage": 14
  }
]

Get long term periods for instances

Responses

Status: 200 Returns the long term periods for instances
Content-Type: application/json

Array of:

Example:

[
  {
    "code": "3_MONTHS",
    "name": "3 months",
    "is_enabled": true,
    "unit_name": "month",
    "unit_value": 3,
    "discount_percentage": 14
  }
]

Get long term periods for clusters

Responses

Status: 200 Returns the long term periods for clusters
Content-Type: application/json

Array of:

Example:

[
  {
    "code": "3_MONTHS",
    "name": "3 months",
    "is_enabled": true,
    "unit_name": "month",
    "unit_value": 3,
    "discount_percentage": 14
  }
]

Get container types

Responses

Status: 200
Content-Type: application/json

Array of:

Example:

[
  {
    "id": "60006000-6000-47af-8ff0-600060006004",
    "model": "RTX PRO 6000",
    "name": "RTX PRO 6000 96GB",
    "instance_type": "8RTXPRO6000.224V",
    "cpu": {
      "description": "224 CPU",
      "number_of_cores": 224
    },
    "gpu": {
      "description": "8x RTX PRO 6000 96GB",
      "number_of_gpus": 8
    },
    "gpu_memory": {
      "description": "768GB GPU RAM",
      "size_in_gigabytes": 768
    },
    "memory": {
      "description": "680GB RAM",
      "size_in_gigabytes": 680
    },
    "serverless_price": "1.529",
    "serverless_spot_price": "0.7645",
    "currency": "usd",
    "manufacturer": "NVIDIA"
  }
]

Schemas

GetAccessTokenDto

Example:

{
  "grant_type": "client_credentials",
  "client_id": "6a51jsgnISg6JOyE7wYZh",
  "client_secret": "TvSBFujsqloJb4Jbcezths1OPK9my3zodM3zot9Fn5"
}

RefreshAccessTokenPublicApiDto

Example:

{
  "grant_type": "refresh_token",
  "refresh_token": "OU4O2BwA690cKg2OfGS8pgIfGSTD2vJ..."
}

GetAccessTokenResponseDto

Example:

{
  "access_token": "eyJhbGciOiJIUzI1NiI...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "OU4O2BwA690cKg2OfGS8pgIfGSTD2vJ...",
  "scope": "cloud-api-v1"
}

PublicApiErrorResponseDto

Example:

{
  "code": "invalid_request",
  "message": ""
}

BalanceResponseDto

Example:

{
  "amount": 1000,
  "currency": "usd"
}

Os

Example:

{
  "id": "342377e1-9f51-4c30-8797-1e12f6ae1d22",
  "image_type": "ubuntu-24.04",
  "name": "Ubuntu 24.04",
  "is_default": false,
  "details": [
    "Ubuntu 24.04",
    "Minimal Image"
  ],
  "category": "ubuntu",
  "is_cluster": false
}

GetVolumePublicResponseDto

Example:

{
  "id": "9609bc1b-e199-4820-8ab8-fdcfe9a4fd65",
  "instance_id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
  "instances": [
    {
      "id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
      "auto_rental_extension": null,
      "ip": "123.123.123.123",
      "instance_type": "4A100.88V",
      "status": "running",
      "os_volume_id": "25daef82-f821-4a43-82a5-1e15c7e701b5",
      "hostname": "hazy-star-swims-fin-01"
    }
  ],
  "name": "OS-NVMe-84Ca37Jf",
  "created_at": "2024-07-08T19:19:54.247Z",
  "status": "attached",
  "size": 100,
  "is_os_volume": true,
  "target": "vda",
  "type": "NVMe",
  "location": "FIN-01",
  "ssh_key_ids": [
    "84a57808-bc31-4007-b1ee-4797dc606d97"
  ],
  "pseudo_path": "volume-84Ca37Jf",
  "create_directory_command": "mkdir -p /mnt/volume",
  "mount_command": "mount -t nfs -o nconnect=16 nfs.fin-01.datacrunch.io:volume-88eb67d0 /mnt/volume",
  "filesystem_to_fstab_command": "grep -qxF 'nfs.fin-01.datacrunch.io:volume-88eb67d0 /mnt/volume nfs defaults 0 0' /etc/fstab || echo 'nfs.fin-01.datacrunch.io:volume-88eb67d0 /mnt/volume nfs defaults 0 0' | sudo tee -a /etc/fstab",
  "contract": "LONG_TERM",
  "base_hourly_cost": 0.0273972602739726,
  "monthly_price": 20,
  "currency": "eur",
  "long_term": {
    "end_date": "2025-01-08T19:34:16.663Z",
    "long_term_period": "3 months",
    "discount_percentage": 14,
    "auto_rental_extension": false,
    "next_period_price": 49.93356,
    "current_period_price": 49.93356
  }
}

GetVolumeInTrashPublicResponseDto

Example:

{
  "id": "9609bc1b-e199-4820-8ab8-fdcfe9a4fd65",
  "instance_id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
  "instances": [
    {
      "id": "19edab71-4fe5-4e29-ae7c-5c4d0776aad1",
      "auto_rental_extension": null,
      "ip": "123.123.123.123",
      "instance_type": "4A100.88V",
      "status": "running",
      "os_volume_id": "25daef82-f821-4a43-82a5-1e15c7e701b5",
      "hostname": "hazy-star-swims-fin-01"
    }
  ],
  "name": "OS-NVMe-84Ca37Jf",
  "created_at": "2024-07-08T19:19:54.247Z",
  "status": "attached",
  "size": 100,
  "is_os_volume": true,
  "target": "vda",
  "type": "NVMe",
  "location": "FIN-01",
  "ssh_key_ids": [
    "84a57808-bc31-4007-b1ee-4797dc606d97"
  ],
  "contract": "LONG_TERM",
  "base_hourly_cost": 0.0273972602739726,
  "monthly_price": 20,
  "currency": "eur",
  "deleted_at": "2025-01-10T11:35:47.633Z",
  "is_permanently_deleted": false
}

CreateVolumePublicDto

Example:

{
  "type": "NVMe",
  "location_code": "FIN-01",
  "size": 50,
  "instance_id": "13c706c8-7929-4a07-a359-cbe67ee98c0b",
  "instance_ids": [
    "7af2aabf-1feb-48a3-a4fd-aba8a7cd1712",
    "57efe6eb-fa6c-4f9d-8bc2-90fdb434161a"
  ],
  "name": "my-volume"
}

PerformVolumeActionPublicDto

Example:

{
  "action": "detach",
  "id": [
    "5a10bb0c-dd09-4e7f-b7f4-81d315111077"
  ],
  "size": 100,
  "instance_id": "981b5828-64d9-40d8-9e81-12959c7839f5",
  "instance_ids": [
    "b367e426-99e2-4ad1-a633-4fa81912c4c8",
    "4435a7f3-8421-4ae1-a6b1-a2c4906cd646"
  ],
  "name": "volume-name",
  "type": "NVMe",
  "is_permanent": true,
  "location_code": "FIN-01"
}

DeleteVolumePublicDto

Example:

{
  "is_permanent": false
}

VolumeType

Example:

{
  "type": "NVMe",
  "price": {
    "price_per_month_per_gb": 0.2,
    "cps_per_gb": 7.6103500761035e-8,
    "currency": "usd"
  },
  "is_shared_fs": false,
  "burst_bandwidth": 2500,
  "continuous_bandwidth": 2000,
  "internal_network_speed": 50,
  "iops": "100k",
  "throughput_gbps": 4
}

GetInstanceResponsePublicApiDto

Example:

{
  "id": "fb68976d-fd34-4b2d-adbe-c205e8e3d1d3",
  "ip": "1.2.3.4",
  "status": "running",
  "created_at": "2023-07-15T14:10:26.654Z",
  "cpu": {
    "description": "176 CPU",
    "number_of_cores": 176
  },
  "gpu": {
    "description": "8x A100",
    "number_of_gpus": 8
  },
  "gpu_memory": {
    "description": "80GB GPU RAM",
    "size_in_gigabytes": 80
  },
  "memory": {
    "description": "640GB RAM",
    "size_in_gigabytes": 640
  },
  "storage": {
    "description": "dynamic"
  },
  "hostname": "hazy-star-swims-fin-01",
  "description": "ubuntu-22-04-cuda-12-0-docker-fin-01",
  "location": "FIN-01",
  "price_per_hour": 2.481,
  "is_spot": false,
  "instance_type": "8A100.176V",
  "image": "ubuntu-22-04-cuda-12-0-docker",
  "os_name": "Ubuntu 22.04",
  "startup_script_id": "95cec4c3-af69-42eb-a790-fcacebfdfcea",
  "ssh_key_ids": [
    "dd50b622-1c36-48c2-a485-f4d4937a3ea1"
  ],
  "os_volume_id": "95cec4c3-af69-42eb-a790-fcacebfdfcea",
  "jupyter_token": "b9e6d8517db3a722ccfb309ca599a35f",
  "contract": "PAY_AS_YOU_GO",
  "pricing": "FIXED_PRICE",
  "volume_ids": [
    "95cec4c3-af69-42eb-a790-fcacebfdfcea",
    "dd50b622-1c36-48c2-a485-f4d4937a3ea1"
  ]
}

OsVolumeDto

Example:

{
  "name": "custom-os-volume-name",
  "size": "100",
  "on_spot_discontinue": "keep_detached"
}

VolumeDto

Example:

{
  "name": "custom-os-volume-name",
  "size": "100",
  "on_spot_discontinue": "keep_detached",
  "type": "HDD"
}

DeployInstancePublicDto

Example:

{
  "instance_type": "1H100.80S.30V",
  "image": "ubuntu-22.04-cuda-12.4-docker",
  "ssh_key_ids": [
    "13fbab2d-d6b6-4f24-a74c-d3e8716b8b9a"
  ],
  "startup_script_id": "a427f4b0-6919-432f-a75e-b66a20856c66",
  "hostname": "my-instance-hostname",
  "description": "",
  "location_code": "FIN-01",
  "os_volume": {
    "name": "custom-os-volume-name",
    "size": 100,
    "on_spot_discontinue": "keep_detached"
  },
  "is_spot": true,
  "coupon": "COUPON-CODE-2026",
  "volumes": [
    {
      "name": "additional-volume-name",
      "size": 1000,
      "type": "NVMe"
    }
  ],
  "existing_volumes": [
    "bcbaf4c0-d8b8-482c-8668-bc0e916ec1b1"
  ],
  "contract": "PAY_AS_YOU_GO"
}

PerformInstanceActionPublicDto

Example:

{
  "action": "boot",
  "id": [
    "9fc4b894-2236-4e04-be83-b35b403c61f9"
  ],
  "volume_ids": [
    "99f7e7da-3797-4008-8117-57a114ef1312"
  ],
  "delete_permanently": false
}

InstanceActionResultDto

Example:

{
  "instanceId": "",
  "action": "boot",
  "status": "success",
  "error": "",
  "statusCode": 400
}

GetClusterResponsePublicApiDto

Example:

{
  "id": "a162b28d-aa97-4b79-9032-daa8be16fa2d",
  "ip": "1.2.3.4",
  "status": "running",
  "created_at": "2023-07-15T14:10:26.654Z",
  "cpu": {
    "description": "176 CPU",
    "number_of_cores": 176
  },
  "gpu": {
    "description": "8x A100",
    "number_of_gpus": 8
  },
  "gpu_memory": {
    "description": "80GB GPU RAM",
    "size_in_gigabytes": 80
  },
  "memory": {
    "description": "640GB RAM",
    "size_in_gigabytes": 640
  },
  "hostname": "hazy-star-swims-fin-01",
  "description": "ubuntu-22-04-cuda-12-0-docker-fin-01",
  "location": "FIN-01",
  "price_per_hour": 2.481,
  "cluster_type": "16H200",
  "image": "ubuntu-22-04-cuda-12-0-docker",
  "os_name": "Ubuntu 22.04",
  "startup_script_id": "95cec4c3-af69-42eb-a790-fcacebfdfcea",
  "ssh_key_ids": [
    "dd50b622-1c36-48c2-a485-f4d4937a3ea1"
  ],
  "contract": "LONG_TERM",
  "extension_settings": "auto_renew",
  "long_term_period": "1 week",
  "worker_nodes": [
    {
      "id": "1",
      "hostname": "worker-1",
      "public_ip": "1.2.3.4",
      "private_ip": "1.2.3.4",
      "status": "running"
    }
  ],
  "shared_volumes": [
    {
      "id": "1",
      "name": "shared-volume-1",
      "mount_point": "/home",
      "size_in_gigabytes": 100
    }
  ]
}

SharedVolumeDto

Example:

{
  "name": "SFS-pmAna3o2",
  "size": 30000
}

ExistingSharedVolumeDto

Example:

{
  "id": "45b75ffe-4749-4983-96af-ad0f4e210404"
}

DeployClusterPublicDto

Example:

{
  "cluster_type": "16H200",
  "image": "ubuntu-22.04-cuda-12.4-cluster",
  "ssh_key_ids": [
    "0c16977d-da28-49fe-b99b-80b497a67036"
  ],
  "startup_script_id": "6c6bf6d5-7e52-4b33-9234-daefcdbbd3ce",
  "hostname": "dark-vm-shrinks-fin-01",
  "description": "ubuntu-22-04-cuda-12-4-16b200-fin-01",
  "location_code": "FIN-01",
  "contract": "PAY_AS_YOU_GO",
  "extension_settings": "auto_renew",
  "shared_volume": {
    "name": "cluster-volume-name",
    "size": 30000
  },
  "existing_volumes": []
}

DeployClusterResponsePublicApiDto

Example:

{
  "id": "d56cd96b-1b4f-4740-b21f-ccf351668f88"
}

PerformClusterActionPublicDto

Example:

{
  "action": "discontinue",
  "id": "03db8c85-9fe7-432c-b1ec-165e028ce3ef"
}

PerformClusterActionsBulkDto

Example:

{
  "actions": [
    {
      "action": "discontinue",
      "id": "ba765ab4-db65-4114-8283-ef91de2f4aa1"
    },
    {
      "action": "discontinue",
      "id": "2df6567e-5364-408e-a6b4-5dc195e151d0"
    }
  ]
}

InstanceType

Example:

{
  "best_for": [
    "Giant ML models",
    "Multi-GPU training",
    "FP64 calculations",
    "NVLINK"
  ],
  "cpu": {
    "description": "22 CPU",
    "number_of_cores": 22
  },
  "deploy_warning": "Make sure your VM is running on latest Nvidia Driver 525.100+ or newer",
  "description": "Dedicated Hardware Instance",
  "gpu": {
    "description": "1x H100 SXM5 80GB",
    "number_of_gpus": 1
  },
  "gpu_memory": {
    "description": "80GB GPU RAM",
    "size_in_gigabytes": 80
  },
  "id": "c01dd00d-0000-4972-ae4e-d429115d055b",
  "instance_type": "1H100.80S.22V",
  "memory": {
    "description": "187GB RAM",
    "size_in_gigabytes": 187
  },
  "model": "H100",
  "name": "H100 SXM5 80GB",
  "p2p": "600 GB/s",
  "price_per_hour": "3.17",
  "spot_price": "0.31",
  "serverless_price": "1.75",
  "serverless_spot_price": "0.87",
  "storage": {
    "description": "dynamic"
  },
  "currency": "usd",
  "manufacturer": "NVIDIA",
  "display_name": "NVIDIA H100 SXM5 80GB",
  "supported_os": [
    "ubuntu-22.04-cuda-12.3",
    "ubuntu-24.04"
  ]
}

InstanceAvailabilityResponseDto

Example:

{
  "location_code": "FIN-01",
  "availabilities": [
    "1H100.80S.22V",
    "2H100.80S.60V",
    "4H100.80S.176V",
    "8H100.80S.352V"
  ]
}

ClusterAvailabilityResponseDto

Example:

{
  "location_code": "FIN-01",
  "availabilities": [
    "16H200",
    "32H200"
  ]
}

GetKeysResponseDto

Example:

{
  "id": "f7b3b3b3-1b3b-4b3b-8b3b-3b3b3b3b3b3b",
  "name": "my-key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..."
}

AddKeyDto

Example:

{
  "name": "my-key",
  "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQD..."
}

DeleteKeysPublicDto

Example:

{
  "keys": [
    "ad04a68a-e9a4-43d9-951a-ea1b4ec1ae0e"
  ]
}

GetScriptResponseDto

Example:

{
  "id": "8c50b448-5fcd-4023-895b-68267f75078a",
  "name": "My startup script",
  "script": "#!/bin/bash\n\necho hello world"
}

AddScriptDto

Example:

{
  "name": "My startup script",
  "script": "#!/bin/bash\n\necho hello world"
}

DeleteScriptsDto

Example:

{
  "scripts": [
    "daff4e13-a35a-42bc-ab2d-556f5e9c1a25"
  ]
}

Location

Example:

{
  "code": "FIN-01",
  "name": "Finland 1",
  "country_code": "FI"
}

LongTermPeriodResponseDto

Example:

{
  "code": "3_MONTHS",
  "name": "3 months",
  "is_enabled": true,
  "unit_name": "month",
  "unit_value": 3,
  "discount_percentage": 14
}

ClusterType

Example:

{
  "id": "c01dd00d-0000-4972-ae4e-d429115d055b",
  "model": "B200 Cluster",
  "name": "H100 SXM5 80GB",
  "cluster_type": "16H200",
  "cpu": {
    "description": "22 CPU",
    "number_of_cores": 22
  },
  "gpu": {
    "description": "1x H100 SXM5 80GB",
    "number_of_gpus": 1
  },
  "gpu_memory": {
    "description": "80GB GPU RAM",
    "size_in_gigabytes": 80
  },
  "memory": {
    "description": "187GB RAM",
    "size_in_gigabytes": 187
  },
  "price_per_hour": "3.17",
  "currency": "usd",
  "manufacturer": "NVIDIA",
  "node_details": [
    {
      "GPU VRAM": "1536 GB"
    },
    {
      "AMD Turin CPU": "128 cores"
    },
    {
      "InfiniBand": "3200 Gbit/s"
    },
    {
      "Ethernet": "100 Gbit/s"
    },
    {
      "Uplink": "5 Gbit/s"
    }
  ],
  "supported_os": [
    "ubuntu-22.04-cuda-12.3",
    "ubuntu-24.04"
  ]
}

ContainerType

Example:

{
  "id": "60006000-6000-47af-8ff0-600060006004",
  "model": "RTX PRO 6000",
  "name": "RTX PRO 6000 96GB",
  "instance_type": "8RTXPRO6000.224V",
  "cpu": {
    "description": "224 CPU",
    "number_of_cores": 224
  },
  "gpu": {
    "description": "8x RTX PRO 6000 96GB",
    "number_of_gpus": 8
  },
  "gpu_memory": {
    "description": "768GB GPU RAM",
    "size_in_gigabytes": 768
  },
  "memory": {
    "description": "680GB RAM",
    "size_in_gigabytes": 680
  },
  "serverless_price": "1.529",
  "serverless_spot_price": "0.7645",
  "currency": "usd",
  "manufacturer": "NVIDIA"
}