Denvr AI Services Docs
  • Welcome to Denvr AI Services Docs!
  • OVERVIEW
    • Getting started
      • Launch a virtual machine
      • Secure Shell (SSH): Best Practices
      • API Usage samples
      • Registration
    • Data centers
    • Shared responsibility model
    • Technical support
    • What's new!
  • PLATFORM
    • Dashboard
    • Applications
    • Virtual machines
    • Bare metal
    • Storage
    • Networking
    • User management
    • Billing
  • API Reference
    • Authentication
    • Clusters
    • Applications
    • Virtual machines
    • VPCs
    • Bare metal
  • Additional Information
    • FAQs
      • Desktop vs data center GPUs
      • Differences of bare metal and virtual machines
      • GPU monitoring
      • Using Github with SSH keys
      • Data persistence and recovery
      • Do you support Kubernetes?
      • Installing GPU drivers
      • What is the network bandwidth?
      • What ports are publicly accessible?
      • What is persistent local storage?
      • Adding DAS to /etc/fstab
      • Provisioning States
    • Policies
      • Terms of Service
      • Privacy Policy
      • Maintenance policy
Powered by GitBook
On this page
  1. API Reference

Applications

Explore this section for comprehensive information on endpoints related to the deployment, management, and operation of applications within our cloud software API environment.

PreviousClustersNextVirtual machines

Last updated 4 days ago

Get a list of applications

get
Responses
200
Success
400
Bad Request
401
Unauthorized
403
Forbidden
500
Server Error
get
GET /api/v1/servers/applications/GetApplications HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "id": "text",
      "cluster": "text",
      "status": "text",
      "tenant": "text",
      "createdBy": "text",
      "privateIp": "text",
      "publicIp": "text",
      "resourcePool": "text",
      "dns": "text",
      "sshUsername": "text",
      "applicationCatalogItemName": "text",
      "applicationCatalogItemVersionName": "text",
      "hardwarePackageName": "text",
      "persistedDirectAttachedStorage": true,
      "personalSharedStorage": true,
      "tenantSharedStorage": true
    }
  ]
}

Get detailed information about a specific application

get
Query parameters
IdstringRequired

The application name

Example: my-jupyter-application
ClusterstringRequired

The cluster you're operating on

Example: Msc1
Responses
200
Success
400
Bad Request
401
Unauthorized
403
Forbidden
404
Not Found
500
Server Error
get
GET /api/v1/servers/applications/GetApplicationDetails?Id=my-jupyter-application&Cluster=Msc1 HTTP/1.1
Host: 
Accept: */*
{
  "instanceDetails": {
    "id": "text",
    "cluster": "text",
    "status": "text",
    "statusReason": "text",
    "statusMessage": "text",
    "privateIp": "text",
    "publicIp": "text",
    "imageCmdOverride": "text",
    "environmentVariables": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    },
    "readinessWatcherPort": 1,
    "proxyPort": 1,
    "createdBy": "text",
    "tenant": "text",
    "resourcePool": "text",
    "creationTime": "2025-05-14T23:57:53.134Z",
    "lastUpdated": "2025-05-14T23:57:53.134Z",
    "dns": "text",
    "persistedDirectAttachedStorage": true,
    "personalSharedStorage": true,
    "tenantSharedStorage": true,
    "runAsRoot": true,
    "containerUid": 1,
    "containerGid": 1
  },
  "applicationCatalogItem": {
    "name": "text",
    "applicationSourceDetailsUrl": "text",
    "versions": [
      {
        "name": "text",
        "imageUrl": "text",
        "imageLastPushDate": "2025-05-14T23:57:53.134Z",
        "platform": "text",
        "launchType": "text",
        "releaseNotesUrl": "text"
      }
    ]
  },
  "hardwarePackage": {
    "name": "text",
    "description": "text",
    "gpuCount": 1,
    "gpuType": "text",
    "gpuBrand": "text",
    "gpuName": "text",
    "vcpusCount": 1,
    "memoryGb": 1,
    "directAttachedStorageGb": 1,
    "pricePerHour": 1,
    "clusters": [
      "text"
    ]
  }
}

Get a list of application configurations

get
Responses
200
Success
400
Bad Request
401
Unauthorized
403
Forbidden
404
Not Found
500
Server Error
get
GET /api/v1/servers/applications/GetConfigurations HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "name": "text",
      "description": "text",
      "gpuCount": 1,
      "gpuType": "text",
      "gpuBrand": "text",
      "gpuName": "text",
      "vcpusCount": 1,
      "memoryGb": 1,
      "directAttachedStorageGb": 1,
      "pricePerHour": 1,
      "clusters": [
        "text"
      ]
    }
  ]
}

Get detailed information on available configurations for applications

get
Query parameters
clusterstringRequiredExample: Msc1
resourcePoolstringRequiredExample: on-demand
Responses
200
Success
400
Bad Request
401
Unauthorized
403
Forbidden
404
Not Found
500
Server Error
get
GET /api/v1/servers/applications/GetAvailability?cluster=text&resourcePool=text HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "configuration": "text",
      "cluster": "text",
      "rpool": "text",
      "price": 1,
      "available": true,
      "count": 1,
      "maxCount": 1
    }
  ]
}

Get a list of application catalog items

get
Responses
200
Success
400
Bad Request
401
Unauthorized
403
Forbidden
500
Server Error
get
GET /api/v1/servers/applications/GetApplicationCatalogItems HTTP/1.1
Host: 
Accept: */*
{
  "items": [
    {
      "name": "text",
      "applicationSourceDetailsUrl": "text",
      "versions": [
        {
          "name": "text",
          "imageUrl": "text",
          "imageLastPushDate": "2025-05-14T23:57:53.134Z",
          "platform": "text",
          "launchType": "text",
          "releaseNotesUrl": "text"
        }
      ]
    }
  ]
}

