curl --request POST \
--url https://api.blaxel.ai/v0/applications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"metadata": {
"name": "my-resource",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {}
},
"spec": {
"enabled": true,
"port": 8080,
"region": "us-pdx-1",
"revision": {
"active": "<string>",
"canary": "<string>",
"canaryPercent": 10,
"stickySessionTtl": 0,
"traffic": 100
},
"revisions": [
{
"image": "<string>",
"createdAt": "<string>",
"createdBy": "<string>",
"envs": [
{
"name": "MY_ENV_VAR",
"secret": true,
"value": "my-value"
}
],
"id": "<string>",
"memory": 2048,
"port": 8080
}
],
"urls": [
{
"domain": "app.example.com",
"subdomain": "www"
}
]
}
}
'import requests
url = "https://api.blaxel.ai/v0/applications"
payload = {
"metadata": {
"name": "my-resource",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {}
},
"spec": {
"enabled": True,
"port": 8080,
"region": "us-pdx-1",
"revision": {
"active": "<string>",
"canary": "<string>",
"canaryPercent": 10,
"stickySessionTtl": 0,
"traffic": 100
},
"revisions": [
{
"image": "<string>",
"createdAt": "<string>",
"createdBy": "<string>",
"envs": [
{
"name": "MY_ENV_VAR",
"secret": True,
"value": "my-value"
}
],
"id": "<string>",
"memory": 2048,
"port": 8080
}
],
"urls": [
{
"domain": "app.example.com",
"subdomain": "www"
}
]
}
}
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: {
enabled: true,
port: 8080,
region: 'us-pdx-1',
revision: {
active: '<string>',
canary: '<string>',
canaryPercent: 10,
stickySessionTtl: 0,
traffic: 100
},
revisions: [
{
image: '<string>',
createdAt: '<string>',
createdBy: '<string>',
envs: [{name: 'MY_ENV_VAR', secret: true, value: 'my-value'}],
id: '<string>',
memory: 2048,
port: 8080
}
],
urls: [{domain: 'app.example.com', subdomain: 'www'}]
}
})
};
fetch('https://api.blaxel.ai/v0/applications', 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/applications",
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' => [
'enabled' => true,
'port' => 8080,
'region' => 'us-pdx-1',
'revision' => [
'active' => '<string>',
'canary' => '<string>',
'canaryPercent' => 10,
'stickySessionTtl' => 0,
'traffic' => 100
],
'revisions' => [
[
'image' => '<string>',
'createdAt' => '<string>',
'createdBy' => '<string>',
'envs' => [
[
'name' => 'MY_ENV_VAR',
'secret' => true,
'value' => 'my-value'
]
],
'id' => '<string>',
'memory' => 2048,
'port' => 8080
]
],
'urls' => [
[
'domain' => 'app.example.com',
'subdomain' => 'www'
]
]
]
]),
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/applications"
payload := strings.NewReader("{\n \"metadata\": {\n \"name\": \"my-resource\",\n \"displayName\": \"My Resource\",\n \"externalId\": \"my-session-123\",\n \"labels\": {}\n },\n \"spec\": {\n \"enabled\": true,\n \"port\": 8080,\n \"region\": \"us-pdx-1\",\n \"revision\": {\n \"active\": \"<string>\",\n \"canary\": \"<string>\",\n \"canaryPercent\": 10,\n \"stickySessionTtl\": 0,\n \"traffic\": 100\n },\n \"revisions\": [\n {\n \"image\": \"<string>\",\n \"createdAt\": \"<string>\",\n \"createdBy\": \"<string>\",\n \"envs\": [\n {\n \"name\": \"MY_ENV_VAR\",\n \"secret\": true,\n \"value\": \"my-value\"\n }\n ],\n \"id\": \"<string>\",\n \"memory\": 2048,\n \"port\": 8080\n }\n ],\n \"urls\": [\n {\n \"domain\": \"app.example.com\",\n \"subdomain\": \"www\"\n }\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/applications")
.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 \"enabled\": true,\n \"port\": 8080,\n \"region\": \"us-pdx-1\",\n \"revision\": {\n \"active\": \"<string>\",\n \"canary\": \"<string>\",\n \"canaryPercent\": 10,\n \"stickySessionTtl\": 0,\n \"traffic\": 100\n },\n \"revisions\": [\n {\n \"image\": \"<string>\",\n \"createdAt\": \"<string>\",\n \"createdBy\": \"<string>\",\n \"envs\": [\n {\n \"name\": \"MY_ENV_VAR\",\n \"secret\": true,\n \"value\": \"my-value\"\n }\n ],\n \"id\": \"<string>\",\n \"memory\": 2048,\n \"port\": 8080\n }\n ],\n \"urls\": [\n {\n \"domain\": \"app.example.com\",\n \"subdomain\": \"www\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blaxel.ai/v0/applications")
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 \"enabled\": true,\n \"port\": 8080,\n \"region\": \"us-pdx-1\",\n \"revision\": {\n \"active\": \"<string>\",\n \"canary\": \"<string>\",\n \"canaryPercent\": 10,\n \"stickySessionTtl\": 0,\n \"traffic\": 100\n },\n \"revisions\": [\n {\n \"image\": \"<string>\",\n \"createdAt\": \"<string>\",\n \"createdBy\": \"<string>\",\n \"envs\": [\n {\n \"name\": \"MY_ENV_VAR\",\n \"secret\": true,\n \"value\": \"my-value\"\n }\n ],\n \"id\": \"<string>\",\n \"memory\": 2048,\n \"port\": 8080\n }\n ],\n \"urls\": [\n {\n \"domain\": \"app.example.com\",\n \"subdomain\": \"www\"\n }\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": {
"enabled": true,
"port": 8080,
"region": "us-pdx-1",
"revision": {
"active": "<string>",
"canary": "<string>",
"canaryPercent": 10,
"stickySessionTtl": 0,
"traffic": 100
},
"revisions": [
{
"image": "<string>",
"createdAt": "<string>",
"createdBy": "<string>",
"envs": [
{
"name": "MY_ENV_VAR",
"secret": true,
"value": "my-value"
}
],
"id": "<string>",
"memory": 2048,
"port": 8080
}
],
"urls": [
{
"domain": "app.example.com",
"subdomain": "www"
}
]
},
"events": [
{
"canaryRevision": "<string>",
"message": "Deployment successful",
"revision": "rev-abc123",
"status": "DEPLOYED",
"time": "2025-01-15T10:30:00Z",
"type": "deployment"
}
],
"status": "<string>"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}Create application
Creates a new application deployment. Applications are long-running workloads that default to public access and mk3 generation.
curl --request POST \
--url https://api.blaxel.ai/v0/applications \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"metadata": {
"name": "my-resource",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {}
},
"spec": {
"enabled": true,
"port": 8080,
"region": "us-pdx-1",
"revision": {
"active": "<string>",
"canary": "<string>",
"canaryPercent": 10,
"stickySessionTtl": 0,
"traffic": 100
},
"revisions": [
{
"image": "<string>",
"createdAt": "<string>",
"createdBy": "<string>",
"envs": [
{
"name": "MY_ENV_VAR",
"secret": true,
"value": "my-value"
}
],
"id": "<string>",
"memory": 2048,
"port": 8080
}
],
"urls": [
{
"domain": "app.example.com",
"subdomain": "www"
}
]
}
}
'import requests
url = "https://api.blaxel.ai/v0/applications"
payload = {
"metadata": {
"name": "my-resource",
"displayName": "My Resource",
"externalId": "my-session-123",
"labels": {}
},
"spec": {
"enabled": True,
"port": 8080,
"region": "us-pdx-1",
"revision": {
"active": "<string>",
"canary": "<string>",
"canaryPercent": 10,
"stickySessionTtl": 0,
"traffic": 100
},
"revisions": [
{
"image": "<string>",
"createdAt": "<string>",
"createdBy": "<string>",
"envs": [
{
"name": "MY_ENV_VAR",
"secret": True,
"value": "my-value"
}
],
"id": "<string>",
"memory": 2048,
"port": 8080
}
],
"urls": [
{
"domain": "app.example.com",
"subdomain": "www"
}
]
}
}
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: {
enabled: true,
port: 8080,
region: 'us-pdx-1',
revision: {
active: '<string>',
canary: '<string>',
canaryPercent: 10,
stickySessionTtl: 0,
traffic: 100
},
revisions: [
{
image: '<string>',
createdAt: '<string>',
createdBy: '<string>',
envs: [{name: 'MY_ENV_VAR', secret: true, value: 'my-value'}],
id: '<string>',
memory: 2048,
port: 8080
}
],
urls: [{domain: 'app.example.com', subdomain: 'www'}]
}
})
};
fetch('https://api.blaxel.ai/v0/applications', 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/applications",
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' => [
'enabled' => true,
'port' => 8080,
'region' => 'us-pdx-1',
'revision' => [
'active' => '<string>',
'canary' => '<string>',
'canaryPercent' => 10,
'stickySessionTtl' => 0,
'traffic' => 100
],
'revisions' => [
[
'image' => '<string>',
'createdAt' => '<string>',
'createdBy' => '<string>',
'envs' => [
[
'name' => 'MY_ENV_VAR',
'secret' => true,
'value' => 'my-value'
]
],
'id' => '<string>',
'memory' => 2048,
'port' => 8080
]
],
'urls' => [
[
'domain' => 'app.example.com',
'subdomain' => 'www'
]
]
]
]),
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/applications"
payload := strings.NewReader("{\n \"metadata\": {\n \"name\": \"my-resource\",\n \"displayName\": \"My Resource\",\n \"externalId\": \"my-session-123\",\n \"labels\": {}\n },\n \"spec\": {\n \"enabled\": true,\n \"port\": 8080,\n \"region\": \"us-pdx-1\",\n \"revision\": {\n \"active\": \"<string>\",\n \"canary\": \"<string>\",\n \"canaryPercent\": 10,\n \"stickySessionTtl\": 0,\n \"traffic\": 100\n },\n \"revisions\": [\n {\n \"image\": \"<string>\",\n \"createdAt\": \"<string>\",\n \"createdBy\": \"<string>\",\n \"envs\": [\n {\n \"name\": \"MY_ENV_VAR\",\n \"secret\": true,\n \"value\": \"my-value\"\n }\n ],\n \"id\": \"<string>\",\n \"memory\": 2048,\n \"port\": 8080\n }\n ],\n \"urls\": [\n {\n \"domain\": \"app.example.com\",\n \"subdomain\": \"www\"\n }\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/applications")
.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 \"enabled\": true,\n \"port\": 8080,\n \"region\": \"us-pdx-1\",\n \"revision\": {\n \"active\": \"<string>\",\n \"canary\": \"<string>\",\n \"canaryPercent\": 10,\n \"stickySessionTtl\": 0,\n \"traffic\": 100\n },\n \"revisions\": [\n {\n \"image\": \"<string>\",\n \"createdAt\": \"<string>\",\n \"createdBy\": \"<string>\",\n \"envs\": [\n {\n \"name\": \"MY_ENV_VAR\",\n \"secret\": true,\n \"value\": \"my-value\"\n }\n ],\n \"id\": \"<string>\",\n \"memory\": 2048,\n \"port\": 8080\n }\n ],\n \"urls\": [\n {\n \"domain\": \"app.example.com\",\n \"subdomain\": \"www\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.blaxel.ai/v0/applications")
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 \"enabled\": true,\n \"port\": 8080,\n \"region\": \"us-pdx-1\",\n \"revision\": {\n \"active\": \"<string>\",\n \"canary\": \"<string>\",\n \"canaryPercent\": 10,\n \"stickySessionTtl\": 0,\n \"traffic\": 100\n },\n \"revisions\": [\n {\n \"image\": \"<string>\",\n \"createdAt\": \"<string>\",\n \"createdBy\": \"<string>\",\n \"envs\": [\n {\n \"name\": \"MY_ENV_VAR\",\n \"secret\": true,\n \"value\": \"my-value\"\n }\n ],\n \"id\": \"<string>\",\n \"memory\": 2048,\n \"port\": 8080\n }\n ],\n \"urls\": [\n {\n \"domain\": \"app.example.com\",\n \"subdomain\": \"www\"\n }\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": {
"enabled": true,
"port": 8080,
"region": "us-pdx-1",
"revision": {
"active": "<string>",
"canary": "<string>",
"canaryPercent": 10,
"stickySessionTtl": 0,
"traffic": 100
},
"revisions": [
{
"image": "<string>",
"createdAt": "<string>",
"createdBy": "<string>",
"envs": [
{
"name": "MY_ENV_VAR",
"secret": true,
"value": "my-value"
}
],
"id": "<string>",
"memory": 2048,
"port": 8080
}
],
"urls": [
{
"domain": "app.example.com",
"subdomain": "www"
}
]
},
"events": [
{
"canaryRevision": "<string>",
"message": "Deployment successful",
"revision": "rev-abc123",
"status": "DEPLOYED",
"time": "2025-01-15T10:30:00Z",
"type": "deployment"
}
],
"status": "<string>"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}{
"error": "Resource already exists",
"code": 409,
"message": "Invalid request body"
}Authorizations
OAuth2 authentication with JWT tokens
Body
Long-running application deployment that runs your custom code as a publicly accessible endpoint. Applications are always public and use mk3 generation.
Response
successful operation
Long-running application deployment that runs your custom code as a publicly accessible endpoint. Applications are always public and use mk3 generation.
Common metadata fields shared by all Blaxel resources including name, labels, timestamps, and ownership information
Show child attributes
Show child attributes
Configuration for an application including revision management, URL routing, and deployment region
Show child attributes
Show child attributes
Events happening on a resource deployed on Blaxel
Show child attributes
Show child attributes
Application status computed from events
Was this page helpful?
