/clusters
curl --request GET \
--url https://api.shadeform.ai/v1/clusters \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.shadeform.ai/v1/clusters"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.shadeform.ai/v1/clusters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.shadeform.ai/v1/clusters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.shadeform.ai/v1/clusters"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.shadeform.ai/v1/clusters")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shadeform.ai/v1/clusters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"clusters": [
{
"id": "8eda86fe-0f36-41ed-9837-0ccf8f6e0fcb",
"cloud": "denvr",
"name": "devnr-cluster1",
"region_info": {
"region": "houston-usa-1",
"display_name": "US, Houston, TX"
},
"status": "active",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"instances": [
{
"id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"cloud": "hyperstack",
"region": "canada-1",
"shade_instance_type": "A6000",
"cloud_instance_type": "gpu_1x_a6000",
"cloud_assigned_id": "13b057d7-e266-4869-985f-760fe75a78b3",
"shade_cloud": true,
"name": "cool-gpu-server",
"configuration": {
"memory_in_gb": 12,
"storage_in_gb": 256,
"vcpus": 6,
"num_gpus": 1,
"gpu_type": "A100",
"interconnect": "pcie",
"vram_per_gpu_in_gb": 48,
"gpu_manufacturer": "nvidia",
"os": "ubuntu_22_shade_os",
"nvlink": true
},
"ip": "1.0.0.1",
"ssh_user": "shadeform",
"ssh_port": 22,
"status": "active",
"cost_estimate": "103.4",
"created_at": "2016-08-29T09:12:33.001Z",
"deleted_at": "2016-08-29T09:12:33.001Z",
"status_details": "downloading",
"hourly_price": 210,
"launch_configuration": {
"type": "docker",
"docker_configuration": {
"image": "vllm/vllm-openai:latest",
"args": "--model mistralai/Mistral-7B-v0.1",
"shared_memory_in_gb": 8,
"envs": [
{
"name": "HUGGING_FACE_HUB_TOKEN",
"value": "hugging_face_api_token"
}
],
"port_mappings": [
{
"host_port": 80,
"container_port": 8000
}
],
"volume_mounts": [
{
"host_path": "~/.cache/huggingface",
"container_path": "/root/.cache/huggingface"
}
],
"registry_credentials": {
"username": "username",
"password": "password"
}
},
"script_configuration": {
"base64_script": "IyEvYmluL2Jhc2gKCiMgRW5kbGVzcyBsb29wCndoaWxlIHRydWUKZG8KICAgICMgRmV0Y2ggYSBjYXQgZmFjdCB3aXRoIGEgbWF4aW11bSBsZW5ndGggb2YgMTQwIGNoYXJhY3RlcnMKICAgIGN1cmwgLS1uby1wcm9ncmVzcy1tZXRlciBodHRwczovL2NhdGZhY3QubmluamEvZmFjdD9tYXhfbGVuZ3RoPTE0MAoKICAgICMgUHJpbnQgYSBuZXdsaW5lIGZvciByZWFkYWJpbGl0eQogICAgZWNobwoKICAgICMgU2xlZXAgZm9yIDMgc2Vjb25kcyBiZWZvcmUgdGhlIG5leHQgaXRlcmF0aW9uCiAgICBzbGVlcCAzCmRvbmUKCgo="
}
},
"tags": [
"tag1"
],
"port_mappings": [
{
"internal_port": 8000,
"external_port": 80
}
],
"active_at": "2016-08-29T09:12:33.001Z",
"boot_time": {
"min_boot_in_sec": 180,
"max_boot_in_sec": 300
}
}
],
"hourly_price": 1500,
"cloud_cluster_id": "cluster-abc123",
"status_details": "Cluster is provisioning",
"cost_estimate": "$15.00",
"active_at": "2023-11-07T05:31:56Z"
}
]
}Clusters
/clusters
Get all non deleted clusters.
GET
/
clusters
/clusters
curl --request GET \
--url https://api.shadeform.ai/v1/clusters \
--header 'X-API-KEY: <api-key>'import requests
url = "https://api.shadeform.ai/v1/clusters"
headers = {"X-API-KEY": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-KEY': '<api-key>'}};
fetch('https://api.shadeform.ai/v1/clusters', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.shadeform.ai/v1/clusters",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.shadeform.ai/v1/clusters"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-KEY", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.shadeform.ai/v1/clusters")
.header("X-API-KEY", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.shadeform.ai/v1/clusters")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-KEY"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"clusters": [
{
"id": "8eda86fe-0f36-41ed-9837-0ccf8f6e0fcb",
"cloud": "denvr",
"name": "devnr-cluster1",
"region_info": {
"region": "houston-usa-1",
"display_name": "US, Houston, TX"
},
"status": "active",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"instances": [
{
"id": "d290f1ee-6c54-4b01-90e6-d701748f0851",
"cloud": "hyperstack",
"region": "canada-1",
"shade_instance_type": "A6000",
"cloud_instance_type": "gpu_1x_a6000",
"cloud_assigned_id": "13b057d7-e266-4869-985f-760fe75a78b3",
"shade_cloud": true,
"name": "cool-gpu-server",
"configuration": {
"memory_in_gb": 12,
"storage_in_gb": 256,
"vcpus": 6,
"num_gpus": 1,
"gpu_type": "A100",
"interconnect": "pcie",
"vram_per_gpu_in_gb": 48,
"gpu_manufacturer": "nvidia",
"os": "ubuntu_22_shade_os",
"nvlink": true
},
"ip": "1.0.0.1",
"ssh_user": "shadeform",
"ssh_port": 22,
"status": "active",
"cost_estimate": "103.4",
"created_at": "2016-08-29T09:12:33.001Z",
"deleted_at": "2016-08-29T09:12:33.001Z",
"status_details": "downloading",
"hourly_price": 210,
"launch_configuration": {
"type": "docker",
"docker_configuration": {
"image": "vllm/vllm-openai:latest",
"args": "--model mistralai/Mistral-7B-v0.1",
"shared_memory_in_gb": 8,
"envs": [
{
"name": "HUGGING_FACE_HUB_TOKEN",
"value": "hugging_face_api_token"
}
],
"port_mappings": [
{
"host_port": 80,
"container_port": 8000
}
],
"volume_mounts": [
{
"host_path": "~/.cache/huggingface",
"container_path": "/root/.cache/huggingface"
}
],
"registry_credentials": {
"username": "username",
"password": "password"
}
},
"script_configuration": {
"base64_script": "IyEvYmluL2Jhc2gKCiMgRW5kbGVzcyBsb29wCndoaWxlIHRydWUKZG8KICAgICMgRmV0Y2ggYSBjYXQgZmFjdCB3aXRoIGEgbWF4aW11bSBsZW5ndGggb2YgMTQwIGNoYXJhY3RlcnMKICAgIGN1cmwgLS1uby1wcm9ncmVzcy1tZXRlciBodHRwczovL2NhdGZhY3QubmluamEvZmFjdD9tYXhfbGVuZ3RoPTE0MAoKICAgICMgUHJpbnQgYSBuZXdsaW5lIGZvciByZWFkYWJpbGl0eQogICAgZWNobwoKICAgICMgU2xlZXAgZm9yIDMgc2Vjb25kcyBiZWZvcmUgdGhlIG5leHQgaXRlcmF0aW9uCiAgICBzbGVlcCAzCmRvbmUKCgo="
}
},
"tags": [
"tag1"
],
"port_mappings": [
{
"internal_port": 8000,
"external_port": 80
}
],
"active_at": "2016-08-29T09:12:33.001Z",
"boot_time": {
"min_boot_in_sec": 180,
"max_boot_in_sec": 300
}
}
],
"hourly_price": 1500,
"cloud_cluster_id": "cluster-abc123",
"status_details": "Cluster is provisioning",
"cost_estimate": "$15.00",
"active_at": "2023-11-07T05:31:56Z"
}
]
}⌘I