> ## 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 health monitor

> Creates a health monitor for a load balancer pool to automatically check the health status
of pool members. The health monitor performs periodic checks on pool members and removes
unhealthy members from rotation, ensuring only healthy servers receive traffic.



## OpenAPI

````yaml /api-reference/services_documented/cloud_api.yaml post /cloud/v1/lbpools/{project_id}/{region_id}/{pool_id}/healthmonitor
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}/{pool_id}/healthmonitor:
    post:
      tags:
        - Load Balancers
      summary: Create load balancer pool health monitor
      description: >-
        Creates a health monitor for a load balancer pool to automatically check
        the health status

        of pool members. The health monitor performs periodic checks on pool
        members and removes

        unhealthy members from rotation, ensuring only healthy servers receive
        traffic.
      operationId: LoadBalancerPoolInstanceHealthMonitorViewSet.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
        - in: path
          name: pool_id
          required: true
          description: Pool ID
          schema:
            description: Pool ID
            example: 00000000-0000-4000-8000-000000000000
            examples:
              - 00000000-0000-4000-8000-000000000000
            format: uuid4
            title: Pool Id
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateLbHealthMonitorSerializer'
      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.health_monitors.create(
                pool_id="00000000-0000-4000-8000-000000000000",
                project_id=1,
                region_id=1,
                delay=10,
                max_retries=2,
                api_timeout=5,
                type="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.HealthMonitors.New(\n\t\tcontext.TODO(),\n\t\t\"00000000-0000-4000-8000-000000000000\",\n\t\tcloud.LoadBalancerPoolHealthMonitorNewParams{\n\t\t\tProjectID:  gcore.Int(1),\n\t\t\tRegionID:   gcore.Int(1),\n\t\t\tDelay:      10,\n\t\t\tMaxRetries: 2,\n\t\t\tTimeout:    5,\n\t\t\tType:       cloud.LbHealthMonitorTypeHTTP,\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", taskIDList.Tasks)\n}\n"
components:
  schemas:
    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
    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
    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
  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

````