Cvm

Confidential computing instance management in Phala Network

Handle List Public Cvms

get
Responses
200
Successful Response
application/json
get
GET /api/v1/verified_apps HTTP/1.1
Host: 
Accept: */*
200

Successful Response

[
  {
    "name": "text",
    "status": "text",
    "app_id": "text",
    "vm_uuid": "text",
    "instance_id": "text",
    "base_image": "text"
  }
]

Handle Get Cvm Attestation Anonymous

get
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
get
GET /api/v1/verified_apps/{identifier}/attestation HTTP/1.1
Host: 
Accept: */*
{
  "is_online": true,
  "is_public": true,
  "error": "text",
  "name": "text",
  "app_certificates": [
    {
      "subject": {
        "common_name": "text",
        "organization": "text",
        "country": "text",
        "state": "text",
        "locality": "text"
      },
      "issuer": {
        "common_name": "text",
        "organization": "text",
        "country": "text"
      },
      "serial_number": "text",
      "not_before": "2025-07-04T04:40:03.487Z",
      "not_after": "2025-07-04T04:40:03.487Z",
      "version": "text",
      "fingerprint": "text",
      "signature_algorithm": "text",
      "sans": [
        "text"
      ],
      "is_ca": false,
      "position_in_chain": 1,
      "quote": "text"
    }
  ],
  "tcb_info": {
    "mrtd": "text",
    "rootfs_hash": "text",
    "rtmr0": "text",
    "rtmr1": "text",
    "rtmr2": "text",
    "rtmr3": "text",
    "event_log": [
      {
        "imr": 1,
        "event_type": 1,
        "digest": "text",
        "event": "text",
        "event_payload": "text"
      }
    ],
    "app_compose": "text"
  },
  "compose_file": "text"
}

Handle Get Pubkey From Cvm Configuration

post
Authorizations
Body

The Compose Manifest

user_idany ofOptional
integerOptional
or
nullOptional
namestring · min: 4 · max: 20Required
imagestringRequired
vcpuintegerRequired
memoryintegerRequired
disk_sizeintegerRequired
portsany ofOptional
or
nullOptional
encrypted_envstringOptionalDefault: ""
app_id_saltany ofOptional
stringOptional
or
nullOptional
teepod_idintegerRequired
listedbooleanOptionalDefault: false
instance_typeany ofOptional
stringOptional
or
nullOptional
env_keysany ofOptional
string[]Optional
or
nullOptional
Responses
200
Successful Response
application/json
Responseany
post
POST /api/v1/cvms/pubkey/from_cvm_configuration HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 623

{
  "user_id": 1,
  "name": "text",
  "image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "compose_manifest": {
    "bash_script": "text",
    "docker_compose_file": "text",
    "docker_config": {
      "password": "",
      "registry": "text",
      "username": ""
    },
    "features": [
      "text"
    ],
    "kms_enabled": true,
    "manifest_version": 1,
    "name": "text",
    "pre_launch_script": "text",
    "public_logs": true,
    "public_sysinfo": true,
    "runner": "docker-compose",
    "salt": "text",
    "tproxy_enabled": true,
    "version": "1.0.0"
  },
  "ports": [
    {
      "protocol": "text",
      "host_port": 1,
      "vm_port": 1,
      "host_address": "text"
    }
  ],
  "encrypted_env": "",
  "app_id_salt": "text",
  "teepod_id": 1,
  "listed": false,
  "instance_type": "text",
  "env_keys": [
    "text"
  ]
}

No content

Handle Create Cvm With Vm Config

post

Create a new VM from VMConfiguration. It keep use same payload structure as Teepod API, add business layer

Authorizations
Body

The Compose Manifest

user_idany ofOptional
integerOptional
or
nullOptional
namestring · min: 4 · max: 20Required
imagestringRequired
vcpuintegerRequired
memoryintegerRequired
disk_sizeintegerRequired
portsany ofOptional
or
nullOptional
encrypted_envstringOptionalDefault: ""
app_id_saltany ofOptional
stringOptional
or
nullOptional
teepod_idintegerRequired
listedbooleanOptionalDefault: false
instance_typeany ofOptional
stringOptional
or
nullOptional
env_keysany ofOptional
string[]Optional
or
nullOptional
Responses
200
Successful Response
application/json
post
POST /api/v1/cvms/from_cvm_configuration HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 623

