API Reference · Workloads

Update a workload

Replace a single workload by id. The body is the full desired `Workload` (the path id wins). Credentials may be omitted for an existing VM — the secret persists.

PUT/v1/tenants/{name}/workloads/{id}

Authorization

x-api-keystringrequired
Your per-workspace API key, e.g. llc_AbC123…. Also accepted as Authorization: Bearer <key>. Mint keys on your workspace's API keys page — each key belongs to one workspace.

Path parameters

namestringrequired
Workspace (tenant) name.
idstringrequired
Workload id within the workspace.

Body

One resource in a workspace. Set the block matching `type` — `pod` for a container app, `vm` for a VM, `storage` for a managed database, `browser`/`controller` for the agentic-browser stack.

idstringrequired
DNS label, ≤30 chars, unique within the workspace.
typeenumrequired
One of: vm-ubuntu · vm-ubuntu-desktop · vm-windows · pod · browser · controller · storage.
stoppedbooleanoptional
Halt a VM workload without deleting it.
podobjectoptional
Container app. Set `image` for a prebuilt image, or `source.repo` to build from Git (auto-built, no Dockerfile).
vmobjectoptional
VM workload. `credentials.{username,password}` are required when creating a new VM (write-only).
browserobjectoptional
Managed headless browser. Set `aiAgent.enabled` to attach its built-in AI driver (renders a browser-agent runtime for it; tasks go to `/browsers/{id}/act`). A browser has exactly ONE driver: enable its AI agent OR attach it to a Browser API (a controller's `browsers` list / autodiscover) — never both (422). While driven, direct CDP control tokens are refused (409); the VNC watch stream always stays available to humans.
controllerobjectoptional
storageobjectoptional
Managed database (postgres via CNPG, or redis). `backup` is postgres-only.

Response

202Accepted.

curl -X PUT https://api.live-llm.com/v1/tenants/acme/workloads/web \
  -H "x-api-key: $LIVELLM_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "id": "web",
    "type": "pod",
    "stopped": false,
    "pod": {
      "image": "nginx:1.27",
      "cpu": "500m",
      "memory": "512Mi",
      "ports": [
        {
          "name": "http",
          "port": 80
        }
      ],
      "env": {
        "DB_HOST": "app-db-rw"
      }
    }
  }'
Try itPUThttps://api.live-llm.com/v1/tenants/{name}/workloads/{id}
Fill required path params: name, id.
Example response202
{
  "tenant": "acme",
  "status": "accepted"
}