curl --request POST \ --url 'https://api.e2enetworks.com/myaccount/api/v1/gpu/gateway/?project_id=<PROJECT_ID>&location=<LOCATION>&apikey=<API_KEY>' \ --header 'Authorization: Bearer <API_TOKEN>' \ --header 'Content-Type: application/json' \ --data '{ "name": "example-lb", "description": "Front end for the web tier", "lb_type": "L7", "sku_item_price_id": 2101, "ha": false, "committed_instance_policy": null, "next_sku_item_price_id": null, "algorithm": "ROUND_ROBIN", "health_check": true, "health_check_config": { "protocol": "HTTP", "interval_seconds": 10, "timeout_seconds": 3, "unhealthy_threshold": 3, "healthy_threshold": 2, "path": "/healthz", "expected_statuses": [ 0 ], "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, "ssl_cert_id": "12", "connection_timeout": 10, "client_timeout": 60, "server_timeout": 60, "http_keep_alive_timeout": 60, "websocket_timeout": 3600, "security_groups_ids": [ 0 ]}'import requests
response = requests.post( "https://api.e2enetworks.com/myaccount/api/v1/gpu/gateway/", params={"project_id": "<PROJECT_ID>", "location": "<LOCATION>", "apikey": "<API_KEY>"}, headers={"Authorization": "Bearer <API_TOKEN>"}, json={ "name": "example-lb", "description": "Front end for the web tier", "lb_type": "L7", "sku_item_price_id": 2101, "ha": False, "committed_instance_policy": None, "next_sku_item_price_id": None, "algorithm": "ROUND_ROBIN", "health_check": True, "health_check_config": { "protocol": "HTTP", "interval_seconds": 10, "timeout_seconds": 3, "unhealthy_threshold": 3, "healthy_threshold": 2, "path": "/healthz", "expected_statuses": [ 0, ], "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, "ssl_cert_id": "12", "connection_timeout": 10, "client_timeout": 60, "server_timeout": 60, "http_keep_alive_timeout": 60, "websocket_timeout": 3600, "security_groups_ids": [ 0, ], },)print(response.json())const url = new URL("https://api.e2enetworks.com/myaccount/api/v1/gpu/gateway/");url.search = new URLSearchParams({ project_id: "<PROJECT_ID>", location: "<LOCATION>", apikey: "<API_KEY>" });
const response = await fetch(url, { method: "POST", headers: { "Authorization": "Bearer <API_TOKEN>", "Content-Type": "application/json" }, body: JSON.stringify({ "name": "example-lb", "description": "Front end for the web tier", "lb_type": "L7", "sku_item_price_id": 2101, "ha": false, "committed_instance_policy": null, "next_sku_item_price_id": null, "algorithm": "ROUND_ROBIN", "health_check": true, "health_check_config": { "protocol": "HTTP", "interval_seconds": 10, "timeout_seconds": 3, "unhealthy_threshold": 3, "healthy_threshold": 2, "path": "/healthz", "expected_statuses": [ 0 ], "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, "ssl_cert_id": "12", "connection_timeout": 10, "client_timeout": 60, "server_timeout": 60, "http_keep_alive_timeout": 60, "websocket_timeout": 3600, "security_groups_ids": [ 0 ] }),});console.log(await response.json());Creates a Load Balancer and starts setting it up. The call returns at once with the Load Balancer in Initializing; poll Get Load Balancer until status is Running. A Load Balancer on a plan is billed from when it becomes Running. The Load Balancer needs the Create permission.
Parameters
Section titled “Parameters”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
Name of the Load Balancer, up to 255 characters, unique in the project.
Example
example-lbA description. Optional.
Example
Front end for the web tierL7 balances HTTP and HTTPS traffic, L4 balances TCP traffic. Default L7.
Example
L7ID 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.
Example
2101true to run on 2 instances, false for 1. Each instance is billed at the plan rate. Default false.
Example
falseFor a committed plan: what happens when the term ends. Required with a committed plan.
Example
nullFor 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.
Example
nullHow requests are spread over backends. Default ROUND_ROBIN. Other values are LEAST_REQUEST, LEAST_CONNECTION, RANDOM and SOURCE_IP_HASH.
Example
ROUND_ROBINTurn the health check on or off. Default true.
Example
trueHealth check settings. Every key is optional; a key you leave out takes its default.
object
How the check probes a backend. Default TCP.
Example
HTTPSeconds between checks. Default 10.
Example
10Seconds to wait for an answer. Default 3.
Example
3Failed checks in a row before a backend is taken out. Default 3.
Example
3Passing checks in a row before a backend is put back. Default 2.
Example
2The path an HTTP check requests. Default /.
Example
/healthzStatus codes that count as healthy for an HTTP check. Default [200].
Server errors in a row before a backend is taken out. Default 5.
Example
5Errors 502, 503 or 504 in a row before a backend is taken out. Default 5.
Example
5Seconds a backend stays out after it is taken out. Default 30.
Example
30Seconds between scans for backends to take out. Default 10.
Example
10Most backends, in percent, that can be out at once. Default 50.
Example
50Count connection errors apart from errors the backend returned. Default false.
Example
falseThe port the Load Balancer listens on, 1 to 65535. Required for an L4 Load Balancer.
Example
443Protocols to accept. Empty or left out means both. Applies to L7.
How the Load Balancer talks to backends, up to 16 characters. GRPC makes routing rules without a backend group gRPC.
Example
HTTPRedirect HTTP requests to HTTPS. Needs HTTP and HTTPS both on. Default false.
Example
falseID of a certificate of the project to serve, as text or a number. It must not have expired.
Example
12Seconds to wait when connecting to a backend. Whole number of seconds, 0 or more.
Example
10Seconds a client connection may stay idle. Whole number of seconds, 0 or more.
Example
60Seconds a backend connection may stay idle. Whole number of seconds, 0 or more.
Example
60Seconds an idle HTTP connection is kept open. Whole number of seconds, 0 or more.
Example
60Seconds a WebSocket connection may stay open. Whole number of seconds, 0 or more.
Example
3600IDs of security groups to attach once the Load Balancer exists. An ID that is not valid is skipped.
Responses
Section titled “Responses”The Load Balancer was created and setup has started
object
object
Health check settings. Every key is optional; a key you leave out takes its default.
object
How the check probes a backend. Default TCP.
Seconds between checks. Default 10.
Seconds to wait for an answer. Default 3.
Failed checks in a row before a backend is taken out. Default 3.
Passing checks in a row before a backend is put back. Default 2.
The path an HTTP check requests. Default /.
Status codes that count as healthy for an HTTP check. Default [200].
Server errors in a row before a backend is taken out. Default 5.
Errors 502, 503 or 504 in a row before a backend is taken out. Default 5.
Seconds a backend stays out after it is taken out. Default 30.
Seconds between scans for backends to take out. Default 10.
Most backends, in percent, that can be out at once. Default 50.
Count connection errors apart from errors the backend returned. Default false.
ID of the certificate bound to the Load Balancer, as text.
Seconds to wait when connecting to a backend.
Seconds a client connection may stay idle.
Seconds a backend connection may stay idle.
Seconds an idle HTTP connection is kept open.
Seconds a WebSocket connection may stay open.
The user who created the Load Balancer.
object
object
Example
{ "code": 201, "message": "Created Successfully", "data": { "id": 12, "name": "example-lb", "description": "Front end for the web tier", "environment": null, "connection_limit": 10000, "rate_limit": 1000, "rate_limit_unit": "Second", "max_concurrent_requests": null, "bandwidth_mbps": null, "lb_type": "L4", "scheme": "internet-facing", "algorithm": "ROUND_ROBIN", "vpc_id": null, "node_count": 1, "sku_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, "backend_protocol": "HTTP", "http_redirect": false, "ssl_cert_id": null, "ipv6": false, "security_group_id": null, "connection_timeout": 10, "client_timeout": 60, "server_timeout": 60, "http_keep_alive_timeout": 60, "websocket_timeout": 3600, "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:17:29Z" }, "errors": {}}A field is missing or not valid (errors is keyed by field), the name is already used by a Load Balancer of the project (deleted ones count), the certificate is not found or has expired, a committed plan has no end-of-term choice, the account does not have enough credit, or setup could not start (“Failed to create load balancer. Please try again later.”). A missing or invalid project ID also gives 400 with errors “Project ID is missing or invalid”.
object
object
Example
{ "code": 400, "message": "Bad Request", "data": {}, "errors": "Failed to create load balancer. Please try again later."}