Skip to content
Network Load Balancer

Network Load Balancer

A Network Load Balancer (NLB) is a Layer 4 (TCP/UDP) load balancer that distributes incoming traffic to Compute instances managed by an Instance Pool.

Read more

create-load-balancer

Create a Load Balancer

POST /load-balancer

Request body

Content-Type: application/json

PropertyTypeRequiredDescription
namestringyesLoad Balancer name

Min length: 1. Max length: 255.
addressfamilystringnoLoad Balancer address family (default: :inet4)

Allowed values: inet4, inet6.
descriptionstringnoLoad Balancer description

Max length: 255.
labelsobjectnoLoad balancer labels
Example
{
  "addressfamily": "inet4",
  "description": "string",
  "labels": {},
  "name": "string"
}

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID

Must be a valid UUID.
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceReferenceRelated resource reference
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for create-load-balancer: golang | Python | Java

CLI: exo api create-load-balancer

get-load-balancer

Retrieve Load Balancer details

GET /load-balancer/{id}

Path parameters

NameInDescription
idpathMust be a valid UUID.

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
addressfamilystringLoad Balancer address family

Allowed values: inet4, inet6.
created-atstringLoad Balancer creation date

ISO 8601 date-time.
descriptionstringLoad Balancer description

Max length: 255.
idstringLoad Balancer ID

Must be a valid UUID.
ipstringLoad Balancer public IP

Format: ip.
labelsobjectLoad Balancer Labels
namestringLoad Balancer name

Min length: 1. Max length: 255.
servicesarray of Load Balancer ServiceLoad Balancer Services
statestringLoad Balancer state

Allowed values: creating, migrated, deleting, running, migrating, error.
Example output
{
  "addressfamily": "inet4",
  "created-at": "2026-01-01T00:00:00Z",
  "description": "string",
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "ip": "string",
  "labels": {},
  "name": "string",
  "services": [
    {
      "description": "string",
      "healthcheck": {
        "interval": 5,
        "mode": "tcp",
        "port": 1,
        "retries": 1,
        "timeout": 2,
        "tls-sni": "string",
        "uri": "string"
      },
      "healthcheck-status": [
        {
          "public-ip": "string",
          "status": "failure"
        }
      ],
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
      "instance-pool": {
        "anti-affinity-groups": [
          {
            "id": null
          }
        ],
        "application-consistent-snapshot-enabled": true,
        "deploy-target": {
          "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
        },
        "description": "string",
        "disk-size": 10,
        "elastic-ips": [
          {
            "id": null
          }
        ],
        "error-reason": {
          "cause": "string",
          "job-id": "string",
          "type": "string"
        },
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
        "instance-prefix": "string",
        "instance-type": {
          "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
        },
        "instances": [
          {
            "id": null
          }
        ],
        "ipv6-enabled": true,
        "labels": {},
        "manager": {
          "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
          "type": "sks-nodepool"
        },
        "min-available": 0,
        "name": "string",
        "private-networks": [
          {
            "id": null
          }
        ],
        "public-ip-assignment": "inet4",
        "security-groups": [
          {
            "id": null
          }
        ],
        "size": 1,
        "ssh-key": {
          "name": "string"
        },
        "ssh-keys": [
          {
            "name": null
          }
        ],
        "state": "scaling-up",
        "template": {
          "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
        },
        "user-data": "string"
      },
      "instances": [
        {
          "healthcheck-status": "failure",
          "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
          "public-ip": "string"
        }
      ],
      "label-selector": {
        "labels": {}
      },
      "name": "string",
      "port": 1,
      "protocol": "tcp",
      "state": "creating",
      "strategy": "round-robin",
      "target-port": 1
    }
  ],
  "state": "creating"
}

SDK reference for get-load-balancer: golang | Python | Java

CLI: exo api get-load-balancer

update-load-balancer

Update a Load Balancer

PUT /load-balancer/{id}

