Skip to content

Resize Load Balancer

PUT
/gateway/{gateway_id}/resize/
curl --request PUT \
--url 'https://api.e2enetworks.com/myaccount/api/v1/gpu/gateway/{gateway_id}/resize/?project_id=<PROJECT_ID>&location=<LOCATION>&apikey=<API_KEY>' \
--header 'Authorization: Bearer <API_TOKEN>' \
--header 'Content-Type: application/json' \
--data '{
"sku_item_price_id": 2101,
"ha": false,
"committed_instance_policy": null,
"next_sku_item_price_id": null
}'

Moves a Running Load Balancer to another plan, turns high availability (2 instances) on or off, or both. Billing changes: the old plan and instance count stop being billed and the new ones start. A Load Balancer on a committed plan cannot change its plan or instance count until its term ends. The Load Balancer needs the Update permission.

gateway_id
required
integer

Load Balancer ID

project_id
required
integer

Project ID

active_iam
integer

Active IAM ID (To access contact person account) Find your Active IAM ID here

location
required
string
Allowed values: Delhi Chennai

Location

Media typeapplication/json

Send sku_item_price_id, ha, or both. A field you leave out keeps its current value.

object
sku_item_price_id

ID of the plan the Load Balancer runs on. The plan sets its capacity (requests per second, connections) and its billing. It must be a Load Balancer plan of the same region that fits the type.

integer

Example

2101
ha

true to run on 2 instances, false for 1. Each instance is billed at the plan rate.

boolean

Example

false
committed_instance_policy

Needed when the new plan is a committed plan: what happens when the term ends.

string
nullable

Example

null
next_sku_item_price_id

For a committed plan that continues or converts: the plan to move to. Required for those end-of-term choices. It must be the same plan in the same region, committed to continue or hourly to convert to hourly.

integer
nullable

Example

null

The resized Load Balancer

Media typeapplication/json
object
code
integer
message
string
data
object
id
integer
name
string
certificate

The certificate the Load Balancer serves.

object
id

Certificate ID. Absent when the Load Balancer uses the platform certificate.

integer
source

Where the certificate comes from, PLATFORM, ACME or UPLOADED.

string
Allowed values: PLATFORM ACME UPLOADED
name
string
domains

Domain names the certificate covers.

Array<string>
not_after

When the certificate expires. null for the platform certificate.

string
nullable
days_remaining

Days until it expires. null for the platform certificate.

integer
nullable
managed

true when the certificate renews itself.

boolean
description
string
nullable
domain

The address the E2E platform gives the Load Balancer.

string
nullable
public_ip

The public IP address. null until one is assigned.

string
nullable
environment
string
nullable
status

Initializing while the Load Balancer is being set up, Running, Stopped, or Failed.

string
Allowed values: Initializing Running Stopped Failed
lb_type

L7 for HTTP and HTTPS traffic, L4 for TCP traffic.

string
Allowed values: L4 L7
scheme
string
Allowed values: internet-facing internal
algorithm

How requests are spread over backends.

string
node_count

Instances the Load Balancer runs on: 2 when ha is true, otherwise 1.

integer
sku_id
string
nullable
sku_item_price_id

ID of the plan.

integer
nullable
plan

Name of the plan. null without a plan.

string
nullable
plan_type

hourly or committed. null without a plan.

string
nullable
committed_days

Length of the committed term in days. null on an hourly plan.

integer
nullable
committed_info

The committed term and what happens when it ends. null on an hourly plan.

object
ha

true when the Load Balancer runs on 2 instances.

boolean
vpc_id
integer
nullable
health_check
boolean
health_check_config

Health check settings. Every key is optional; a key you leave out takes its default.

object
protocol

How the check probes a backend. Default TCP.

string
Allowed values: TCP HTTP GRPC
interval_seconds

Seconds between checks. Default 10.

integer
timeout_seconds

Seconds to wait for an answer. Default 3.

integer
unhealthy_threshold

Failed checks in a row before a backend is taken out. Default 3.

integer
healthy_threshold

Passing checks in a row before a backend is put back. Default 2.

integer
path

The path an HTTP check requests. Default /.

string
expected_statuses

Status codes that count as healthy for an HTTP check. Default [200].

