curl --request PUT \ --url 'https://api.e2enetworks.com/myaccount/api/v1/gpu/notebooks/autoscale-groups/{group_id}/?project_id=<PROJECT_ID>&location=<LOCATION>&apikey=<API_KEY>' \ --header 'Authorization: Bearer <API_TOKEN>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example-group", "min_replicas": 2, "max_replicas": 10, "desired_replicas": 3, "scale_mode": "elastic", "policy_type": "elastic_cpu", "cpu_threshold_percent": 60, "memory_threshold_percent": 70, "network_threshold_bytes_per_sec": 10000000, "scale_in_stabilization_seconds": 300, "scale_out_stabilization_seconds": 30, "watch_period": 3, "period_duration": 10, "public_ip_enabled": true, "scale_up_operator": ">", "scale_down_operator": "<", "scale_down_threshold_percent": 30, "health_check_type": "vm_status", "health_check_port": 80, "health_check_path": "/", "health_check_protocol": "http", "health_check_interval_seconds": 30, "health_check_timeout_seconds": 5, "health_check_unhealthy_threshold": 2, "health_check_healthy_threshold": 1, "startup_grace_period_seconds": 300, "auto_replace_unhealthy": true, "scheduled_policies": [ { "id": 88, "name": "weekday-morning", "cron_expression": "0 9 * * 1-5", "timezone_name": "UTC", "target_min_replicas": 4, "target_max_replicas": 10, "duration_seconds": 28800, "enabled": true } ]}'import requests
response = requests.put( "https://api.e2enetworks.com/myaccount/api/v1/gpu/notebooks/autoscale-groups/{group_id}/", params={"project_id": "<PROJECT_ID>", "location": "<LOCATION>", "apikey": "<API_KEY>"}, headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "name": "example-group", "min_replicas": 2, "max_replicas": 10, "desired_replicas": 3, "scale_mode": "elastic", "policy_type": "elastic_cpu", "cpu_threshold_percent": 60, "memory_threshold_percent": 70, "network_threshold_bytes_per_sec": 10000000, "scale_in_stabilization_seconds": 300, "scale_out_stabilization_seconds": 30, "watch_period": 3, "period_duration": 10, "public_ip_enabled": True, "scale_up_operator": ">", "scale_down_operator": "<", "scale_down_threshold_percent": 30, "health_check_type": "vm_status", "health_check_port": 80, "health_check_path": "/", "health_check_protocol": "http", "health_check_interval_seconds": 30, "health_check_timeout_seconds": 5, "health_check_unhealthy_threshold": 2, "health_check_healthy_threshold": 1, "startup_grace_period_seconds": 300, "auto_replace_unhealthy": True, "scheduled_policies": [ { "id": 88, "name": "weekday-morning", "cron_expression": "0 9 * * 1-5", "timezone_name": "UTC", "target_min_replicas": 4, "target_max_replicas": 10, "duration_seconds": 28800, "enabled": True, }, ], },)print(response.json())const url = new URL("https://api.e2enetworks.com/myaccount/api/v1/gpu/notebooks/autoscale-groups/{group_id}/");url.search = new URLSearchParams({ project_id: "<PROJECT_ID>", location: "<LOCATION>", apikey: "<API_KEY>" });
const response = await fetch(url, { method: "PUT", headers: { "Authorization": "Bearer <API_TOKEN>", "Content-Type": "application/json" }, body: JSON.stringify({ "name": "example-group", "min_replicas": 2, "max_replicas": 10, "desired_replicas": 3, "scale_mode": "elastic", "policy_type": "elastic_cpu", "cpu_threshold_percent": 60, "memory_threshold_percent": 70, "network_threshold_bytes_per_sec": 10000000, "scale_in_stabilization_seconds": 300, "scale_out_stabilization_seconds": 30, "watch_period": 3, "period_duration": 10, "public_ip_enabled": true, "scale_up_operator": ">", "scale_down_operator": "<", "scale_down_threshold_percent": 30, "health_check_type": "vm_status", "health_check_port": 80, "health_check_path": "/", "health_check_protocol": "http", "health_check_interval_seconds": 30, "health_check_timeout_seconds": 5, "health_check_unhealthy_threshold": 2, "health_check_healthy_threshold": 1, "startup_grace_period_seconds": 300, "auto_replace_unhealthy": true, "scheduled_policies": [ { "id": 88, "name": "weekday-morning", "cron_expression": "0 9 * * 1-5", "timezone_name": "UTC", "target_min_replicas": 4, "target_max_replicas": 10, "duration_seconds": 28800, "enabled": true } ] }),});console.log(await response.json());Changes the settings of a group. Send only the fields to change; the rest keep their value. The plan, the disk size and the source snapshot cannot be changed. Raising min_replicas above the running count adds VMs, and lowering max_replicas below it removes VMs. If scheduled_policies is sent, it replaces the group’s schedules, and an empty list deletes them all, as does null.
Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Auto Scaling Group ID
Query Parameters
Section titled “Query Parameters”Project ID
Active IAM ID (To access contact person account) Find your Active IAM ID here
Location
Request Bodyrequired
Section titled “Request Bodyrequired”object
A new name, unique among the project’s groups that are not deleted.
Example
example-groupSaved Minimum VMs, at least 1. base_min_replicas is accepted in its place.
Example
2Saved Maximum VMs, at least min_replicas and at most 60. base_max_replicas is accepted in its place. While a schedule hold is in force, the live range stays the hold’s until it ends.
Example
10Sets the number of VMs the group runs now, from min_replicas to max_replicas. Not applied to a Failed group until its next launch.
Example
3Example
elasticExample
elastic_cpuWhole number from 10 to 99.
Example
60Whole number from 10 to 99.
Example
70Bytes per second per VM.
Example
10000000At least 120 seconds when sent.
Example
300At least 1 second.
Example
30Example
3Example
10Leave this field out.
Example
trueLeave this field out.
Example
>Leave this field out.
Example
<Leave this field out.
Example
30Example
vm_statusExample
80Example
/Example
httpAt least 15.
Example
30Example
5Example
2Example
1Example
300Example
trueThe group’s full list of schedules, with the fields of Create Auto Scaling Group. When the key is sent, the list replaces the group’s schedules. An empty list deletes all of them, and so does null.
object
ID of an existing schedule to change. Without it, the schedule is matched by name to one of the group’s schedules, or created if none matches. A schedule of the group that no item matches is deleted.
Example
88Example
weekday-morningExample
0 9 * * 1-5Example
UTCExample
4Example
10Example
28800Example
trueResponses
Section titled “Responses”The group after the change. When desired_replicas is sent, message carries the note on how long the new size holds and resize is present.
object
object
The group’s name.
An identifier for the group, used when you contact support. It cannot be changed.
Cooldown while the group is Running, usage is not over the target, and fewer than scale_in_stabilization_seconds have passed since the last usage-based size change; otherwise status.
true while the group is in that cooldown. The group will not remove VMs during it.
Seconds left of that hold. null when not holding.
The launch step the group is at. null before a launch has begun.
Launch progress, 0 to 100.
Estimated seconds left of the launch.
An identifier for the project in the region, used when you contact support.
The group’s rates for one VM, in the currency of its plan. null when the group has no plan.
object
Compute price per VM per hour.
Disk price per GB per month.
Disk size included in the compute price, in GB.
Disk size per VM that is charged, in GB.
Hours in the month used for the monthly figure.
Compute plus disk, per VM per hour.
Compute plus disk, per VM per month.
How the group’s usage-based scaling has behaved. Based on the group’s recent scale events.
object
The period the counts cover.
Times in that period that usage-based scaling added VMs and the count reached Maximum VMs.
Times in that period that usage-based scaling reversed direction.
Hints on the group’s settings.
object
object
object
Why the group is or is not changing size now: not_running, schedule_only, at_max_capacity, condition_met_stabilizing, in_cooldown, at_min_capacity, below_target or active.
object
Number of VMs that are ready.
While the group is Creating, how many VMs are still starting. null otherwise.
A coarse launch phase: validated, network_applied, created, launching or ready. null for other steps.
The launch checklist. Empty once the group is past launching, except for a Failed group, where it shows the step that failed.
object
Step identifier.
What the step does.
While the step runs, a live line; on the step that failed, the reason.
true when the current launch step has run longer than usual.
Why the group is Failed. Read it only when status is Failed.
The cause of a failed launch: credit, quota, inventory, config or transient.
true for a Creating or Failed group that has never been Running.
The region.
Minimum VMs in force now. While a schedule or Scale Now holds the minimum higher, this is the held value.
Maximum VMs in force now.
The saved Minimum VMs.
The saved Maximum VMs.
When the schedule hold now in force ends. null when none.
The minimum a Scale Now hold sets. null when no hold is in force.
When the Scale Now hold ends.
The number of VMs the group is set to run.
Same as scale_in_stabilization_seconds.
Number of watched periods before the group adds VMs.
Length of one watched period, in seconds.
How long usage must stay below the target before VMs are removed, in seconds. At least 120.
How long usage must stay above the target before VMs are added, in seconds.
Same value as scale_out_stabilization_seconds, under its older name.
Every VM in a group gets a public IP address.
http or https, for http checks.
Same value as health_check_grace_period_seconds.
ID of the snapshot the group launches from. null for a group made from a VM until its snapshot exists.
The operating system of the source image.
The plan the group’s VMs run on.
Average CPU use across the group’s VMs, as last measured.
The VM the group was made from. null once that VM is deleted.
The source VM’s identifier, kept after the VM is deleted.
Disk per VM, in GB.
Number of VMs now in the group.
One schedule of the group.
object
When the schedule runs: minute, hour, day of month, month, day of week.
The time zone of cron_expression.
The Minimum VMs the schedule sets.
The Maximum VMs the schedule sets.
How long the schedule holds its range, in seconds. null when it holds until another schedule changes it.
When the schedule’s hold ends. null when no hold is in force.
When the schedule next runs. null while it is disabled.
When the schedule last ran.
ID of the user who created the group.
One entry per schedule sent. A schedule that was refused does not fail the request.
object
The schedule as sent.
object
The stored schedule, as in scheduled_policies.
object
Whether the new VM count stays.
object
true when the new size is kept until you change it; false when it is a hold that ends.
The Minimum VMs the group returns to. Present only when durable is false.
object
Example
{ "code": 200, "message": "Success", "data": { "id": 412, "name": "example-group", "vmpool_name": "example-group-ab12", "status": "Creating", "display_status": "Running", "in_cooldown": false, "cooldown_seconds_remaining": null, "stage": "running", "stage_message": "Ready", "stage_percent": 100, "stage_started_at": "2026-10-21T11:19:02+00:00", "eta_seconds": 0, "launch_started_at": "2026-10-21T11:17:29+00:00", "became_ready_at": "2026-10-21T11:21:40+00:00", "namespace": "project-example", "pricing": { "currency": "INR", "compute_hourly_per_vm": 5.5, "disk_rate_per_gb_month": 4, "free_disk_gb": 30, "billable_disk_gb": 20, "disk_monthly_per_vm": 80, "disk_hourly_per_vm": 0.11, "hours_per_month_basis": 730, "hourly_per_vm": 5.61, "monthly_per_vm": 4174.5 }, "scaling_health": { "window": "24h", "max_capacity_reached_count": 0, "oscillation_count": 0, "recommendations": [ { "code": "raise_maximum", "severity": "warning", "facts": { "times_at_max": 3, "window": "24h", "current_max": 5 } } ], "current_state": { "code": "below_target", "facts": { "metric": "cpu", "current": 31, "target": 60 } } }, "ready_count": 3, "booting_count": null, "provisioning_phase": "ready", "progress_steps": [ { "key": "creating_vmpool", "label": "Creating scale group", "description": "Creating the group that will hold your VMs.", "status": "done", "message": null, "started_at": "2026-10-21T11:17:31+00:00", "completed_at": "2026-10-21T11:17:51+00:00", "duration_seconds": 20 } ], "is_delayed": false, "delayed_message": null, "failure_reason": null, "failure_kind": null, "can_relaunch": false, "has_ever_reached_running_state": true, "location": "Delhi", "min_replicas": 3, "max_replicas": 10, "base_min_replicas": 2, "base_max_replicas": 10, "active_window_ends_at": null, "manual_override_min_replicas": null, "manual_override_ends_at": null, "desired_replicas": 3, "policy_type": "elastic_cpu", "scale_mode": "elastic", "cpu_threshold_percent": 60, "memory_threshold_percent": null, "network_threshold_bytes_per_sec": null, "custom_parameter_name": null, "custom_threshold_percent": null, "cooldown_period": 300, "watch_period": 3, "period_duration": 10, "scale_in_stabilization_seconds": 300, "scale_out_stabilization_seconds": 30, "scale_out_cooldown_seconds": 30, "public_ip_enabled": true, "scale_up_operator": ">", "scale_down_operator": "<", "scale_down_threshold_percent": null, "thresholds_enforced": false, "health_check_type": "vm_status", "health_check_protocol": null, "health_check_port": null, "health_check_path": "/", "health_check_interval_seconds": 30, "health_check_timeout_seconds": 5, "health_check_unhealthy_threshold": 2, "health_check_healthy_threshold": 1, "startup_grace_period_seconds": 300, "health_check_grace_period_seconds": 300, "auto_replace_unhealthy": true, "backup_snapshot_id": 212, "image_name": "example-vm snapshot", "image_os": "Ubuntu", "machine_size": "4 vCPU · 8 GB RAM", "sku_item_price_id": 1190, "current_cpu_percent": 31.5, "current_memory_percent": null, "source_vm_id": 4984, "source_vm_name": "example-vm", "source_vm_slug_name": "example-vm-abc123", "disk_size_gb": 50, "active_node_count": 3, "scheduled_policies": [ { "id": 88, "group_id": 412, "name": "weekday-morning", "cron_expression": "0 9 * * 1-5", "timezone_name": "UTC", "target_min_replicas": 4, "target_max_replicas": 10, "enabled": true, "duration_seconds": 28800, "window_ends_at": null, "next_run_at": "2026-10-26T09:00:00+00:00", "last_run_at": null, "created_at": "2026-10-21T11:17:29+00:00" } ], "ssh_key_ids": [ 17 ], "security_group_id": 45, "created_at": "2026-10-21T11:17:29+00:00", "created_by": 1, "scheduled_policy_results": [ { "input": { "name": "weekday-morning" }, "success": true, "errors": null } ], "resize": { "durable": false, "reverts_within_seconds": 180, "reverts_at": "2026-10-21T12:03:00+00:00", "reverts_to_min_replicas": 2 } }, "errors": {}}The group is in another status (as shown), or a field is outside its limit. The limits are those of Create Auto Scaling Group, except that max_replicas may equal min_replicas, and name may not be empty (“name must be a non-empty string.”). desired_replicas is optional here. errors is “Project ID is missing or invalid” when project_id is missing or not a number.
object
object
Example
{ "code": 400, "message": "Bad Request", "data": {}, "errors": "Only a Running, Stopped or Failed group can be edited. Current status: Creating."}The caller lacks the permission the call needs on the project, or the region is not allowed.
object
object
Example
{ "code": 403, "message": "Forbidden", "data": {}, "errors": "You don't have permission to access this service. Please verify your policy or project."}No Auto Scaling Group with that ID in the project and region.
object
object
Example
{ "code": 404, "message": "Bad Request", "data": {}, "errors": "Autoscale Group not found"}The new scaling settings could not be applied to the running group (data is a sentence that ends with the reason), or the settings were saved but the new VM count could not be applied (data says the settings were updated but the resize failed, with the reason). errors is {}.
object
object
Example
{ "code": 500, "message": "Internal Server Error", "data": "Failed to apply the new scaling settings to the running group: <reason>", "errors": {}}