Path parameters

NameInDescription
idpathMust be a valid UUID.

Request body

Content-Type: application/json

PropertyTypeRequiredDescription
descriptionstringnoLoad Balancer description

Max length: 255.
labelsobjectno
namestringnoLoad Balancer name

Min length: 1. Max length: 255.
Example
{
  "description": "string",
  "labels": {},
  "name": "string"
}

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID

Must be a valid UUID.
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceReferenceRelated resource reference
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for update-load-balancer: golang | Python | Java

CLI: exo api update-load-balancer

delete-load-balancer

Delete a Load Balancer

DELETE /load-balancer/{id}

Path parameters

NameInDescription
idpathMust be a valid UUID.

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID

Must be a valid UUID.
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceReferenceRelated resource reference
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for delete-load-balancer: golang | Python | Java

CLI: exo api delete-load-balancer

get-load-balancer-service

Retrieve Load Balancer Service details

GET /load-balancer/{id}/service/{service-id}

Path parameters

NameInDescription
idpathMust be a valid UUID.
service-idpathMust be a valid UUID.

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
descriptionstringLoad Balancer Service description

Max length: 255.
healthcheckLoad Balancer Service healthcheckHealthcheck configuration
healthcheck-statusarray of Load Balancer Service statusHealthcheck status per backend server
idstringLoad Balancer Service ID

Must be a valid UUID.
instance-poolInstance PoolInstance Pool to forward network traffic to
instancesarray of Instance the network traffic is forwarded toInstances the network traffic is forwarded to, from the instance pool and the label selector
label-selectorLabel selector: the instances carrying all of its labels are backendsLabel selector of the instances to forward network traffic to
namestringLoad Balancer Service name

Min length: 1. Max length: 255.
portintegerPort exposed on the Load Balancer’s public IP

Min: 0.
protocolstringNetwork traffic protocol

Allowed values: tcp, udp.
statestringLoad Balancer Service state

Allowed values: creating, deleting, running, updating, error.
strategystringLoad balancing strategy

Allowed values: round-robin, maglev-hash, source-hash.
target-portintegerPort on which the network traffic will be forwarded to on the receiving instance

Min: 0.
Example output
{
  "description": "string",
  "healthcheck": {
    "interval": 5,
    "mode": "tcp",
    "port": 1,
    "retries": 1,
    "timeout": 2,
    "tls-sni": "string",
    "uri": "string"
  },
  "healthcheck-status": [
    {
      "public-ip": "string",
      "status": "failure"
    }
  ],
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "instance-pool": {
    "anti-affinity-groups": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "application-consistent-snapshot-enabled": true,
    "deploy-target": {
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
    },
    "description": "string",
    "disk-size": 10,
    "elastic-ips": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "error-reason": {
      "cause": "string",
      "job-id": "string",
      "type": "string"
    },
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "instance-prefix": "string",
    "instance-type": {
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
    },
    "instances": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "ipv6-enabled": true,
    "labels": {},
    "manager": {
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
      "type": "sks-nodepool"
    },
    "min-available": 0,
    "name": "string",
    "private-networks": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "public-ip-assignment": "inet4",
    "security-groups": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "size": 1,
    "ssh-key": {
      "name": "string"
    },
    "ssh-keys": [
      {
        "name": "string"
      }
    ],
    "state": "scaling-up",
    "template": {
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
    },
    "user-data": "string"
  },
  "instances": [
    {
      "healthcheck-status": "failure",
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
      "public-ip": "string"
    }
  ],
  "label-selector": {
    "labels": {}
  },
  "name": "string",
  "port": 1,
  "protocol": "tcp",
  "state": "creating",
  "strategy": "round-robin",
  "target-port": 1
}

SDK reference for get-load-balancer-service: golang | Python | Java

CLI: exo api get-load-balancer-service

update-load-balancer-service

Update a Load Balancer Service