{
  "user_id": 1,
  "name": "text",
  "image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "compose_manifest": {
    "bash_script": "text",
    "docker_compose_file": "text",
    "docker_config": {
      "password": "",
      "registry": "text",
      "username": ""
    },
    "features": [
      "text"
    ],
    "kms_enabled": true,
    "manifest_version": 1,
    "name": "text",
    "pre_launch_script": "text",
    "public_logs": true,
    "public_sysinfo": true,
    "runner": "docker-compose",
    "salt": "text",
    "tproxy_enabled": true,
    "version": "1.0.0"
  },
  "ports": [
    {
      "protocol": "text",
      "host_port": 1,
      "vm_port": 1,
      "host_address": "text"
    }
  ],
  "encrypted_env": "",
  "app_id_salt": "text",
  "teepod_id": 1,
  "listed": false,
  "instance_type": "text",
  "env_keys": [
    "text"
  ]
}
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Provision Cvm For Eliza

post
Authorizations
Body
namestringRequired

The name of the tapp.

characterfilestringRequired

The characterfile to use for the a16z/eliza.

env_keysstring[]Required

The environment variables to use for the a16z/eliza.

teepod_idany ofOptional

The Teepod ID to use for the a16z/eliza. If not provided, it will auto select an available one.

integerOptional
or
nullOptional
imageany ofOptional

The image to use for the a16z/eliza. If not provided, it will use the latest image.

stringOptional
or
nullOptional
Responses
200
Successful Response
application/json
Responseany
post
POST /api/v1/cvms/provision/eliza HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 87

{
  "name": "text",
  "characterfile": "text",
  "env_keys": [
    "text"
  ],
  "teepod_id": 1,
  "image": "text"
}

No content

Handle Provision Cvm

post
Authorizations
Body
namestringRequired
imagestringRequired
compose_fileany ofOptional
or
nullOptional
vcpuintegerRequired
memoryintegerRequired
disk_sizeintegerRequired
portsany ofOptional
or
nullOptional
encrypted_envany ofOptional
stringOptional
or
nullOptional
app_idany ofOptional
stringOptional
or
nullOptional
user_configany ofOptional
stringOptional
or
nullOptional
hugepagesbooleanOptionalDefault: false
pin_numabooleanOptionalDefault: false
kms_urlsstring[]OptionalDefault: []
gateway_urlsstring[]OptionalDefault: []
env_keysstring[]Optional
teepod_idintegerRequired
listedbooleanOptionalDefault: true
instance_typeany ofOptional
stringOptional
or
nullOptional
Responses
200
Successful Response
application/json
Responseany
post
POST /api/v1/cvms/provision HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 773

{
  "name": "text",
  "image": "text",
  "compose_file": {
    "allowed_envs": [
      "text"
    ],
    "bash_script": "text",
    "docker_compose_file": "text",
    "kms_enabled": true,
    "local_key_provider_enabled": false,
    "manifest_version": 2,
    "name": "text",
    "no_instance_id": false,
    "pre_launch_script": "text",
    "public_logs": true,
    "public_sysinfo": true,
    "runner": "docker-compose",
    "gateway_enabled": true,
    "features": [
      "text"
    ],
    "salt": "text",
    "tproxy_enabled": true
  },
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "ports": [
    {
      "protocol": "text",
      "host_port": 1,
      "vm_port": 1,
      "host_address": "text"
    }
  ],
  "encrypted_env": "text",
  "app_id": "text",
  "user_config": "text",
  "hugepages": false,
  "pin_numa": false,
  "gpus": [
    {
      "product_id": "text",
      "slot": "text"
    }
  ],
  "kms_urls": [
    "text"
  ],
  "gateway_urls": [
    "text"
  ],
  "env_keys": [
    "text"
  ],
  "teepod_id": 1,
  "listed": true,
  "instance_type": "text"
}

No content

Handle Create Cvm For Gpu

post
Authorizations
Body
namestringRequired

The name of the tapp.

instance_typestringRequired

The instance_type of the tapp.

scheduled_delete_atany ofOptional

The scheduled delete time of the tapp.

