Skip to main content
PUT
/
agents
/
{agentName}
Update agent
curl --request PUT \
  --url https://api.blaxel.ai/v0/agents/{agentName} \
  --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,
    "policies": [
      "<string>"
    ],
    "public": false,
    "region": "us-pdx-1",
    "repository": {
      "type": "github",
      "url": "https://github.com/my-org/my-agent"
    },
    "revision": {
      "active": "rev-abc123",
      "canary": "<string>",
      "canaryPercent": 10,
      "stickySessionTtl": 0,
      "traffic": 100
    },
    "runtime": {
      "envs": [
        {
          "name": "MY_ENV_VAR",
          "secret": true,
          "value": "my-value"
        }
      ],
      "generation": "mk3",
      "image": "<string>",
      "maxScale": 10,
      "memory": 2048,
      "minScale": 0
    },
    "triggers": [
      {
        "configuration": {
          "authenticationType": "blaxel",
          "callbackUrl": "https://myapp.com/webhook",
          "path": "/invoke",
          "retry": 3,
          "schedule": "0 * * * *",
          "tasks": [
            {}
          ],
          "timeout": 300
        },
        "enabled": true,
        "id": "trigger-1",
        "type": "http"
      }
    ],
    "volumes": [
      {
        "mountPath": "/mnt/data",
        "name": "my-volume",
        "readOnly": false
      }
    ]
  }
}
'
import requests

url = "https://api.blaxel.ai/v0/agents/{agentName}"

payload = {
    "metadata": {
        "name": "my-resource",
        "displayName": "My Resource",
        "externalId": "my-session-123",
        "labels": {}
    },
    "spec": {
        "enabled": True,
        "policies": ["<string>"],
        "public": False,
        "region": "us-pdx-1",
        "repository": {
            "type": "github",
            "url": "https://github.com/my-org/my-agent"
        },
        "revision": {
            "active": "rev-abc123",
            "canary": "<string>",
            "canaryPercent": 10,
            "stickySessionTtl": 0,
            "traffic": 100
        },
        "runtime": {
            "envs": [
                {
                    "name": "MY_ENV_VAR",
                    "secret": True,
                    "value": "my-value"
                }
            ],
            "generation": "mk3",
            "image": "<string>",
            "maxScale": 10,
            "memory": 2048,
            "minScale": 0
        },
        "triggers": [
            {
                "configuration": {
                    "authenticationType": "blaxel",
                    "callbackUrl": "https://myapp.com/webhook",
                    "path": "/invoke",
                    "retry": 3,
                    "schedule": "0 * * * *",
                    "tasks": [{}],
                    "timeout": 300
                },
                "enabled": True,
                "id": "trigger-1",
                "type": "http"
            }
        ],
        "volumes": [
            {
                "mountPath": "/mnt/data",
                "name": "my-volume",
                "readOnly": False
            }
        ]
    }
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'PUT',
  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,
      policies: ['<string>'],
      public: false,
      region: 'us-pdx-1',
      repository: {type: 'github', url: 'https://github.com/my-org/my-agent'},
      revision: {
        active: 'rev-abc123',
        canary: '<string>',
        canaryPercent: 10,
        stickySessionTtl: 0,
        traffic: 100
      },
      runtime: {
        envs: [{name: 'MY_ENV_VAR', secret: true, value: 'my-value'}],
        generation: 'mk3',
        image: '<string>',
        maxScale: 10,
        memory: 2048,
        minScale: 0
      },
      triggers: [
        {
          configuration: {
            authenticationType: 'blaxel',
            callbackUrl: 'https://myapp.com/webhook',
            path: '/invoke',
            retry: 3,
            schedule: '0 * * * *',
            tasks: [{}],
            timeout: 300
          },
          enabled: true,
          id: 'trigger-1',
          type: 'http'
        }
      ],
      volumes: [{mountPath: '/mnt/data', name: 'my-volume', readOnly: false}]
    }
  })
};

