Download OpenAPI specification:Download
API documentation for our direct on-demand offering
Base URL: https://vm.massedcompute.com/api/v1
Example — GPU inventory (copy this whole URL): https://vm.massedcompute.com/api/v1/gpu-inventory
Do not use api.massedcompute.com. Customer API traffic goes to vm.massedcompute.com.
If you are a marketplace looking to leverage our GPU inventory please contact us at techadmin@massedcompute.com
Authentication of every endpoint provided requres a API token. We leverage Bearer token authentication on our endpoints.
| Header | Value |
|---|---|
| Authorization | Bearer {{api_token}} |
To provision an API key, please see our API Settings documentation.
An comprehensive list of all GPU types, configurations, and available inventory.
{- "gpu_inventory": {
- "property1": {
- "instance_type": {
- "name": "string",
- "description": "string",
- "price_cents_per_hour": 0,
- "specs": {
- "vcpu_count": 0,
- "memory_gib": 0,
- "storage_gb": 0
}
}, - "regions_with_capacity_available": [
- {
- "name": "string",
- "description": "string"
}
], - "capacity_available": 0
}, - "property2": {
- "instance_type": {
- "name": "string",
- "description": "string",
- "price_cents_per_hour": 0,
- "specs": {
- "vcpu_count": 0,
- "memory_gib": 0,
- "storage_gb": 0
}
}, - "regions_with_capacity_available": [
- {
- "name": "string",
- "description": "string"
}
], - "capacity_available": 0
}
}
}An instance is a virtual machine that is currently running.
{- "runningInstances": [
- {
- "uuid": "8b52a46b-a892-4fde-925c-6d13226908f7",
- "name": "Halloween Test",
- "ip": "1.1.1.1",
- "username": "Ubuntu",
- "password": 123456,
- "status": "rented",
- "os_booted": 1,
- "command_startup": "",
- "created": "2024-08-07T16:41:43.000Z",
- "active": 1,
- "image": {
- "id": 7,
- "name": "Art",
- "description": "AI-powered tools specifically designed for artists and creatives, providing you with the ability to easily incorporate AI-generated content into your work. By harnessing the power of these advanced technologies, you can take your art to new heights and explore uncharted territories in the creative world. Leverage the full potential of AI and transform your artistic process today."
}, - "product": {
- "name": "gpu_1x_l40",
- "description": "1x L40",
- "gpu_count": 1,
- "vcpu": 26,
- "ram": 128,
- "storage": 625,
- "price_hr": 0.99,
- "final_price_hr": 0
}
}
]
}An instance is a virtual machine that is currently running.
{- "runningInstance": {
- "uuid": "8b52a46b-a892-4fde-925c-6d13226908f7",
- "name": "Halloween Test",
- "ip": "1.1.1.1",
- "username": "Ubuntu",
- "password": 123456,
- "status": "rented",
- "os_booted": 1,
- "command_startup": "",
- "created": "2024-08-07T16:41:43.000Z",
- "active": 1,
- "image": {
- "id": 7,
- "name": "Art",
- "description": "AI-powered tools specifically designed for artists and creatives, providing you with the ability to easily incorporate AI-generated content into your work. By harnessing the power of these advanced technologies, you can take your art to new heights and explore uncharted territories in the creative world. Leverage the full potential of AI and transform your artistic process today."
}, - "product": {
- "name": "gpu_1x_l40",
- "description": "1x L40",
- "gpu_count": 1,
- "vcpu": 26,
- "ram": 128,
- "storage": 625,
- "price_hr": "0.990000",
- "final_price_hr": "0.000000"
}
}
}| imageId required | integer The ID of the image to deploy |
| productName required | string The product name of the GPU instance you want to deploy. Example = 'gpu_1x_l40' |
| regionName required | string Set value equal to 'any' |
| instanceName | string The name of the instance you want to deploy |
| coupon | string The coupon code you want to apply to the instance |
| command | string The command you want to run on startup |
| sshKeys | Array of strings The SSH key you want to use to connect to the instance |
| volumeIds | Array of strings <= 8 items Beta. Optional. Ids of storage to attach (Persistent Storage, powered by Backblaze), from |
{- "imageId": 0,
- "productName": "string",
- "regionName": "string",
- "instanceName": "string",
- "coupon": "string",
- "command": "string",
- "sshKeys": [
- "string"
], - "volumeIds": [
- "string"
]
}{- "response": "8b52a46b-uuid-4fde-xxxx-6d13226908f7",
- "warning": "string"
}| instanceUuids required | Array of strings The ID or IDs of instances to restart |
{- "instanceUuids": [
- "string"
]
}{- "response": [
- {
- "id": "2c56cd01-5f0b-4bc2-bb72-3c8e486505e2",
- "name": "test api deploy1",
- "ip": "1.1.1.1",
- "status": "booting",
- "ssh_key_names": [
- "string"
], - "file_system_names": [
- "string"
], - "region": {
- "name": "us-central-3",
- "description": "Des Moines, IA"
}, - "instance_type": {
- "name": "gpu_1x_a6000",
- "description": "1x RTX A6000",
- "price_cents_per_hour": 0,
- "specs": {
- "vcpus": 6,
- "memory_gib": 48,
- "storage_gb": 256
}
}, - "jupyter_token": "string",
- "jupyter_url": "string"
}
]
}Termination completely removes the instance from the system and destroys all data.
| instanceUuids required | Array of strings The ID or IDs of instances to restart |
{- "instanceUuids": [
- "string"
]
}{- "response": {
- "data": {
- "terminated_instances": [
- {
- "id": "2c56cd01-5f0b-4bc2-bb72-3c8e486505e2",
- "name": "test api deploy1",
- "ip": "1.1.1.1",
- "status": "terminated",
- "ssh_key_names": [
- "string"
], - "file_system_names": [
- "string"
], - "region": {
- "name": "us-central-3",
- "description": "Des Moines, IA"
}, - "instance_type": {
- "name": "gpu_1x_a6000",
- "description": "1x RTX A6000"
}, - "jupyter_token": "",
- "jupyter_url": ""
}
]
}
}
}A coupon is a discount code that can be applied to an instance when deployed.
| coupon | string The coupon code you want to retrieve information about |
{- "coupon": "string"
}{- "coupon": {
- "code": "TestCoupon",
- "discountPercent": 0.1,
- "deactivationDate": "2024-08-07T16:41:43.000Z"
}
}A coupon is a discount code that can be applied to an instance when deployed.
| coupon | string The coupon code you want to retrieve information about |
{- "coupon": "string"
}{- "couponValidation": {
- "coupon": {
- "code": "TestCoupon",
- "discountPercent": 0.1,
- "deactivationDate": "2024-08-07T16:41:43.000Z"
}, - "productDetails": [
- [
- {
- "name": "gpu_1x_a6000",
- "description": "1x RTX A6000",
- "pricePerHour": "0.625000",
- "inventoryAvailable": true
}, - {
- "name": "gpu_2x_a6000",
- "description": "2x RTX A6000",
- "pricePerHour": "1.250000",
- "inventoryAvailable": true
}, - {
- "name": "gpu_4x_a6000",
- "description": "4x RTX A6000",
- "pricePerHour": "2.500000",
- "inventoryAvailable": true
}, - {
- "name": "gpu_8x_a6000",
- "description": "8x RTX A6000",
- "pricePerHour": "5.000000",
- "inventoryAvailable": false
}
]
]
}
}An SSH key is a secure access credential used to connect to instances.
| name required | string The name of the SSH key |
| publicKey required | string The public key associated with the SSH key |
{- "name": "string",
- "publicKey": "string"
}{- "sshKey": {
- "id": "string",
- "name": "string"
}
}Beta. Account owners and admins can join the beta under Settings → Profile, or by ticking "Join the beta program" at signup, and leave it under Settings → Profile. Accounts without Persistent Storage get 403.
Persistent Storage keeps its data after the instance it is attached to is terminated. This lists the storage in instance groups you can see. Instances it is attached to in groups you can't see are counted in hiddenAttachedCount, never named. Works with a read-only API key.
Errors use the body { "message": "...", "code": "..." }.
{- "storageVolumes": [
- {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "datasets",
- "status": "creating",
- "statusMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "mountPath": "/persistent/datasets",
- "instanceGroup": "string",
- "instanceGroupName": "string",
- "canManage": true,
- "attachedTo": [
- {
- "uuid": "string",
- "name": "string",
- "status": "string"
}
], - "hiddenAttachedCount": 0
}
]
}Beta. Account owners and admins can join the beta under Settings → Profile, or by ticking "Join the beta program" at signup, and leave it under Settings → Profile. Accounts without Persistent Storage get 403.
Creates storage. Storage is billed for the data stored in it, from the moment you store data until it is deleted. Needs a full-access API key and the Manage persistent storage team permission. The storage is created in instanceGroup, or in the account's default group if you leave it out. You must be able to manage that group.
Names use lowercase letters, digits and hyphens, 1 to 22 characters, and can't start or end with a hyphen. A name must be unique among the account's storage. The name is the mount folder: /persistent/<name>.
If the connection drops, the storage may still have been created. List your storage before you retry; a retry with the same name answers 409 if the first request worked.
| name required | string <= 22 characters ^[a-z0-9](?:[a-z0-9-]{0,20}[a-z0-9])?$ The storage name. It becomes the mount folder, /persistent/ |
| instanceGroup | string or null Optional uuid of an instance group you can manage. Leave it out to use the account's default group. |
{- "name": "datasets",
- "instanceGroup": "string"
}{- "storageVolume": {
- "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08",
- "name": "datasets",
- "status": "creating",
- "statusMessage": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "mountPath": "/persistent/datasets",
- "instanceGroup": "string",
- "instanceGroupName": "string",
- "canManage": true,
- "attachedTo": [
- {
- "uuid": "string",
- "name": "string",
- "status": "string"
}
], - "hiddenAttachedCount": 0
}, - "warning": "string"
}Beta. Account owners and admins can join the beta under Settings → Profile, or by ticking "Join the beta program" at signup, and leave it under Settings → Profile. Accounts without Persistent Storage get 403.
Destructive: permanently deletes the storage and every file in it. This can't be undone. Needs a full-access API key, the Manage persistent storage team permission, and manage access to the storage's instance group.
Storage that is still attached to any instance, including a stopped one, can't be deleted (409). Stop those instances and detach the storage under My Instances > Storage on the website, or terminate them. Detaching isn't on the REST API yet.
Large storage can take more than one request to empty. 200 with deleted: true means it is gone. 202 with deleted: false means it is still being emptied: send the same request again until you get 200. Repeating the request is safe. The storage shows status deleting in the meantime and is billed for whatever is still stored.
| id required | string <uuid> The storage id from |
{- "result": {
- "id": "string",
- "name": "string",
- "deleted": true,
- "filesDeleted": 0,
- "message": "string"
}
}