string · date-timeOptional
or
nullOptional
Responses
200
Successful Response
application/json
post
POST /api/v1/cvms/gpu HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 87

{
  "name": "text",
  "instance_type": "text",
  "scheduled_delete_at": "2025-07-04T04:40:03.487Z"
}
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle List Cvms

get

List CVMs - admins see all, users see their own

Authorizations
Query parameters
user_idany ofOptional

Filter by the CVM owner ID. Privileged operation.

stringOptional
or
nullOptional
teepod_idany ofOptional

Filter by Node ID.

integerOptional
or
nullOptional
Responses
200
Successful Response
application/json
get
GET /api/v1/cvms HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
[
  {
    "hosted": {
      "id": "text",
      "name": "text",
      "status": "text",
      "uptime": "text",
      "app_url": "text",
      "app_id": "text",
      "instance_id": "text",
      "configuration": {
        "name": "text",
        "image": "text",
        "compose_file": {
          "allowed_envs": [
            "text"
          ],
          "bash_script": "text",
          "docker_compose_file": "text",
          "kms_enabled": true,
          "local_key_provider_enabled": false,
          "manifest_version": 2,
          "name": "text",
          "no_instance_id": false,
          "pre_launch_script": "text",
          "public_logs": true,
          "public_sysinfo": true,
          "runner": "docker-compose",
          "gateway_enabled": true,
          "features": [
            "text"
          ],
          "salt": "text",
          "tproxy_enabled": true
        },
        "vcpu": 1,
        "memory": 1,
        "disk_size": 1,
        "ports": [
          {
            "protocol": "text",
            "host_port": 1,
            "vm_port": 1,
            "host_address": "text"
          }
        ],
        "encrypted_env": "text",
        "app_id": "text",
        "user_config": "text",
        "hugepages": false,
        "pin_numa": false,
        "gpus": [
          {
            "product_id": "text",
            "slot": "text"
          }
        ],
        "kms_urls": [
          "text"
        ],
        "gateway_urls": [
          "text"
        ]
      },
      "exited_at": "text",
      "boot_progress": "text",
      "boot_error": "text",
      "shutdown_progress": "text",
      "image_version": "text"
    },
    "name": "text",
    "managed_user": {
      "id": 1,
      "username": "text"
    },
    "node": {
      "id": 1,
      "name": "text",
      "region_identifier": "text"
    },
    "listed": false,
    "status": "text",
    "in_progress": false,
    "dapp_dashboard_url": "text",
    "syslog_endpoint": "text",
    "allow_upgrade": false,
    "project_id": "usr_K8fJ3pQm",
    "project_type": "text",
    "billing_period": "text",
    "kms_info": {
      "id": "usr_K8fJ3pQm",
      "url": "text",
      "version": "text",
      "chain_id": 1,
      "kms_contract_address": "text",
      "gateway_app_id": "text"
    },
    "contract_address": "text",
    "deployer_address": "text",
    "vcpu": 1,
    "memory": 1,
    "disk_size": 1
  }
]

Handle Create Cvm From Povision

post
Authorizations
Body
app_idstringRequired

The calculated app ID from compose file.

compose_hashstringRequired

The compose hash of the app compose file.

encrypted_envstringRequired

The encrypted environment variables.

kms_idany ofOptional

The KMS ID.

stringOptional
or
nullOptional
contract_addressany ofOptional

The contract address.

stringOptional
or
nullOptional
deployer_addressany ofOptional

The deployer address.

stringOptional
or
nullOptional
env_keysany ofOptional

The environment variables to use for the app.

string[]Optional
or
nullOptional
Responses
200
Successful Response
application/json
post
POST /api/v1/cvms HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 150

{
  "app_id": "text",
  "compose_hash": "text",
  "encrypted_env": "text",
  "kms_id": "text",
  "contract_address": "text",
  "deployer_address": "text",
  "env_keys": [
    "text"
  ]
}
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Get Cvm Compose File

get
Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
Responseany
get
GET /api/v1/cvms/{identifier}/compose_file HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*

No content

Submit Cvm Compose File Update

post
Authorizations
Path parameters
identifierstringRequired
Body

The updated app compose file.

