Deployments
Create, inspect, upgrade, and delete Managed, BYOC, and Starter deployments via the LaserData Cloud API.
Set variables to auto-fill all examples and run requests in-browser.
Deployment lifecycle, including creation, upgrades, and deletion, goes through the main API (api.laserdata.cloud). Operational reads (status, nodes, credentials) use the supervisor API ({supervisor_url}). See API Architecture for the full picture.
Required permissions: deployment:read to list/get, deployment:manage to create/modify/delete.
Discovery
Use these endpoints to determine valid options for your plan and region before creating a deployment.
List Available Clouds
GET/tenants/{tenant_id}/cloudsList cloud providers available to the tenant.
curl https://api.laserdata.cloud/tenants/{tenant_id}/clouds \
-H "ld-api-key: YOUR_API_KEY"List Regions
GET/tenants/{tenant_id}/clouds/{cloud}/regionsList regions available for a given cloud provider.
curl https://api.laserdata.cloud/tenants/{tenant_id}/clouds/aws/regions \
-H "ld-api-key: YOUR_API_KEY"List Available Tiers
GET/tenants/{tenant_id}/clouds/{cloud}/regions/{region}/tiersList compute tiers available in a region for the tenant's plan, with specs and limits.
curl https://api.laserdata.cloud/tenants/{tenant_id}/clouds/aws/regions/us-west-1/tiers \
-H "ld-api-key: YOUR_API_KEY"[
{
"key": "free",
"name": "Free",
"description": "Perfect for getting started.",
"instance": "t3.micro",
"available": true,
"limit": 1,
"vcpus": 2,
"memory_gib": 1,
"clusters": ["standalone"],
"storages": ["network_balanced"],
"rate_limit": "100 KB/s"
},
{
"key": "large",
"name": "Large",
"available": true,
"limit": 2,
"vcpus": 2,
"memory_gib": 8,
"clusters": ["standalone", "cluster"],
"storages": ["local_ssd", "network_balanced"],
"rate_limit": null
}
]List Available Storage Types
GET/tenants/{tenant_id}/clouds/{cloud}/regions/{region}/storagesList storage types available for the plan and region.
curl https://api.laserdata.cloud/tenants/{tenant_id}/clouds/aws/regions/us-west-1/storages \
-H "ld-api-key: YOUR_API_KEY"Create Deployments
Create a Managed Deployment
POST/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/managedProvision a fully managed deployment on LaserData infrastructure.
curl -X POST https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/managed \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "prod-cluster",
"cloud": "aws",
"tier": "large",
"cluster": "standalone",
"region": "us-west-1",
"protected": true,
"encrypted": true,
"storage": {
"type": "network_balanced",
"size": 500
},
"retention": {
"telemetry_days": 90
},
"target_network_tput": 10000,
"availability_mode": "single_az",
"public_ip_enabled": true,
"subdomain_enabled": true,
"spend_limit": 500.00
}'| Field | Required | Values / Description |
|---|---|---|
name | Yes | Deployment name |
cloud | Yes | aws, gcp |
tier | Yes | free, small, medium, large, xlarge, 2xlarge, 4xlarge, 8xlarge, 16xlarge |
cluster | Yes | standalone, cluster (cluster not yet available) |
region | Yes | Cloud region (e.g. us-west-1, europe-west1) |
protected | No | Enable resource protection |
encrypted | No | Enable server-side message payload encryption |
storage.type | No | local_ssd, network_balanced |
storage.size | No | Disk size in GB (network storage only) |
retention.telemetry_days | No | Telemetry retention in days |
target_network_tput | No | Target throughput in KB/s (for planning) |
availability_mode | No | single_az, multi_az |
dedicated | No | Dedicated infra isolation (Enterprise only) |
public_ip_enabled | No | Assign a static public IP (default true) |
subdomain_enabled | No | Assign a custom subdomain (requires public IP) |
spend_limit | No | Monthly spend cap in USD |
Returns 202 Accepted. Response headers ld-environment and ld-deployment contain the created resource IDs.
Generate BYOC Setup
POST/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/byoc/setupGenerate the trust policy and permissions policy needed to create a BYOC deployment. Returns cloud-specific setup instructions.
curl -X POST https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/byoc/setup \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"cloud": "aws",
"region": "us-west-1"
}'For AWS, the response includes laserdata_org_id, external_id, trust_policy, and permissions_policy. For GCP it returns service account setup instructions.
Validate BYOC Credentials
POST{supervisor_url}/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/byoc/validateValidate that the provided credentials are correctly configured before creating the deployment.
curl -X POST {supervisor_url}/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/byoc/validate \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"cloud": "aws",
"region": "us-west-1",
"account_id": "123456789012",
"identity_arn": "arn:aws:iam::123456789012:role/LaserDataByocRole",
"external_id": "unique-external-id-123",
"vpc_id": "vpc-12345678"
}'Create a BYOC Deployment (AWS)
POST/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/byocDeploy to your own AWS account. The payload is the same as a managed deployment with an additional aws object containing the IAM role details.
curl -X POST https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/byoc \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "prod-byoc",
"cloud": "aws",
"tier": "large",
"cluster": "standalone",
"region": "us-east-1",
"storage": {
"type": "network_balanced",
"size": 500
},
"aws": {
"account_id": "123456789012",
"identity_arn": "arn:aws:iam::123456789012:role/LaserDataByocRole",
"external_id": "your-external-id",
"vpc_id": "vpc-0abc123def456",
"vpc_cidr": "10.0.0.0/16"
}
}'Returns 202 Accepted with ld-environment and ld-deployment headers. See the BYOC Setup Guide for the full IAM configuration walkthrough.
Create a BYOC Deployment (GCP)
POST/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/byocDeploy to your own GCP project using a service account. Pass a gcp object instead of aws.
curl -X POST https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/byoc \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "byoc-gcp-prod",
"cloud": "gcp",
"tier": "large",
"cluster": "standalone",
"region": "europe-west1",
"storage": {
"type": "network_balanced",
"size": 100
},
"gcp": {
"project_id": "my-gcp-project-123",
"service_account_email": "[email protected]",
"vpc_name": "default"
}
}'Returns 202 Accepted with ld-environment and ld-deployment headers.
Create a Starter Deployment
POST/tenants/{tenant_id}/divisions/{division_id}/deployments/starterQuickly create a Free-tier standalone deployment for development or testing.
curl -X POST https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/deployments/starter \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"cloud": "aws",
"region": "us-west-1"
}'| Field | Required | Description |
|---|---|---|
cloud | Yes | aws, gcp |
region | Yes | Cloud region |
environment_id | No | Existing environment ID to deploy into |
environment_name | No | Name for a new environment (defaults to sandbox) |
deployment_name | No | Deployment name (auto-generated if omitted) |
Read Deployments
List Deployments
GET/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deploymentsList all deployments in an environment.
curl https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments \
-H "ld-api-key: YOUR_API_KEY"{
"items": [
{
"id": 1,
"name": "prod-cluster",
"code": "abc123",
"variant": "managed",
"domain": "prod-cluster-abc123.laserdata.cloud",
"cloud": "aws",
"region": "us-west-1",
"tier": "large",
"cluster": "standalone",
"supervisor_url": "https://supervisor-aws-us.laserdata.cloud",
"created_at": "2025-01-15T10:30:00Z"
}
],
"page": 1,
"total_results": 1,
"total_pages": 1
}Get Deployment (Main API)
GET/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}Retrieve business metadata: protection, description, and upgrade history.
curl https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id} \
-H "ld-api-key: YOUR_API_KEY"Fields exclusive to the main API response: code, protected, description, upgrades.
Get Deployment (Supervisor API)
GET{supervisor_url}/deployments/{deployment_id}Retrieve live runtime status, node IPs, active configs, and cloud networking info.
curl {supervisor_url}/deployments/{deployment_id} \
-H "ld-api-key: YOUR_API_KEY"Fields exclusive to the supervisor response: status, network_mode, cidr, configs, nodes, aws/gcp networking details.
A full deployment detail view requires both calls in parallel.
Get Deployment Credentials
GET{supervisor_url}/deployments/{deployment_id}/credentialsRetrieve the Iggy username and password for client connections.
curl {supervisor_url}/deployments/{deployment_id}/credentials \
-H "ld-api-key: YOUR_API_KEY"{
"username": "iggy",
"password": "your-deployment-password"
}Modify Deployments
Upgrade a Deployment
POST/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}/upgradeUpgrade tier and/or storage. At least one of tier or storage must be provided. Applied asynchronously by Warden.
curl -X POST https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}/upgrade \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tier": "xlarge",
"storage": {
"type": "network_balanced",
"size": 500
}
}'Returns 202 Accepted. NVMe SSD deployments cannot be upgraded until clustering is available.
Extend a Deployment
POST/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}/extendAdd nodes to an existing deployment.
curl -X POST https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}/extend \
-H "ld-api-key: YOUR_API_KEY"Update Spend Limit
PUT/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}/spend_limitSet or update the monthly spend cap in USD.
curl -X PUT https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}/spend_limit \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"spend_limit": 1000.00
}'Returns 200 OK. Required permission: deployment:manage at the environment level.
Update Retention
PUT/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}/retentionUpdate telemetry retention period for metrics, logs, and heartbeats.
curl -X PUT https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}/retention \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"retention": {
"telemetry_days": 90
}
}'Returns 200 OK.
Update Deployment
PUT/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}Update protection status or description.
curl -X PUT https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id} \
-H "ld-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"protected": true,
"description": "Production streaming cluster for analytics pipeline"
}'Delete a Deployment
DELETE/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}Permanently delete a deployment. Protected deployments require a resource code. This action is irreversible.
curl -X DELETE "https://api.laserdata.cloud/tenants/{tenant_id}/divisions/{division_id}/environments/{environment_id}/deployments/{deployment_id}?code={protection_code}" \
-H "ld-api-key: YOUR_API_KEY"Returns 202 Accepted. All nodes, data, configs, backups, and telemetry are permanently destroyed.