PUT /load-balancer/{id}/service/{service-id}

Path parameters

NameInDescription
idpathMust be a valid UUID.
service-idpathMust be a valid UUID.

Request body

Content-Type: application/json

PropertyTypeRequiredDescription
descriptionstringnoLoad Balancer Service description

Max length: 255.
healthcheckLoad Balancer Service healthchecknoHealthcheck configuration
label-selectorLabel selector: the instances carrying all of its labels are backendsnoLabel selector of the instances to forward traffic to. Empty labels remove it
namestringnoLoad Balancer Service name

Max length: 255.
portintegernoPort exposed on the Load Balancer’s public IP

Min: 1. Max: 65535.
protocolstringnoNetwork traffic protocol

Allowed values: tcp, udp.
strategystringnoLoad balancing strategy

Allowed values: round-robin, maglev-hash, source-hash.
target-portintegernoPort on which the network traffic will be forwarded to on the receiving instance

Min: 1. Max: 65535.
Example
{
  "description": "string",
  "healthcheck": {
    "interval": 5,
    "mode": "tcp",
    "port": 1,
    "retries": 1,
    "timeout": 2,
    "tls-sni": "string",
    "uri": "string"
  },
  "label-selector": {
    "labels": {}
  },
  "name": "string",
  "port": 1,
  "protocol": "tcp",
  "strategy": "round-robin",
  "target-port": 1
}

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID

Must be a valid UUID.
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceReferenceRelated resource reference
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for update-load-balancer-service: golang | Python | Java

CLI: exo api update-load-balancer-service

delete-load-balancer-service

Delete a Load Balancer Service

DELETE /load-balancer/{id}/service/{service-id}

Path parameters

NameInDescription
idpathMust be a valid UUID.
service-idpathMust be a valid UUID.

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID

Must be a valid UUID.
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceReferenceRelated resource reference
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for delete-load-balancer-service: golang | Python | Java

CLI: exo api delete-load-balancer-service


Other Operations

reset-load-balancer-field

Reset a Load Balancer field to its default value

DELETE /load-balancer/{id}/{field}

Path parameters

NameInDescription
idpathMust be a valid UUID.
fieldpath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID

Must be a valid UUID.
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceReferenceRelated resource reference
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for reset-load-balancer-field: golang | Python | Java

CLI: exo api reset-load-balancer-field

reset-load-balancer-service-field

Reset a Load Balancer Service field to its default value

DELETE /load-balancer/{id}/service/{service-id}/{field}

Path parameters

NameInDescription
idpathMust be a valid UUID.
service-idpathMust be a valid UUID.
fieldpath

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID

Must be a valid UUID.
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceReferenceRelated resource reference
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for reset-load-balancer-service-field: golang | Python | Java

CLI: exo api reset-load-balancer-service-field

list-load-balancers

List Load Balancers

GET /load-balancer

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
load-balancersarray of Load Balancer
Example output
{
  "load-balancers": [
    {
      "addressfamily": "inet4",
      "created-at": "2026-01-01T00:00:00Z",
      "description": "string",
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
      "ip": "string",
      "labels": {},
      "name": "string",
      "services": [
        {
          "description": "string",
          "healthcheck": {
            "interval": null,
            "mode": null,
            "port": null,
            "retries": null,
            "timeout": null,
            "tls-sni": null,
            "uri": null
          },
          "healthcheck-status": [
            null
          ],
          "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
          "instance-pool": {
            "anti-affinity-groups": null,
            "application-consistent-snapshot-enabled": null,
            "deploy-target": null,
            "description": null,
            "disk-size": null,
            "elastic-ips": null,
            "error-reason": null,
            "id": null,
            "instance-prefix": null,
            "instance-type": null,
            "instances": null,
            "ipv6-enabled": null,
            "labels": null,
            "manager": null,
            "min-available": null,
            "name": null,
            "private-networks": null,
            "public-ip-assignment": null,
            "security-groups": null,
            "size": null,
            "ssh-key": null,
            "ssh-keys": null,
            "state": null,
            "template": null,
            "user-data": null
          },
          "instances": [
            null
          ],
          "label-selector": {
            "labels": null
          },
          "name": "string",
          "port": 1,
          "protocol": "tcp",
          "state": "creating",
          "strategy": "round-robin",
          "target-port": 1
        }
      ],
      "state": "creating"
    }
  ]
}