compose_hashstringRequired
encrypted_envany ofOptional
stringOptional
or
nullOptional
env_keysany ofOptional
string[]Optional
or
nullOptional
Responses
202
Successful Response
application/json
Responseany
post
POST /api/v1/cvms/{identifier}/compose_file HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 442

{
  "compose_file": {
    "allowed_envs": [
      "text"
    ],
    "bash_script": "text",
    "docker_compose_file": "text",
    "kms_enabled": true,
    "local_key_provider_enabled": false,
    "manifest_version": 2,
    "name": "text",
    "no_instance_id": false,
    "pre_launch_script": "text",
    "public_logs": true,
    "public_sysinfo": true,
    "runner": "docker-compose",
    "gateway_enabled": true,
    "features": [
      "text"
    ],
    "salt": "text",
    "tproxy_enabled": true
  },
  "compose_hash": "text",
  "encrypted_env": "text",
  "env_keys": [
    "text"
  ]
}

No content

Trigger Cvm Compose File Update

patch
Authorizations
Path parameters
identifierstringRequired
Body
compose_hashstringRequired

The compose hash of the updated app compose file.

encrypted_envany ofOptional

The encrypted environment of the updated app compose file.

stringOptional
or
nullOptional
env_keysany ofOptional
string[]Optional
or
nullOptional
Responses
202
Successful Response
application/json
Responseany
patch
PATCH /api/v1/cvms/{identifier}/compose_file HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 66

{
  "compose_hash": "text",
  "encrypted_env": "text",
  "env_keys": [
    "text"
  ]
}

No content

Provision For Cvm Compose File Update

post
Authorizations
Path parameters
identifierstringRequired
Body

The updated app compose file.

allowed_envsstring[]Optional
bash_scriptany ofOptional
stringOptional
or
nullOptional
docker_compose_fileany ofOptional
stringOptional
or
nullOptional
kms_enabledbooleanOptionalDefault: true
local_key_provider_enabledbooleanOptionalDefault: false
manifest_versionintegerOptionalDefault: 2
namestringRequired
no_instance_idbooleanOptionalDefault: false
pre_launch_scriptany ofOptional
stringOptional
or
nullOptional
public_logsbooleanOptionalDefault: true
public_sysinfobooleanOptionalDefault: true
runnerstringOptionalDefault: docker-compose
gateway_enabledbooleanOptionalDefault: true
featuresstring[]OptionalDefault: ["kms","tproxy-net"]
saltany ofOptional
stringOptional
or
nullOptional
tproxy_enabledbooleanOptionalDefault: true
Responses
200
Successful Response
application/json
Responseany
post
POST /api/v1/cvms/{identifier}/compose_file/provision HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 360

{
  "allowed_envs": [
    "text"
  ],
  "bash_script": "text",
  "docker_compose_file": "text",
  "kms_enabled": true,
  "local_key_provider_enabled": false,
  "manifest_version": 2,
  "name": "text",
  "no_instance_id": false,
  "pre_launch_script": "text",
  "public_logs": true,
  "public_sysinfo": true,
  "runner": "docker-compose",
  "gateway_enabled": true,
  "features": [
    "text"
  ],
  "salt": "text",
  "tproxy_enabled": true
}

No content

Handle Get Cvm Compose

get
Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
get
GET /api/v1/cvms/{identifier}/compose HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "compose_file": {
    "bash_script": "text",
    "docker_compose_file": "text",
    "docker_config": {
      "password": "",
      "registry": "text",
      "username": ""
    },
    "features": [
      "text"
    ],
    "kms_enabled": true,
    "manifest_version": 1,
    "name": "text",
    "pre_launch_script": "text",
    "public_logs": true,
    "public_sysinfo": true,
    "runner": "docker-compose",
    "salt": "text",
    "tproxy_enabled": true,
    "version": "1.0.0"
  },
  "env_pubkey": "text",
  "salt": "text"
}

Handle Update Cvm Compose

put
Authorizations
Path parameters
identifierstringRequired
Body
idany ofOptional
stringOptional
or
nullOptional
compose_manifestany ofRequired
encrypted_envstringOptionalDefault: ""
user_configany ofOptional
stringOptional
or
nullOptional
update_portsbooleanOptionalDefault: false
portsany ofOptional
or
nullOptional
allow_restartany ofOptional
integerOptional
or
nullOptional
env_keysany ofOptional
string[]Optional
or
nullOptional
Responses
200
Successful Response
application/json
Responseany
put
PUT /api/v1/cvms/{identifier}/compose HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 547