Array<integer>
consecutive_5xx_errors

Server errors in a row before a backend is taken out. Default 5.

integer
consecutive_gateway_errors

Errors 502, 503 or 504 in a row before a backend is taken out. Default 5.

integer
base_ejection_time_seconds

Seconds a backend stays out after it is taken out. Default 30.

integer
outlier_interval_seconds

Seconds between scans for backends to take out. Default 10.

integer
max_ejection_percent

Most backends, in percent, that can be out at once. Default 50.

integer
split_external_local_origin_errors

Count connection errors apart from errors the backend returned. Default false.

boolean
listener_port

The port the Load Balancer listens on.

integer
nullable
frontend_protocols

Protocols the Load Balancer accepts. Empty means both.

Array<string>
Allowed values: HTTP HTTPS
backend_protocol
string
nullable
http_redirect

true when HTTP requests are redirected to HTTPS.

boolean
bandwidth_mbps

Bandwidth limit in Mbps.

integer
nullable
rate_limit

Requests allowed per rate_limit_unit, set by the plan.

integer
nullable
rate_limit_unit
string
nullable
connection_limit

Most connections allowed, set by the plan.

integer
nullable
connection_timeout

Seconds to wait when connecting to a backend.

integer
nullable
client_timeout

Seconds a client connection may stay idle.

integer
nullable
server_timeout

Seconds a backend connection may stay idle.

integer
nullable
http_keep_alive_timeout

Seconds an idle HTTP connection is kept open.

integer
nullable
websocket_timeout

Seconds a WebSocket connection may stay open.

integer
nullable
targets

TCP backends of an L4 Load Balancer.

Array<object>
object
id
integer
ip_address
string
port
integer
weight
integer
name
string
nullable
target_groups

The backend groups.

Array<object>
object
id
integer
name
string
backend_type

What the group’s backends are.

string
algorithm
string
nullable
port
integer
protocol
string
health_check_config
object
request_timeout_seconds
integer
nullable
retry_attempts
integer
nullable
targets
Array<object>
object
id
integer
ip_address
string
nullable
port
integer
weight
integer
name
string
nullable
resource_ref

For a Virtual Machine or Auto Scaling Group backend, the name or ID it refers to.

string
nullable
created_at
string
updated_at
string
created_by

The user who created the Load Balancer.

object
id
integer
name
string
email
string
username
string
created_at
string
updated_at
string
rules

The routing rules.

Array<object>
object
id
integer
name
string
priority
integer
nullable
routing_strategy
string
match
object
targets
Array<object>
object
groups
Array<object>
object
target_group_id
integer
nullable
status
string
has_active_load_aware_rule
boolean
configuration_state

Whether the Load Balancer can serve traffic.

object
state

ready, or needs_backends when no backend is set and every request gets 503.

string
Allowed values: ready needs_backends
detail
string
stage

Setup stage while the Load Balancer is being created.

string
nullable
stage_message
string
nullable
stage_percent

How far setup has got, 0 to 100.

integer
nullable
stage_started_at
string
nullable
eta_seconds

Rough seconds of setup left.

integer
nullable
launch_started_at
string
nullable
became_ready_at

When it first became Running.

string
nullable
failure_reason

Why setup failed, if it did.

string
nullable
progress_steps

The setup checklist. Empty unless the status is Initializing or Failed.

Array<object>
object
key
string
label
string
status
string
Allowed values: done active pending error
message
string
nullable
started_at
string
nullable
completed_at
string
nullable
duration_seconds
integer
nullable
errors
object

Example

