> ## Documentation Index
> Fetch the complete documentation index at: https://gcore.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Create load balancer pool



## OpenAPI

````yaml /api-reference/services_documented/cloud_api.yaml post /cloud/v1/lbpools/{project_id}/{region_id}
openapi: 3.1.0
info:
  title: Gcore OpenAPI – Cloud API
  description: >-
    This OpenAPI is an aggregated OpenAPI specification that unifies all Gcore
    products into a single file. It covers Cloud, CDN, DNS, WAAP, DDoS
    Protection, Object Storage, Streaming, and FastEdge services.
  version: '2026-05-15T06:37:28.230198+00:00'
servers:
  - url: https://api.gcore.com
security:
  - APIKey: []
tags:
  - name: Bare Metal
    x-displayName: Bare Metal
  - name: Container as a Service
    x-displayName: Container as a Service
  - name: Cost Reports
    x-displayName: Cost Reports
  - name: DDoS Protection
    x-displayName: DDoS Protection
  - name: Everywhere Inference
    x-displayName: Everywhere Inference
  - name: Everywhere Inference Apps
    x-displayName: Everywhere Inference Apps
  - name: File Shares
    x-displayName: File Shares
  - name: Floating IPs
    x-displayName: Floating IPs
  - name: Function as a Service
    x-displayName: Function as a Service
  - name: GPU Bare Metal
    x-displayName: GPU Bare Metal
  - name: GPU Virtual
    x-displayName: GPU Virtual
  - name: IP Ranges
    x-displayName: IP Ranges
  - name: Images
    x-displayName: Images
  - name: Instances
    x-displayName: Instances
  - name: Load Balancers
    x-displayName: Load Balancers
  - name: Logging
    x-displayName: Logging
  - name: Managed Kubernetes
    x-displayName: Managed Kubernetes
  - name: Managed PostgreSQL
    x-displayName: Managed PostgreSQL
  - name: Networks
    x-displayName: Networks
  - name: Placement Groups
    x-displayName: Placement Groups
  - name: Projects
    x-displayName: Projects
  - name: Quotas
    x-displayName: Quotas
  - name: Regions
    x-displayName: Regions
  - name: Registry
    x-displayName: Registry
  - name: Reservations
    x-displayName: Reservations
  - name: Reserved IPs
    x-displayName: Reserved IPs
  - name: Routers
    x-displayName: Routers
  - name: SSH Keys
    x-displayName: SSH Keys
  - name: Secrets
    x-displayName: Secrets
  - name: Security Groups
    x-displayName: Security Groups
  - name: Snapshot Schedules
    x-displayName: Snapshot Schedules
  - name: Snapshots
    x-displayName: Snapshots
  - name: Tasks
    x-displayName: Tasks
  - name: User Actions
    x-displayName: User Actions
  - name: User Role Assignments
    x-displayName: User Role Assignments
  - name: Volumes
    x-displayName: Volumes
paths:
  /cloud/v1/lbpools/{project_id}/{region_id}:
    post:
      tags:
        - Load Balancers
      summary: Create load balancer pool
      operationId: LoadBalancerPoolViewSet.post
      parameters:
        - in: path
          name: project_id
          required: true
          description: Project ID
          schema:
            description: Project ID
            example: 1
            examples:
              - 1
            title: Project Id
            type: integer
        - in: path
          name: region_id
          required: true
          description: Region ID
          schema:
            description: Region ID
            example: 1
            examples:
              - 1
            exclusiveMinimum: 0
            title: Region Id
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLbPoolSerializer'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskIDsSerializer'
      x-codeSamples:
        - lang: Python
          source: |-
            import os
            from gcore import Gcore

            client = Gcore(
                api_key=os.environ.get("GCORE_API_KEY"),  # This is the default and can be omitted
            )
            task_id_list = client.cloud.load_balancers.pools.create(
                project_id=1,
                region_id=1,
                lb_algorithm="ROUND_ROBIN",
                name="pool_name",
                protocol="HTTP",
            )
            print(task_id_list.tasks)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/G-Core/gcore-go\"\n\t\"github.com/G-Core/gcore-go/cloud\"\n\t\"github.com/G-Core/gcore-go/option\"\n)\n\nfunc main() {\n\tclient := gcore.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\ttaskIDList, err := client.Cloud.LoadBalancers.Pools.New(context.TODO(), cloud.LoadBalancerPoolNewParams{\n\t\tProjectID:   gcore.Int(1),\n\t\tRegionID:    gcore.Int(1),\n\t\tLbAlgorithm: cloud.LbAlgorithmRoundRobin,\n\t\tName:        \"pool_name\",\n\t\tProtocol:    cloud.LbPoolProtocolHTTP,\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", taskIDList.Tasks)\n}\n"