{
  "id": "text",
  "compose_manifest": {
    "bash_script": "text",
    "docker_compose_file": "text",
    "docker_config": {
      "password": "",
      "registry": "text",
      "username": ""
    },
    "features": [
      "text"
    ],
    "kms_enabled": true,
    "manifest_version": 1,
    "name": "text",
    "pre_launch_script": "text",
    "public_logs": true,
    "public_sysinfo": true,
    "runner": "docker-compose",
    "salt": "text",
    "tproxy_enabled": true,
    "version": "1.0.0"
  },
  "encrypted_env": "",
  "user_config": "text",
  "update_ports": false,
  "ports": [
    {
      "protocol": "text",
      "host_port": 1,
      "vm_port": 1,
      "host_address": "text"
    }
  ],
  "allow_restart": 1,
  "env_keys": [
    "text"
  ]
}

No content

Handle Patch Cvm Compose

patch

Partially update CVM compose file - only updates provided fields

Authorizations
Path parameters
identifierstringRequired
Body

Partial compose file update

compose_manifestany ofOptional
or
nullOptional
encrypted_envany ofOptional
stringOptional
or
nullOptional
env_keysany ofOptional
string[]Optional
or
nullOptional
Responses
202
Successful Response
application/json
Responseany
patch
PATCH /api/v1/cvms/{identifier}/compose HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 121

{
  "compose_manifest": {
    "docker_compose_file": "text",
    "pre_launch_script": "text"
  },
  "encrypted_env": "text",
  "env_keys": [
    "text"
  ]
}

No content

Handle Replicate Cvm

post

Replicate a CVM to a target teepod

Authorizations
Path parameters
identifierstringRequired
Body

Replication parameters

teepod_idany ofOptional
integerOptional
or
nullOptional
node_idany ofOptional
integerOptional
or
nullOptional
encrypted_envany ofOptional
stringOptional
or
nullOptional
Responses
200
Successful Response
application/json
post
POST /api/v1/cvms/{identifier}/replicas HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 50

{
  "teepod_id": 1,
  "node_id": 1,
  "encrypted_env": "text"
}
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle List Cvms Paginated

get

List CVMs with pagination - admins see all, users see their own

Authorizations
Query parameters
user_idany ofOptional

Filter by the CVM owner ID. Privileged operation.

stringOptional
or
nullOptional
teepod_idany ofOptional

Filter by Node ID.

integerOptional
or
nullOptional
pageinteger · min: 1Optional

Page number, starting from 1

Default: 1
page_sizeinteger · min: 1 · max: 100Optional

Number of items per page

Default: 30
Responses
200
Successful Response
application/json
get
GET /api/v1/cvms/paginated HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "items": [
    {
      "hosted": {
        "id": "text",
        "name": "text",
        "status": "text",
        "uptime": "text",
        "app_url": "text",
        "app_id": "text",
        "instance_id": "text",
        "configuration": {
          "name": "text",
          "image": "text",
          "compose_file": {
            "allowed_envs": [
              "text"
            ],
            "bash_script": "text",
            "docker_compose_file": "text",
            "kms_enabled": true,
            "local_key_provider_enabled": false,
            "manifest_version": 2,
            "name": "text",
            "no_instance_id": false,
            "pre_launch_script": "text",
            "public_logs": true,
            "public_sysinfo": true,
            "runner": "docker-compose",
            "gateway_enabled": true,
            "features": [
              "text"
            ],
            "salt": "text",
            "tproxy_enabled": true
          },
          "vcpu": 1,
          "memory": 1,
          "disk_size": 1,
          "ports": [
            {
              "protocol": "text",
              "host_port": 1,
              "vm_port": 1,
              "host_address": "text"
            }
          ],
          "encrypted_env": "text",
          "app_id": "text",
          "user_config": "text",
          "hugepages": false,
          "pin_numa": false,
          "gpus": [
            {
              "product_id": "text",
              "slot": "text"
            }
          ],
          "kms_urls": [
            "text"
          ],
          "gateway_urls": [
            "text"
          ]
        },
        "exited_at": "text",
        "boot_progress": "text",
        "boot_error": "text",
        "shutdown_progress": "text",
        "image_version": "text"
      },
      "name": "text",
      "managed_user": {
        "id": 1,
        "username": "text"
      },
      "node": {
        "id": 1,
        "name": "text",
        "region_identifier": "text"
      },
      "listed": false,
      "status": "text",
      "in_progress": false,
      "dapp_dashboard_url": "text",
      "syslog_endpoint": "text",
      "allow_upgrade": false,
      "project_id": "usr_K8fJ3pQm",
      "project_type": "text",
      "billing_period": "text",
      "kms_info": {
        "id": "usr_K8fJ3pQm",
        "url": "text",
        "version": "text",
        "chain_id": 1,
        "kms_contract_address": "text",
        "gateway_app_id": "text"
      },
      "contract_address": "text",
      "deployer_address": "text",
      "vcpu": 1,
      "memory": 1,
      "disk_size": 1
    }
  ],
  "total": 1,
  "page": 1,
  "page_size": 1,
  "pages": 1
}