{
"code": 200,
"message": "Success",
"data": {
"id": 12,
"name": "example-lb",
"certificate": {
"id": 12,
"source": "PLATFORM",
"name": "Platform wildcard",
"not_after": null,
"days_remaining": null,
"managed": true
},
"description": "Front end for the web tier",
"domain": "lb-12-abc123.e2enetworks.net",
"public_ip": "203.0.113.10",
"environment": null,
"status": "Initializing",
"lb_type": "L4",
"scheme": "internet-facing",
"algorithm": "ROUND_ROBIN",
"node_count": 1,
"sku_id": null,
"sku_item_price_id": 2101,
"plan": "LB-Small",
"plan_type": "hourly",
"committed_days": null,
"ha": false,
"vpc_id": null,
"health_check": true,
"health_check_config": {
"protocol": "TCP",
"interval_seconds": 10,
"timeout_seconds": 3,
"unhealthy_threshold": 3,
"healthy_threshold": 2,
"path": "/healthz",
"consecutive_5xx_errors": 5,
"consecutive_gateway_errors": 5,
"base_ejection_time_seconds": 30,
"outlier_interval_seconds": 10,
"max_ejection_percent": 50,
"split_external_local_origin_errors": false
},
"listener_port": 443,
"frontend_protocols": [
"HTTP"
],
"backend_protocol": "HTTP",
"http_redirect": false,
"bandwidth_mbps": null,
"rate_limit": 1000,
"rate_limit_unit": "Second",
"connection_limit": 10000,
"connection_timeout": 10,
"client_timeout": 60,
"server_timeout": 60,
"http_keep_alive_timeout": 60,
"websocket_timeout": 3600,
"targets": [
{
"id": 31,
"ip_address": "203.0.113.21",
"port": 8080,
"weight": 1,
"name": "app-1"
}
],
"target_groups": [
{
"id": 7,
"name": "web-backend",
"backend_type": "ip",
"algorithm": "ROUND_ROBIN",
"port": 8080,
"protocol": "HTTP",
"health_check_config": {
"protocol": "HTTP",
"path": "/healthz"
},
"request_timeout_seconds": 30,
"retry_attempts": 2,
"targets": [
{
"id": 41,
"ip_address": "203.0.113.21",
"port": 8080,
"weight": 1,
"name": "app-1",
"resource_ref": null
}
],
"created_at": "2026-10-21T11:17:29Z",
"updated_at": "2026-10-21T11:17:29Z"
}
],
"created_by": {
"id": 1,
"name": "A User",
"email": "user@example.com",
"username": "auser"
},
"created_at": "2026-10-21T11:17:29Z",
"updated_at": "2026-10-21T11:18:50Z",
"rules": [
{
"id": 5,
"name": "route-to-web",
"priority": 10,
"routing_strategy": "WEIGHT_BASED",
"match": {},
"target_group_id": null,
"status": "Active"
}
],
"has_active_load_aware_rule": false,
"configuration_state": {
"state": "ready",
"detail": ""
},
"stage": "running",
"stage_message": "Ready",
"stage_percent": 100,
"stage_started_at": "2026-10-21T11:19:00Z",
"eta_seconds": 0,
"launch_started_at": "2026-10-21T11:17:29Z",
"became_ready_at": "2026-10-21T11:19:00Z",
"failure_reason": null,
"progress_steps": [
{
"key": "creating_gateway",
"label": "Creating load balancer",
"status": "done",
"message": null,
"started_at": "2026-10-21T11:17:30Z",
"completed_at": "2026-10-21T11:18:20Z",
"duration_seconds": 50
}
]
},
"errors": {}
}

The Load Balancer cannot be resized (“Only load balancers can be resized.”); neither sku_item_price_id nor ha was sent, or nothing would change (“Choose a different plan or HA setting.”); the Load Balancer is not Running (“The load balancer must be Running to resize (current status: ).”); it is on a committed plan (“The plan and HA of a committed load balancer cannot change until its term ends (

). You can still change what happens when the term ends.”); the plan is not available (“The selected plan is not available for load balancers in this region.”) or does not fit the type (“The selected plan does not fit a load balancer.”); the end-of-term choice is missing or not valid; the account does not have enough credit; or the change could not be applied (“Failed to resize the load balancer. Please try again later.”). A missing or invalid project ID also gives 400 with errors “Project ID is missing or invalid”.

Media typeapplication/json
object
code
integer
message
string
data
object
errors
string

Example

{
"code": 400,
"message": "Bad Request",
"data": {},
"errors": "Choose a different plan or HA setting."
}

No Load Balancer with that ID in the project and region.

Media typeapplication/json
object
code
integer
message
string
data
object
errors
string

Example

{
"code": 404,
"message": "Bad Request",
"data": {},
"errors": "Gateway not found"
}