Permanently delete a specified application, effectively wiping all its data and freeing up resources for other uses

delete
Query parameters
IdstringRequired

The application name

Example: my-jupyter-application
ClusterstringRequired

The cluster you're operating on

Example: Msc1
Responses
202
Accepted
400
Bad Request
401
Unauthorized
403
Forbidden
404
Not Found
500
Server Error
delete
DELETE /api/v1/servers/applications/DestroyApplication?Id=my-jupyter-application&Cluster=Msc1 HTTP/1.1
Host: 
Accept: */*
{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}
  • GETGet a list of applications
  • GETGet detailed information about a specific application
  • GETGet a list of application configurations
  • GETGet detailed information on available configurations for applications
  • GETGet a list of application catalog items
  • POSTCreate a new application using a pre-defined configuration and application catalog item
  • POSTCreate a new custom application using a pre-defined configuration and user-defined container image.
  • POSTStart an application that has been previously set up and provisioned, but is currently OFFLINE
  • POSTStop an application that has been previously set up and provisioned, but is currently ONLINE
  • DELETEPermanently delete a specified application, effectively wiping all its data and freeing up resources for other uses

Create a new application using a pre-defined configuration and application catalog item

post
Body
namestring · min: 1Required

The application name

Example: my-jupyter-application
clusterstring · min: 1Required

The cluster you're operating on

Example: Msc1
hardwarePackageNamestring · min: 1Required

The name or unique identifier of the application hardware configuration to use for the application.

Example: g-nvidia-1xa100-40gb-pcie-14vcpu-112gb
applicationCatalogItemNamestring · min: 1Required

The name of the application catalog item.

Example: jupyter-notebook
applicationCatalogItemVersionstring · min: 1Required

The version name of the application catalog item.

Example: python-3.11.9
resourcePoolstring | nullableOptional

The resource pool to use for the application

Example: on-demand
sshKeysstring[] | nullableOptional

The SSH keys for accessing the application

persistDirectAttachedStoragebooleanOptional

Indicates whether to persist direct attached storage (if resource pool is reserved)

Example: false
personalSharedStoragebooleanOptional

Enable personal shared storage for the application

Example: true
tenantSharedStoragebooleanOptional

Enable tenant shared storage for the application

Example: true
jupyterTokenstring | nullableOptional

An authentication token for accessing Jupyter Notebook enabled applications

Example: abc123
Responses
202
Accepted
400
Bad Request
401
Unauthorized
403
Forbidden
404
Not Found
409
Conflict
422
Client Error
500
Server Error
post
POST /api/v1/servers/applications/CreateCatalogApplication HTTP/1.1
Host: 
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 372

{
  "name": "my-jupyter-application",
  "cluster": "Msc1",
  "hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
  "applicationCatalogItemName": "jupyter-notebook",
  "applicationCatalogItemVersion": "python-3.11.9",
  "resourcePool": "on-demand",
  "sshKeys": [
    "text"
  ],
  "persistDirectAttachedStorage": false,
  "personalSharedStorage": true,
  "tenantSharedStorage": true,
  "jupyterToken": "abc123"
}
{
  "id": "text",
  "cluster": "text",
  "status": "text",
  "tenant": "text",
  "createdBy": "text",
  "privateIp": "text",
  "publicIp": "text",
  "resourcePool": "text",
  "dns": "text",
  "sshUsername": "text",
  "applicationCatalogItemName": "text",
  "applicationCatalogItemVersionName": "text",
  "hardwarePackageName": "text",
  "persistedDirectAttachedStorage": true,
  "personalSharedStorage": true,
  "tenantSharedStorage": true
}

Create a new custom application using a pre-defined configuration and user-defined container image.

post
Body
namestring · min: 1Required

The application name

Example: my-custom-application
clusterstring · min: 1Required

The cluster you're operating on

Example: Msc1
hardwarePackageNamestring · min: 1Required

The name or unique identifier of the application hardware configuration to use for the application.

Example: g-nvidia-1xa100-40gb-pcie-14vcpu-112gb
imageUrlstring · min: 1Required

Image URL for the custom application.

Example: docker.io/{namespace}/{repository}:{tag}
imageCmdOverridestring[] | nullableOptional

Optional Image CMD override allows users to specify a custom command to run in the container. Must be a JSON array (e.g., ["python", "train.py"])

Example: ["python","train.py"]
resourcePoolstring | nullableOptional

The resource pool to use for the application

Example: on-demand
readinessWatcherPortinteger · int32 | nullableOptional

The port used for monitoring application readiness and status. Common examples:

  • 443 (JupyterLab)
  • 22 (SSH)
Example: 443
proxyPortinteger · int32 | nullableOptional

Port where your service expects HTTPS traffic.

Example: 443
persistDirectAttachedStoragebooleanOptional

Indicates whether to persist direct attached storage (if resource pool is reserved)

Example: false
personalSharedStoragebooleanOptional

Enable personal shared storage for the application

Example: true
tenantSharedStoragebooleanOptional

Enable tenant shared storage for the application

Example: true
Responses
202
Accepted
400
Bad Request
401
Unauthorized
403
Forbidden
404
Not Found
409
Conflict
422
Client Error
500
Server Error
post
POST /api/v1/servers/applications/CreateCustomApplication HTTP/1.1
Host: 
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 643

{
  "name": "my-custom-application",
  "cluster": "Msc1",
  "hardwarePackageName": "g-nvidia-1xa100-40gb-pcie-14vcpu-112gb",
  "imageUrl": "docker.io/{namespace}/{repository}:{tag}",
  "imageCmdOverride": [
    "python",
    "train.py"
  ],
  "environmentVariables": {
    "ANY_ADDITIONAL_PROPERTY": "text"
  },
  "imageRepository": {
    "hostname": "https://index.docker.io/v1/",
    "username": "your-docker-username",
    "password": "dckr_pat__xxx1234567890abcdef"
  },
  "resourcePool": "on-demand",
  "readinessWatcherPort": 443,
  "proxyPort": 443,
  "persistDirectAttachedStorage": false,
  "personalSharedStorage": true,
  "tenantSharedStorage": true,
  "securityContext": {
    "runAsRoot": true,
    "containerUid": null,
    "containerGid": null
  }
}
{
  "id": "text",
  "cluster": "text",
  "status": "text",
  "tenant": "text",
  "createdBy": "text",
  "privateIp": "text",
  "publicIp": "text",
  "resourcePool": "text",
  "dns": "text",
  "sshUsername": "text",
  "applicationCatalogItemName": "text",
  "applicationCatalogItemVersionName": "text",
  "hardwarePackageName": "text",
  "persistedDirectAttachedStorage": true,
  "personalSharedStorage": true,
  "tenantSharedStorage": true
}

Start an application that has been previously set up and provisioned, but is currently OFFLINE

post
Body
idstring · min: 1Required

The application name

Example: my-jupyter-application
clusterstring · min: 1Required

The cluster you're operating on

Example: Msc1
Responses
202
Accepted
400
Bad Request
401
Unauthorized
403
Forbidden
409
Conflict
500
Server Error
post
POST /api/v1/servers/applications/StartApplication HTTP/1.1
Host: 
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 48

{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}
{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}

Stop an application that has been previously set up and provisioned, but is currently ONLINE

post
Body
idstring · min: 1Required

The application name

Example: my-jupyter-application
clusterstring · min: 1Required

The cluster you're operating on

Example: Msc1
Responses
202
Accepted
400
Bad Request
401
Unauthorized
403
Forbidden
404
Not Found
409
Conflict
500
Server Error
post
POST /api/v1/servers/applications/StopApplication HTTP/1.1
Host: 
Content-Type: application/json-patch+json
Accept: */*
Content-Length: 48

{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}
{
  "id": "my-jupyter-application",
  "cluster": "Msc1"
}