Update all compute resources to a new DigitalOcean Droplet size
Resizes every type: "compute" resource in the simulation to the specified DigitalOcean Droplet size tier (e.g. s-2vcpu-4gb, s-4vcpu-8gb, s-8vcpu-16gb). Useful for right-sizing experiments where you want to evaluate the cost/performance trade-off of a uniform resize.
Scope: Only applies to type: "compute" resources. Database resources (type: "database") are not affected and remain unchanged.
DigitalOcean-only: if any compute resource uses a non-DigitalOcean provider (AWS, GCP, Azure, OCI), the request is rejected with a PROVIDER_MISMATCH 400 naming the providers found, and no resource is modified. This endpoint never changes a resource's provider. To recover a failed resource on any provider, use POST /simulations/{simulationId}/recover-resource instead.
The size must be a valid DigitalOcean Droplet slug. Use GET /api/description to discover available sizes.
Requires write scope and ownership.
Request
- Base URL: https://www.cloudworldmodel.ai/api
- URL: https://www.cloudworldmodel.ai/api/simulations/{simulationId}/bulk-resize
- Auth: one of:
- HTTP bearer
- API key in header X-PAYMENT
- API key in header PAYMENT-SIGNATURE
Path parameters
Simulation UUID
Request body
Example request
{
"dropletSize": "s-4vcpu-8gb"
}Response
All compute resources resized
Example response
{
"simulation": {
"resources": [
{
"id": "ec2-1",
"type": "compute",
"name": "Web Server 1",
"provider": "aws",
"location": {
"regionKey": "us-east-2"
},
"characteristics": {
"workload": "crud",
"appRuntime": "node",
"appWorkerCount": 2,
"appDbPoolSize": 250,
"workloadDatabaseVersion": "8.0",
"workloadDatabaseEngine": "mysql",
"rdsSqlServerBilling": {
"instanceClass": "db.t3.micro",
"storageType": "gp2",
"allocatedStorageGiB": 20,
"durationHours": 480,
"sustainedCpuPercent": 43
},
"serviceFamily": "ec2",
"containerCpu": 0.5,
"containerMemoryGiB": 1,
"runtimeMemoryProfile": {
"workingSetGiB": 0.78125
},
"concurrency": 80,
"requestDurationSeconds": 0.25,
"requestServingTargetUtilizationPct": 70,
"billingState": "stopped",
"size": "m5.large",
"instanceType": "t3.medium",
"ocpus": 4,
"maxThroughput": 2000,
"capacityRps": 100,
"baseLatency": 3,
"maxConnections": 800,
"capacityGB": 500,
"maxIops": 3000,
"inferenceMode": true,
"accelerator": "a10g",
"managedComputePlatform": "nvidia-dgx-cloud",
"openshiftOffering": "rosa-hcp",
"topology": {
"intraNode": "nvlink-nvswitch",
"interNode": "infiniband"
},
"intraNode": "nvlink-nvswitch",
"interNode": "infiniband",
"includesControlPlane": true,
"bundledNetworking": true,
"trainingMode": true,
"tokensPerRequest": 500,
"inputTokensPerRequest": 1000,
"cacheHitRate": 0.85,
"cacheableRequestShare": 0.75,
"asynchronousRequestShare": 0.15,
"queueConsumerCount": 4,
"queueDrainRatePerConsumerRps": 125,
"queueCapacityMessages": 20000,
"queueSimulationStepSeconds": 1,
"autoscaling": true,
"maxInstances": 5,
"minInstances": 2,
"scaleOutCpuThreshold": 60,
"scaleInCpuThreshold": 25,
"nodeCount": 2,
"workerVcpu": 4,
"minNodes": 2,
"maxNodes": 10,
"perNodeRate": 3.2,
"pricingModel": "on-demand",
"nodePools": [
{
"name": "general",
"nodeCount": 2,
"workerVcpu": 8,
"minNodes": 2,
"maxNodes": 10,
"perNodeRate": 0.096,
"maxThroughput": 10000
}
],
"streamShardsCount": 4,
"streamWriteRps": 3500,
"eventNotificationsEnabled": true,
"partitionCount": 8,
"streamPartitions": 4,
"partitionWriteRps": 5000,
"warmupSteps": 5,
"warmupSeverity": 0.8
},
"routedRps": 15,
"availabilityState": "available",
"isRoutable": true,
"failureParkStepsRemaining": 3,
"recoveryPolicy": {
"criticalCpuThreshold": 75,
"criticalSteps": 2,
"warningCpuThreshold": 60,
"warningSteps": 1,
"failureParkSteps": 2
}
}
],
"normalizedConfig": {
"resources": [
{
"rdsSqlServerBilling": {
"input": {
"instanceClass": "db.t3.micro",
"storageType": "gp2",
"allocatedStorageGiB": 20,
"durationHours": 480,
"sustainedCpuPercent": 43
}
},
"rateProvenance": {
"sku": "m7g.large",
"source": "AWS EC2 Price List API (Linux, shared tenancy, on-demand)"
},
"dynamoDbBilling": {
"referenceRequestRateRps": 50000
},
"requestServing": {
"serviceFamily": "lambda"
},
"behaviorModel": {
"latencyPath": "gpu-inference/ttft-decode",
"description": "Token-economics model: TTFT + decode, weighted by throughput and batch pressure.",
"modelingNote": "TTFT and decode-throughput figures are CWM simulation-model estimates, not externally measured hardware benchmarks.",
"topologyThroughputFactor": 0.92,
"topologyThroughputCalibrationStatus": "estimated",
"ibNetworkingCostPerNodePerHour": 2
},
"inferenceWarnings": [
"Resource has inference/GPU characteristics (accelerator: h100, tokensPerRequest: 512) but inferenceMode is not enabled. The generic-kubernetes/load-saturation latency model will be used. Set characteristics.inferenceMode: true to activate gpu-inference/ttft-decode."
]
}
]
},
"resilienceConfig": {
"dependencies": [
{
"id": "web-to-db",
"sourceId": "web-1",
"targetId": "db-1",
"requestRatio": 1,
"authDependencyId": "gateway-to-token-service",
"retryPolicy": {
"maxRetries": 3,
"backoffMs": 100,
"backoffMultiplier": 2,
"jitterRatio": 0.1,
"timeoutMs": 2000,
"retryBudgetRatio": 2,
"retryBudgetRps": 1000,
"retryActorId": "gateway_optimistic_retries"
},
"capacity": {
"maxRps": 10000,
"maxConcurrent": 200,
"meanServiceTimeMs": 100
},
"protection": {
"circuitBreaker": {
"failureRateThreshold": 0.5,
"minimumRequests": 20,
"openSteps": 3,
"halfOpenMaxRequests": 10
},
"rateLimitRps": 5000
}
}
],
"scheduledFaults": [
{
"id": "db-capacity-fault",
"targetResourceId": "db-1",
"dependencyId": "web-to-db",
"startStep": 5,
"endStep": 15,
"capacityPercent": 30,
"maxConcurrent": 5,
"addedLatencyMs": 500,
"errorRate": 0.3,
"trafficMultiplier": 2.25
}
],
"maxCascadeDepth": 4,
"maxGeneratedRps": 100000,
"maxStepWork": 512
}
},
"resizedCount": 3
}Changes
No recorded changes to this operation across all 1 revision of this API.