SDK reference for list-load-balancers: golang | Python | Java

CLI: exo api list-load-balancers

add-service-to-load-balancer

Add a Load Balancer Service

POST /load-balancer/{id}/service

Path parameters

NameInDescription
idpathMust be a valid UUID.

Request body

Content-Type: application/json

PropertyTypeRequiredDescription
healthcheckLoad Balancer Service healthcheckyesHealthcheck configuration
namestringyesLoad Balancer Service name

Min length: 1. Max length: 255.
portintegeryesPort exposed on the Load Balancer’s public IP

Min: 1. Max: 65535.
protocolstringyesNetwork traffic protocol

Allowed values: tcp, udp.
strategystringyesLoad balancing strategy

Allowed values: round-robin, maglev-hash, source-hash.
target-portintegeryesPort on which the network traffic will be forwarded to on the receiving instance

Min: 1. Max: 65535.
descriptionstringnoLoad Balancer Service description

Max length: 255.
instance-poolInstance PoolnoInstance Pool to forward traffic to. A service requires an instance-pool, a label-selector, or both
label-selectorLabel selector: the instances carrying all of its labels are backendsnoLabel selector of the instances to forward traffic to. A service requires an instance-pool, a label-selector, or both
Example
{
  "description": "string",
  "healthcheck": {
    "interval": 5,
    "mode": "tcp",
    "port": 1,
    "retries": 1,
    "timeout": 2,
    "tls-sni": "string",
    "uri": "string"
  },
  "instance-pool": {
    "anti-affinity-groups": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "application-consistent-snapshot-enabled": true,
    "deploy-target": {
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
    },
    "description": "string",
    "disk-size": 10,
    "elastic-ips": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "error-reason": {
      "cause": "string",
      "job-id": "string",
      "type": "string"
    },
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "instance-prefix": "string",
    "instance-type": {
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
    },
    "instances": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "ipv6-enabled": true,
    "labels": {},
    "manager": {
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
      "type": "sks-nodepool"
    },
    "min-available": 0,
    "name": "string",
    "private-networks": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "public-ip-assignment": "inet4",
    "security-groups": [
      {
        "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
      }
    ],
    "size": 1,
    "ssh-key": {
      "name": "string"
    },
    "ssh-keys": [
      {
        "name": "string"
      }
    ],
    "state": "scaling-up",
    "template": {
      "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab"
    },
    "user-data": "string"
  },
  "label-selector": {
    "labels": {}
  },
  "name": "string",
  "port": 1,
  "protocol": "tcp",
  "strategy": "round-robin",
  "target-port": 1
}

Responses

Status: 200 - 200

Content-Type: application/json

PropertyTypeDescription
idstringOperation ID

Must be a valid UUID.
messagestringOperation message
reasonstringOperation failure reason

Allowed values: incorrect, unknown, unavailable, forbidden, busy, fault, partial, not-found, interrupted, unsupported, conflict.
referenceReferenceRelated resource reference
statestringOperation status

Allowed values: failure, pending, success, timeout.
Example output
{
  "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
  "message": "string",
  "reason": "incorrect",
  "reference": {
    "command": "string",
    "id": "a1b2c3d4-e5f6-4a5b-8c9d-0123456789ab",
    "link": "string"
  },
  "state": "failure"
}

SDK reference for add-service-to-load-balancer: golang | Python | Java

CLI: exo api add-service-to-load-balancer

Last updated on