curl --request POST \
--url https://api.blaxel.ai/v0/volume_templates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"metadata": {
"name": "my-resource",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {}
},
"spec": {
"defaultSize": 123,
"description": "<string>"
},
"state": {},
"versions": [
{
"name": "<string>",
"templateName": "<string>"
}
]
}
'import requests
url = "https://api.blaxel.ai/v0/volume_templates"
payload = {
"metadata": {
"name": "my-resource",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {}
},
"spec": {
"defaultSize": 123,
"description": "<string>"
},
"state": {},
"versions": [
{
"name": "<string>",
"templateName": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
metadata: {
name: 'my-resource',
displayName: 'My Resource',
externalId: 'my-session-123',
labels: {}
},
spec: {defaultSize: 123, description: '<string>'},
state: {},
versions: [{name: '<string>', templateName: '<string>'}]
})
};
fetch('https://api.blaxel.ai/v0/volume_templates', 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.blaxel.ai/v0/volume_templates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'metadata' => [
'name' => 'my-resource',
'displayName' => 'My Resource',
'externalId' => 'my-session-123',
'labels' => [
]
],
'spec' => [
'defaultSize' => 123,
'description' => '<string>'
],
'state' => [
],
'versions' => [
[
'name' => '<string>',
'templateName' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.blaxel.ai/v0/volume_templates"
payload := strings.NewReader("{\n \"metadata\": {\n \"name\": \"my-resource\",\n \"displayName\": \"My Resource\",\n \"externalId\": \"my-session-123\",\n \"labels\": {}\n },\n \"spec\": {\n \"defaultSize\": 123,\n \"description\": \"<string>\"\n },\n \"state\": {},\n \"versions\": [\n {\n \"name\": \"<string>\",\n \"templateName\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.blaxel.ai/v0/volume_templates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"metadata\": {\n \"name\": \"my-resource\",\n \"displayName\": \"My Resource\",\n \"externalId\": \"my-session-123\",\n \"labels\": {}\n },\n \"spec\": {\n \"defaultSize\": 123,\n \"description\": \"<string>\"\n },\n \"state\": {},\n \"versions\": [\n {\n \"name\": \"<string>\",\n \"templateName\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blaxel.ai/v0/volume_templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metadata\": {\n \"name\": \"my-resource\",\n \"displayName\": \"My Resource\",\n \"externalId\": \"my-session-123\",\n \"labels\": {}\n },\n \"spec\": {\n \"defaultSize\": 123,\n \"description\": \"<string>\"\n },\n \"state\": {},\n \"versions\": [\n {\n \"name\": \"<string>\",\n \"templateName\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"name": "my-resource",
"createdAt": "<string>",
"updatedAt": "<string>",
"createdBy": "<string>",
"updatedBy": "<string>",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {},
"plan": "<string>",
"url": "<string>",
"workspace": "<string>"
},
"spec": {
"defaultSize": 123,
"description": "<string>"
},
"state": {
"lastVersionUploadedAt": "<string>",
"latestVersion": "<string>",
"versionCount": 123
},
"versions": [
{
"bucket": "<string>",
"contentSize": 123,
"name": "<string>",
"region": "<string>",
"templateName": "<string>",
"versionId": "<string>",
"workspace": "<string>"
}
]
}Create volume template
Creates a new volume template for initializing volumes with pre-configured filesystem contents. Optionally returns a presigned URL for uploading the template archive.
curl --request POST \
--url https://api.blaxel.ai/v0/volume_templates \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"metadata": {
"name": "my-resource",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {}
},
"spec": {
"defaultSize": 123,
"description": "<string>"
},
"state": {},
"versions": [
{
"name": "<string>",
"templateName": "<string>"
}
]
}
'import requests
url = "https://api.blaxel.ai/v0/volume_templates"
payload = {
"metadata": {
"name": "my-resource",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {}
},
"spec": {
"defaultSize": 123,
"description": "<string>"
},
"state": {},
"versions": [
{
"name": "<string>",
"templateName": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
metadata: {
name: 'my-resource',
displayName: 'My Resource',
externalId: 'my-session-123',
labels: {}
},
spec: {defaultSize: 123, description: '<string>'},
state: {},
versions: [{name: '<string>', templateName: '<string>'}]
})
};
fetch('https://api.blaxel.ai/v0/volume_templates', 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.blaxel.ai/v0/volume_templates",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'metadata' => [
'name' => 'my-resource',
'displayName' => 'My Resource',
'externalId' => 'my-session-123',
'labels' => [
]
],
'spec' => [
'defaultSize' => 123,
'description' => '<string>'
],
'state' => [
],
'versions' => [
[
'name' => '<string>',
'templateName' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.blaxel.ai/v0/volume_templates"
payload := strings.NewReader("{\n \"metadata\": {\n \"name\": \"my-resource\",\n \"displayName\": \"My Resource\",\n \"externalId\": \"my-session-123\",\n \"labels\": {}\n },\n \"spec\": {\n \"defaultSize\": 123,\n \"description\": \"<string>\"\n },\n \"state\": {},\n \"versions\": [\n {\n \"name\": \"<string>\",\n \"templateName\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.blaxel.ai/v0/volume_templates")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"metadata\": {\n \"name\": \"my-resource\",\n \"displayName\": \"My Resource\",\n \"externalId\": \"my-session-123\",\n \"labels\": {}\n },\n \"spec\": {\n \"defaultSize\": 123,\n \"description\": \"<string>\"\n },\n \"state\": {},\n \"versions\": [\n {\n \"name\": \"<string>\",\n \"templateName\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blaxel.ai/v0/volume_templates")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metadata\": {\n \"name\": \"my-resource\",\n \"displayName\": \"My Resource\",\n \"externalId\": \"my-session-123\",\n \"labels\": {}\n },\n \"spec\": {\n \"defaultSize\": 123,\n \"description\": \"<string>\"\n },\n \"state\": {},\n \"versions\": [\n {\n \"name\": \"<string>\",\n \"templateName\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"metadata": {
"name": "my-resource",
"createdAt": "<string>",
"updatedAt": "<string>",
"createdBy": "<string>",
"updatedBy": "<string>",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {},
"plan": "<string>",
"url": "<string>",
"workspace": "<string>"
},
"spec": {
"defaultSize": 123,
"description": "<string>"
},
"state": {
"lastVersionUploadedAt": "<string>",
"latestVersion": "<string>",
"versionCount": 123
},
"versions": [
{
"bucket": "<string>",
"contentSize": 123,
"name": "<string>",
"region": "<string>",
"templateName": "<string>",
"versionId": "<string>",
"workspace": "<string>"
}
]
}Authorizations
OAuth2 authentication with JWT tokens
Query Parameters
If true, returns a presigned URL for uploading the template content
Version name for the template version being created
Body
Volume template for creating pre-configured volumes
Common metadata fields shared by all Blaxel resources including name, labels, timestamps, and ownership information
Show child attributes
Show child attributes
Volume template specification
Show child attributes
Show child attributes
Volume template state
List of versions for this template
Show child attributes
Show child attributes
Response
successful operation
Volume template for creating pre-configured volumes
Common metadata fields shared by all Blaxel resources including name, labels, timestamps, and ownership information
Show child attributes
Show child attributes
Volume template specification
Show child attributes
Show child attributes
Volume template state
Show child attributes
Show child attributes
List of versions for this template
Show child attributes
Show child attributes
Was this page helpful?