fetch('https://api.blaxel.ai/v0/agents/{agentName}', 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/agents/{agentName}",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "PUT",
  CURLOPT_POSTFIELDS => json_encode([
    'metadata' => [
        'name' => 'my-resource',
        'displayName' => 'My Resource',
        'externalId' => 'my-session-123',
        'labels' => [
                
        ]
    ],
    'spec' => [
        'enabled' => true,
        'policies' => [
                '<string>'
        ],
        'public' => false,
        'region' => 'us-pdx-1',
        'repository' => [
                'type' => 'github',
                'url' => 'https://github.com/my-org/my-agent'
        ],
        'revision' => [
                'active' => 'rev-abc123',
                'canary' => '<string>',
                'canaryPercent' => 10,
                'stickySessionTtl' => 0,
                'traffic' => 100
        ],
        'runtime' => [
                'envs' => [
                                [
                                                                'name' => 'MY_ENV_VAR',
                                                                'secret' => true,
                                                                'value' => 'my-value'
                                ]
                ],
                'generation' => 'mk3',
                'image' => '<string>',
                'maxScale' => 10,
                'memory' => 2048,
                'minScale' => 0
        ],
        'triggers' => [
                [
                                'configuration' => [
                                                                'authenticationType' => 'blaxel',
                                                                'callbackUrl' => 'https://myapp.com/webhook',
                                                                'path' => '/invoke',
                                                                'retry' => 3,
                                                                'schedule' => '0 * * * *',
                                                                'tasks' => [
                                                                                                                                [
                                                                                                                                                                                                                                                                
                                                                                                                                ]
                                                                ],
                                                                'timeout' => 300
                                ],
                                'enabled' => true,
                                'id' => 'trigger-1',
                                'type' => 'http'
                ]
        ],
        'volumes' => [
                [
                                'mountPath' => '/mnt/data',
                                'name' => 'my-volume',
                                'readOnly' => false
                ]
        ]
    ]
  ]),
  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/agents/{agentName}"

	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    \"policies\": [\n      \"<string>\"\n    ],\n    \"public\": false,\n    \"region\": \"us-pdx-1\",\n    \"repository\": {\n      \"type\": \"github\",\n      \"url\": \"https://github.com/my-org/my-agent\"\n    },\n    \"revision\": {\n      \"active\": \"rev-abc123\",\n      \"canary\": \"<string>\",\n      \"canaryPercent\": 10,\n      \"stickySessionTtl\": 0,\n      \"traffic\": 100\n    },\n    \"runtime\": {\n      \"envs\": [\n        {\n          \"name\": \"MY_ENV_VAR\",\n          \"secret\": true,\n          \"value\": \"my-value\"\n        }\n      ],\n      \"generation\": \"mk3\",\n      \"image\": \"<string>\",\n      \"maxScale\": 10,\n      \"memory\": 2048,\n      \"minScale\": 0\n    },\n    \"triggers\": [\n      {\n        \"configuration\": {\n          \"authenticationType\": \"blaxel\",\n          \"callbackUrl\": \"https://myapp.com/webhook\",\n          \"path\": \"/invoke\",\n          \"retry\": 3,\n          \"schedule\": \"0 * * * *\",\n          \"tasks\": [\n            {}\n          ],\n          \"timeout\": 300\n        },\n        \"enabled\": true,\n        \"id\": \"trigger-1\",\n        \"type\": \"http\"\n      }\n    ],\n    \"volumes\": [\n      {\n        \"mountPath\": \"/mnt/data\",\n        \"name\": \"my-volume\",\n        \"readOnly\": false\n      }\n    ]\n  }\n}")

	req, _ := http.NewRequest("PUT", 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.put("https://api.blaxel.ai/v0/agents/{agentName}")
  .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    \"policies\": [\n      \"<string>\"\n    ],\n    \"public\": false,\n    \"region\": \"us-pdx-1\",\n    \"repository\": {\n      \"type\": \"github\",\n      \"url\": \"https://github.com/my-org/my-agent\"\n    },\n    \"revision\": {\n      \"active\": \"rev-abc123\",\n      \"canary\": \"<string>\",\n      \"canaryPercent\": 10,\n      \"stickySessionTtl\": 0,\n      \"traffic\": 100\n    },\n    \"runtime\": {\n      \"envs\": [\n        {\n          \"name\": \"MY_ENV_VAR\",\n          \"secret\": true,\n          \"value\": \"my-value\"\n        }\n      ],\n      \"generation\": \"mk3\",\n      \"image\": \"<string>\",\n      \"maxScale\": 10,\n      \"memory\": 2048,\n      \"minScale\": 0\n    },\n    \"triggers\": [\n      {\n        \"configuration\": {\n          \"authenticationType\": \"blaxel\",\n          \"callbackUrl\": \"https://myapp.com/webhook\",\n          \"path\": \"/invoke\",\n          \"retry\": 3,\n          \"schedule\": \"0 * * * *\",\n          \"tasks\": [\n            {}\n          ],\n          \"timeout\": 300\n        },\n        \"enabled\": true,\n        \"id\": \"trigger-1\",\n        \"type\": \"http\"\n      }\n    ],\n    \"volumes\": [\n      {\n        \"mountPath\": \"/mnt/data\",\n        \"name\": \"my-volume\",\n        \"readOnly\": false\n      }\n    ]\n  }\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.blaxel.ai/v0/agents/{agentName}")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.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    \"policies\": [\n      \"<string>\"\n    ],\n    \"public\": false,\n    \"region\": \"us-pdx-1\",\n    \"repository\": {\n      \"type\": \"github\",\n      \"url\": \"https://github.com/my-org/my-agent\"\n    },\n    \"revision\": {\n      \"active\": \"rev-abc123\",\n      \"canary\": \"<string>\",\n      \"canaryPercent\": 10,\n      \"stickySessionTtl\": 0,\n      \"traffic\": 100\n    },\n    \"runtime\": {\n      \"envs\": [\n        {\n          \"name\": \"MY_ENV_VAR\",\n          \"secret\": true,\n          \"value\": \"my-value\"\n        }\n      ],\n      \"generation\": \"mk3\",\n      \"image\": \"<string>\",\n      \"maxScale\": 10,\n      \"memory\": 2048,\n      \"minScale\": 0\n    },\n    \"triggers\": [\n      {\n        \"configuration\": {\n          \"authenticationType\": \"blaxel\",\n          \"callbackUrl\": \"https://myapp.com/webhook\",\n          \"path\": \"/invoke\",\n          \"retry\": 3,\n          \"schedule\": \"0 * * * *\",\n          \"tasks\": [\n            {}\n          ],\n          \"timeout\": 300\n        },\n        \"enabled\": true,\n        \"id\": \"trigger-1\",\n        \"type\": \"http\"\n      }\n    ],\n    \"volumes\": [\n      {\n        \"mountPath\": \"/mnt/data\",\n        \"name\": \"my-volume\",\n        \"readOnly\": false\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,
    "policies": [
      "<string>"
    ],
    "public": false,
    "region": "us-pdx-1",
    "repository": {
      "type": "github",
      "url": "https://github.com/my-org/my-agent"
    },
    "revision": {
      "active": "rev-abc123",
      "canary": "<string>",
      "canaryPercent": 10,
      "stickySessionTtl": 0,
      "traffic": 100
    },
    "runtime": {
      "envs": [
        {
          "name": "MY_ENV_VAR",
          "secret": true,
          "value": "my-value"
        }
      ],
      "generation": "mk3",
      "image": "<string>",
      "maxScale": 10,
      "memory": 2048,
      "minScale": 0
    },
    "triggers": [
      {
        "configuration": {
          "authenticationType": "blaxel",
          "callbackSecret": "<string>",
          "callbackUrl": "https://myapp.com/webhook",
          "path": "/invoke",
          "retry": 3,
          "schedule": "0 * * * *",
          "tasks": [
            {}
          ],
          "timeout": 300
        },
        "enabled": true,
        "id": "trigger-1",
        "type": "http"
      }
    ],
    "volumes": [
      {
        "mountPath": "/mnt/data",
        "name": "my-volume",
        "readOnly": false
      }
    ]
  },
  "events": [
    {
      "canaryRevision": "<string>",
      "message": "Deployment successful",
      "revision": "rev-abc123",
      "status": "DEPLOYED",
      "time": "2025-01-15T10:30:00Z",
      "type": "deployment"
    }
  ]
}
{
  "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

Authorization
string
header
required

OAuth2 authentication with JWT tokens

Path Parameters

agentName
string
required

Unique name identifier of the agent

Body

application/json

Serverless AI agent deployment that runs your custom agent code as an auto-scaling API endpoint. Agents are deployed from your code repository and expose a global inference URL for querying.

metadata
object
required

Common metadata fields shared by all Blaxel resources including name, labels, timestamps, and ownership information

spec
object
required

Configuration for an AI agent including runtime settings, repository source, and deployment triggers

Response

successful operation

Serverless AI agent deployment that runs your custom agent code as an auto-scaling API endpoint. Agents are deployed from your code repository and expose a global inference URL for querying.

metadata
object
required

Common metadata fields shared by all Blaxel resources including name, labels, timestamps, and ownership information

spec
object
required

Configuration for an AI agent including runtime settings, repository source, and deployment triggers

events
object[]
read-only

Events happening on a resource deployed on Blaxel

status
enum<string>
read-only

Deployment status of a resource deployed on Blaxel

Available options:
DELETING,
TERMINATED,
FAILED,
DEACTIVATED,
DEACTIVATING,
UPLOADING,
BUILDING,
DEPLOYING,
DEPLOYED,
BUILT
Last modified on July 1, 2026