Handle Get Cvm

get

Get CVM details

Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
Responseany
get
GET /api/v1/cvms/{identifier} HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*

No content

Handle Remove Cvm

delete

Remove a CVM

Authorizations
Path parameters
identifierstringRequired
Responses
204
Successful Response
delete
DELETE /api/v1/cvms/{identifier} HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*

No content

Handle Sync Cvm Status

post
Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
post
POST /api/v1/cvms/{identifier}/sync HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Update Cvm Visibility

patch
Authorizations
Path parameters
identifierstringRequired
Body
public_sysinfobooleanRequired
public_logsbooleanRequired
Responses
200
Successful Response
application/json
patch
PATCH /api/v1/cvms/{identifier}/visibility HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 42

{
  "public_sysinfo": true,
  "public_logs": true
}
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Get Cvm Stats

get
Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
get
GET /api/v1/cvms/{identifier}/stats HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "is_online": true,
  "is_public": true,
  "error": "text",
  "sysinfo": {
    "os_name": "text",
    "os_version": "text",
    "kernel_version": "text",
    "cpu_model": "text",
    "num_cpus": 1,
    "total_memory": 1,
    "available_memory": 1,
    "used_memory": 1,
    "free_memory": 1,
    "total_swap": 1,
    "used_swap": 1,
    "free_swap": 1,
    "uptime": 1,
    "loadavg_one": 1,
    "loadavg_five": 1,
    "loadavg_fifteen": 1,
    "disks": [
      {
        "name": "text",
        "mount_point": "text",
        "total_size": 1,
        "free_size": 1
      }
    ]
  },
  "status": "text",
  "in_progress": false,
  "boot_progress": "text",
  "boot_error": "text"
}

Handle Get Cvm Composition

get
Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
get
GET /api/v1/cvms/{identifier}/composition HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "is_online": true,
  "is_public": true,
  "error": "text",
  "docker_compose_file": "text",
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "features": [
    "text"
  ],
  "containers": [
    {
      "id": "text",
      "names": [
        "text"
      ],
      "image": "text",
      "image_id": "text",
      "command": "text",
      "created": 1,
      "state": "text",
      "status": "text",
      "log_endpoint": "text"
    }
  ]
}

Handle Get Cvm Docker Compose

get
Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
Responsestring
get
GET /api/v1/cvms/{identifier}/docker-compose.yml HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
text

Handle Get Cvm Attestation

get
Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
get
GET /api/v1/cvms/{identifier}/attestation HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "is_online": true,
  "is_public": true,
  "error": "text",
  "name": "text",
  "app_certificates": [
    {
      "subject": {
        "common_name": "text",
        "organization": "text",
        "country": "text",
        "state": "text",
        "locality": "text"
      },
      "issuer": {
        "common_name": "text",
        "organization": "text",
        "country": "text"
      },
      "serial_number": "text",
      "not_before": "2025-07-04T04:40:03.487Z",
      "not_after": "2025-07-04T04:40:03.487Z",
      "version": "text",
      "fingerprint": "text",
      "signature_algorithm": "text",
      "sans": [
        "text"
      ],
      "is_ca": false,
      "position_in_chain": 1,
      "quote": "text"
    }
  ],
  "tcb_info": {
    "mrtd": "text",
    "rootfs_hash": "text",
    "rtmr0": "text",
    "rtmr1": "text",
    "rtmr2": "text",
    "rtmr3": "text",
    "event_log": [
      {
        "imr": 1,
        "event_type": 1,
        "digest": "text",
        "event": "text",
        "event_payload": "text"
      }
    ],
    "app_compose": "text"
  },
  "compose_file": "text"
}