components:
  schemas:
    CreateLbPoolSerializer:
      properties:
        ca_secret_id:
          anyOf:
            - format: uuid4
              type: string
            - type: 'null'
          description: Secret ID of CA certificate bundle
          title: Ca Secret Id
        crl_secret_id:
          anyOf:
            - format: uuid4
              type: string
            - type: 'null'
          description: Secret ID of CA revocation list file
          title: Crl Secret Id
        healthmonitor:
          anyOf:
            - $ref: '#/components/schemas/CreateLbHealthMonitorSerializer'
            - type: 'null'
          default: null
          description: Health monitor details
          examples:
            - delay: 10
              domain_name: example.com
              http_method: GET
              http_version: '1.1'
              max_retries: 3
              max_retries_down: 3
              timeout: 5
              type: HTTP
              url_path: /
        lb_algorithm:
          $ref: '#/components/schemas/LbAlgorithmEnum'
          description: Load balancer algorithm
          examples:
            - ROUND_ROBIN
        listener_id:
          anyOf:
            - format: uuid4
              type: string
            - type: 'null'
          default: null
          description: Listener ID
          title: Listener Id
        load_balancer_id:
          anyOf:
            - format: uuid4
              type: string
            - type: 'null'
          default: null
          description: Loadbalancer ID
          examples:
            - bbb35f84-35cc-4b2f-84c2-a6a29bba68aa
          title: Load Balancer Id
        members:
          description: Pool members
          example:
            - address: 192.168.1.101
              instance_id: a7e7e8d6-0bf7-4ac9-8170-831b47ee2ba9
              protocol_port: 8000
              weight: 2
            - address: 192.168.1.102
              instance_id: 169942e0-9b53-42df-95ef-1a8b6525c2bd
              protocol_port: 8000
              weight: 4
          examples:
            - - address: 192.168.1.101
                instance_id: a7e7e8d6-0bf7-4ac9-8170-831b47ee2ba9
                protocol_port: 8000
                weight: 2
              - address: 192.168.1.102
                instance_id: 169942e0-9b53-42df-95ef-1a8b6525c2bd
                protocol_port: 8000
                weight: 4
          items:
            $ref: '#/components/schemas/CreateLbPoolMemberSerializer'
          title: Members
          type: array
        name:
          description: Pool name
          example: pool_name
          examples:
            - pool_name
          pattern: ^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$
          title: Name
          type: string
        protocol:
          $ref: '#/components/schemas/LbPoolProtocolEnum'
          description: Protocol
          examples:
            - HTTP
        secret_id:
          anyOf:
            - format: uuid4
              type: string
            - type: 'null'
          description: Secret ID for TLS client authentication to the member servers
          title: Secret Id
        session_persistence:
          anyOf:
            - $ref: '#/components/schemas/MutateLbSessionPersistence'
            - type: 'null'
          default: null
          description: Session persistence details
          examples:
            - cookie_name: cookie_name
              type: APP_COOKIE
        timeout_client_data:
          anyOf:
            - maximum: 86400000
              minimum: 0
              type: integer
            - type: 'null'
          default: null
          deprecated: true
          description: >-
            Frontend client inactivity timeout in milliseconds. We are
            recommending to use `listener.timeout_client_data` instead.
          examples:
            - 50000
          title: Timeout Client Data
        timeout_member_connect:
          anyOf:
            - maximum: 86400000
              minimum: 0
              type: integer
            - type: 'null'
          default: null
          description: Backend member connection timeout in milliseconds
          examples:
            - 50000
          title: Timeout Member Connect
        timeout_member_data:
          anyOf:
            - maximum: 86400000
              minimum: 0
              type: integer
            - type: 'null'
          default: null
          description: Backend member inactivity timeout in milliseconds
          title: Timeout Member Data
      required:
        - name
        - lb_algorithm
        - protocol
      title: CreateLbPoolSerializer
      type: object
    TaskIDsSerializer:
      properties:
        tasks:
          description: >-
            List of task IDs representing asynchronous operations. Use these IDs
            to monitor operation progress:

            - `GET /v1/tasks/{task_id}` - Check individual task status and
            details

            Poll task status until completion (`FINISHED`/`ERROR`) before
            proceeding with dependent operations.
          example:
            - d478ae29-dedc-4869-82f0-96104425f565
          examples:
            - - d478ae29-dedc-4869-82f0-96104425f565
          items:
            type: string
          title: Tasks
          type: array
      required:
        - tasks
      title: TaskIDsSerializer
      type: object
    CreateLbHealthMonitorSerializer:
      properties:
        admin_state_up:
          description: >-
            Administrative state of the resource. When set to true, the resource
            is enabled and operational. When set to false, the resource is
            disabled and will not process traffic. Defaults to true.
          example: true
          examples:
            - true
            - false
          title: Admin State Up
          type: boolean
        delay:
          description: The time, in seconds, between sending probes to members
          example: 10
          examples:
            - 10
          maximum: 2147483647
          minimum: 1
          title: Delay
          type: integer
        domain_name:
          anyOf:
            - pattern: ^[A-Za-z0-9._-]{1,253}$
              type: string
            - type: 'null'
          description: >-
            Domain name for HTTP host header. Can only be used together with
            `HTTP` or `HTTPS` health monitor type.
          examples:
            - example.com
          title: Domain Name
        expected_codes:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: >-
            Expected HTTP response codes. Can be a single code or a range of
            codes. Can only be used together with `HTTP` or `HTTPS` health
            monitor type. For example, 200,202,300-302,401,403,404,500-504. If
            not specified, the default is 200.
          examples:
            - 200,301,302
          title: Expected Codes
        http_method:
          anyOf:
            - $ref: '#/components/schemas/HttpMethodEnum'
            - type: 'null'
          default: null
          description: >-
            HTTP method. Can only be used together with `HTTP` or `HTTPS` health
            monitor type.
          examples:
            - CONNECT
            - DELETE
            - GET
            - HEAD
            - OPTIONS
            - PATCH
            - POST
            - PUT
            - TRACE
        http_version:
          anyOf:
            - enum:
                - '1.0'
                - '1.1'
              type: string
            - type: 'null'
          description: >-
            HTTP version. Can only be used together with `HTTP` or `HTTPS`
            health monitor type. Supported values: 1.0, 1.1.
          examples:
            - '1.1'
            - '1.0'
          title: Http Version
        max_retries:
          description: Number of successes before the member is switched to ONLINE state
          example: 2
          examples:
            - 2
          maximum: 10
          minimum: 1
          title: Max Retries
          type: integer
        max_retries_down:
          description: Number of failures before the member is switched to ERROR state.
          example: 2
          examples:
            - 2
          maximum: 10
          minimum: 1
          title: Max Retries Down
          type: integer
        timeout:
          description: The maximum time to connect. Must be less than the delay value
          example: 5
          examples:
            - 5
          maximum: 2147483
          title: Timeout
          type: integer
        type:
          $ref: '#/components/schemas/HealthMonitorTypeEnum'
          description: >-
            Health monitor type. Once health monitor is created, cannot be
            changed.
          examples:
            - HTTP
            - HTTPS
            - PING
            - TCP
            - TLS_HELLO
            - UDP_CONNECT
            - K8S
        url_path:
          anyOf:
            - pattern: ^/([^/?#%][^?#%]*)?$
              type: string
            - type: 'null'
          default: null
          description: >-
            The HTTP path the health monitor requests on each member. Defaults
            to `/` if not set. Can only be used with `HTTP` or `HTTPS` health
            monitor type.


            Must start with `/` and contain only plain path segments. Query
            strings (`?`), fragments (`#`), percent-encoding (`%`), and
            consecutive slashes (`//`) are not allowed.


            Examples of valid paths:

            - `/` — check the root (most common, default)

            - `/healthz` — a dedicated health endpoint
          examples:
            - /
            - /healthz
          title: Url Path
      required:
        - delay
        - max_retries
        - timeout
        - type
      title: CreateLbHealthMonitorSerializer
      type: object
    LbAlgorithmEnum:
      enum:
        - LEAST_CONNECTIONS
        - ROUND_ROBIN
        - SOURCE_IP
      title: LbAlgorithmEnum
      type: string
    CreateLbPoolMemberSerializer:
      properties:
        address:
          description: Member IP address
          example: 192.168.40.33
          examples:
            - 192.168.40.33
          format: ipvanyaddress
          title: Address
          type: string
        admin_state_up:
          default: true
          description: >-
            Administrative state of the resource. When set to true, the resource
            is enabled and operational. When set to false, the resource is
            disabled and will not process traffic. Defaults to true.
          example: true
          examples:
            - true
          title: Admin State Up
          type: boolean
        backup:
          default: false
          description: >-
            Set to true if the member is a backup member, to which traffic will
            be sent exclusively when all non-backup members will be unreachable.
            It allows to realize ACTIVE-BACKUP load balancing without thinking
            about VRRP and VIP configuration. Default is false.
          example: true
          examples:
            - true
            - false
          title: Backup
          type: boolean
        instance_id:
          anyOf:
            - format: uuid4
              type: string
            - type: 'null'
          default: null
          description: Either `subnet_id` or `instance_id` should be provided
          examples:
            - a7e7e8d6-0bf7-4ac9-8170-831b47ee2ba9
          title: Instance Id
        monitor_address:
          anyOf:
            - format: ipvanyaddress
              type: string
            - type: 'null'
          default: null
          description: >-
            An alternate IP address used for health monitoring of a backend
            member. Default is null which monitors the member address.
          title: Monitor Address
        monitor_port:
          anyOf:
            - maximum: 65535
              minimum: 1
              type: integer
            - type: 'null'
          default: null
          description: >-
            An alternate protocol port used for health monitoring of a backend
            member. Default is null which monitors the member `protocol_port`.
          title: Monitor Port
        protocol_port:
          description: Member IP port
          example: 80
          examples:
            - 80
          maximum: 65535
          minimum: 1
          title: Protocol Port
          type: integer
        subnet_id:
          anyOf:
            - format: uuid4
              type: string
            - type: 'null'
          default: null
          description: >-
            `subnet_id` in which `address` is present. Either `subnet_id` or
            `instance_id` should be provided
          examples:
            - 32283b0b-b560-4690-810c-f672cbb2e28d
          title: Subnet Id
        weight:
          description: >-
            Member weight. Valid values are 0 < `weight` <= 256, defaults to 1.
            Controls traffic distribution based on the pool's load balancing
            algorithm:

            - `ROUND_ROBIN`: Distributes connections to each member in turn
            according to weights. Higher weight = more turns in the cycle.
            Example: weights 3 vs 1 = ~75% vs ~25% of requests.

            - `LEAST_CONNECTIONS`: Sends new connections to the member with
            fewest active connections, performing round-robin within groups of
            the same normalized load. Higher weight = allowed to hold more
            simultaneous connections before being considered 'more loaded'.
            Example: weights 2 vs 1 means 20 vs 10 active connections is treated
            as balanced.

            - `SOURCE_IP`: Routes clients consistently to the same member by
            hashing client source IP; hash result is modulo total weight of
            running members. Higher weight = more hash buckets, so more client
            IPs map to that member. Example: weights 2 vs 1 = roughly two-thirds
            of distinct client IPs map to the higher-weight member.
          example: 1
          examples:
            - 1
          exclusiveMinimum: 0
          maximum: 256
          title: Weight
          type: integer
      required:
        - protocol_port
        - address
      title: CreateLbPoolMemberSerializer
      type: object
    LbPoolProtocolEnum:
      enum:
        - HTTP
        - HTTPS
        - PROXY
        - PROXYV2
        - TCP
        - UDP
      title: LbPoolProtocolEnum
      type: string
    MutateLbSessionPersistence:
      properties:
        cookie_name:
          anyOf:
            - pattern: ^[a-zA-Z0-9][a-zA-Z 0-9._\-]{1,61}[a-zA-Z0-9._]$
              type: string
            - type: 'null'
          default: null
          description: Should be set if app cookie or http cookie is used
          examples:
            - cookie_name
          title: Cookie Name
        persistence_granularity:
          anyOf:
            - type: string
            - type: 'null'
          default: null
          description: Subnet mask if `source_ip` is used. For UDP ports only
          title: Persistence Granularity
        persistence_timeout:
          anyOf:
            - type: integer
            - type: 'null'
          default: null
          description: Session persistence timeout. For UDP ports only
          title: Persistence Timeout
        type:
          $ref: '#/components/schemas/SessionPersistenceTypeEnum'
          description: Session persistence type
          examples:
            - APP_COOKIE
      required:
        - type
      title: MutateLbSessionPersistence
      type: object
    HttpMethodEnum:
      enum:
        - CONNECT
        - DELETE
        - GET
        - HEAD
        - OPTIONS
        - PATCH
        - POST
        - PUT
        - TRACE
      title: HttpMethodEnum
      type: string
    HealthMonitorTypeEnum:
      enum:
        - HTTP
        - HTTPS
        - K8S
        - PING
        - TCP
        - TLS-HELLO
        - UDP-CONNECT
      title: HealthMonitorTypeEnum
      type: string
    SessionPersistenceTypeEnum:
      enum:
        - APP_COOKIE
        - HTTP_COOKIE
        - SOURCE_IP
      title: SessionPersistenceTypeEnum
      type: string
  securitySchemes:
    APIKey:
      description: >-
        API key for authentication. Make sure to include the word `apikey`,
        followed by a single space and then your token.

        Example: `apikey 1234$abcdef`
      type: apiKey
      in: header
      name: Authorization

````