Handle Get Cvm Network Info

get
Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
get
GET /api/v1/cvms/{identifier}/network HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "is_online": true,
  "is_public": true,
  "error": "text",
  "internal_ip": "text",
  "latest_handshake": "2025-07-04T04:40:03.487Z",
  "public_urls": [
    {
      "app": "text",
      "instance": "text"
    }
  ]
}

Handle Start Cvm

post

Start a CVM

Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
post
POST /api/v1/cvms/{identifier}/start HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Shutdown Cvm

post

Shutdown a CVM

Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
post
POST /api/v1/cvms/{identifier}/shutdown HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Stop Cvm

post

Stop a CVM

Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
post
POST /api/v1/cvms/{identifier}/stop HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Restart Cvm

post

Restart a CVM

Authorizations
Path parameters
identifierstringRequired
Responses
200
Successful Response
application/json
post
POST /api/v1/cvms/{identifier}/restart HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Accept: */*
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Resize Cvm

patch

Resize a CVM

Authorizations
Path parameters
identifierstringRequired
Body
vcpuany ofOptional
integerOptional
or
nullOptional
memoryany ofOptional
integerOptional
or
nullOptional
disk_sizeany ofOptional
integerOptional
or
nullOptional
allow_restartany ofOptional
integerOptional
or
nullOptional
instance_typeany ofOptional
string · enumOptional

Instance types for CVM billing.

Possible values:
or
nullOptional
Responses
202
Successful Response
application/json
Responseany
patch
PATCH /api/v1/cvms/{identifier}/resources HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 81

{
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "allow_restart": 1,
  "instance_type": "tdx.small"
}

No content

Handle Update Cvm Name

patch

Update CVM name

Authorizations
Path parameters
identifierstringRequired
Body
namestringRequired
Responses
200
Successful Response
application/json
patch
PATCH /api/v1/cvms/{identifier}/name HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "name": "text"
}
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Update Cvm Listed

patch
Authorizations
Path parameters
identifierstringRequired
Body
listedbooleanRequired
Responses
200
Successful Response
application/json
patch
PATCH /api/v1/cvms/{identifier}/listed HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 15

{
  "listed": true
}
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Update Cvm Scheduled Delete

patch

Update CVM scheduled delete time

Authorizations
Path parameters
identifierstringRequired
Body
scheduled_delete_atany ofOptional
string · date-timeOptional
or
nullOptional
Responses
200
Successful Response
application/json
patch
PATCH /api/v1/cvms/{identifier}/scheduled-delete HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 50

{
  "scheduled_delete_at": "2025-07-04T04:40:03.487Z"
}
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Handle Assign Cvm Owner

put
Authorizations
Path parameters
identifierstringRequired
Body
user_idstringRequired
Responses
200
Successful Response
application/json
put
PUT /api/v1/cvms/{identifier}/ownership HTTP/1.1
Host: 
Authorization: Bearer YOUR_OAUTH2_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 18

{
  "user_id": "text"
}
{
  "id": 1,
  "name": "text",
  "status": "text",
  "teepod_id": 1,
  "teepod": {
    "id": 1,
    "name": "text"
  },
  "user_id": 1,
  "app_id": "text",
  "vm_uuid": "text",
  "instance_id": "text",
  "app_url": "text",
  "base_image": "text",
  "vcpu": 1,
  "memory": 1,
  "disk_size": 1,
  "manifest_version": 1,
  "version": "text",
  "runner": "text",
  "docker_compose_file": "text",
  "features": [
    "text"
  ],
  "created_at": "2025-07-04T04:40:03.487Z",
  "encrypted_env_pubkey": "text"
}

Was this helpful?