Preview — pending review
This reference is generated from the platform API contract and is still under review. Operations, fields, and descriptions can change before publication.
Attach health monitor to a backend pool
Attaches a health monitor to one backend pool ("Add health monitor" in the Backend pools tab). The
monitor (type HTTP | HTTPS | TCP | PING, probe delay, timeout, maxRetries, plus urlPath /
expectedCodes for the HTTP(S) types) is programmed on the provider, after which the pool reports a real
health state instead of NO_MONITOR.
Validation: parent LB and pool must exist in the scope (404 NOT_FOUND); the LB must not be
mid-create/mid-delete (409 CONFLICT); the pool must not already carry a monitor (409 CONFLICT — edit or
delete the existing one instead); urlPath / expectedCodes are only valid for the HTTP/HTTPS monitor
types (422 VALIDATION_FAILED).
Async & state: Asynchronous. Returns 202 with the transitional LbHealthMonitor while the parent LB
passes through provisioning=PENDING_UPDATE → ACTIVE, emitting resource.updated SSE frames (kind
"network.load_balancer", patch to pools).
Errors: 401 unauthenticated; 403 insufficient role; 404 unknown LB or pool; 409 state conflict or a
monitor already attached; 422 invalid fields; 500 backend failure.
Idempotency/Concurrency: Idempotency-Key required; replays return the first outcome.
bearerTokenAuthorizationBearer <token>An API token (pc_live_…) or a service-account key (sak_live_…), created in Identity & Access Management and sent as Authorization: Bearer <token>. Requests are rate limited per credential and per tenant: every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset, and a refused request gets 429 RATE_LIMITED with Retry-After.
scopeId*stringOpaque ownership+authorization scope resolving to tenant + subscription + project.
loadBalancerId*stringpoolId*stringIdempotency-Key*stringRequired: this operation creates a new resource asynchronously, so a retry without the key would create a second one. Same key+body within 24h replays the original result; the same key with a different body is 409 CONFLICT. Keys are unique per tenant (the same key in two tenants is two different requests). An API token or service-account (bearer) caller MUST send it -- a request without it is refused with 400 IDEMPOTENCY_KEY_REQUIRED (ErrIdempotencyKeyRequired); reuse the same key on every retry of one logical request. A console session gets one from the edge.
uuidapplication/json- body
Health monitor configuration from the create-load-balancer wizard (step 5).
type*HealthMonitorTypeHealth monitor probe type.
"HTTP""HTTPS""TCP""PING"delay*integer5timeout*integer3maxRetries*integer3urlPath?|Only for HTTP/HTTPS monitor types.
"/healthz"expectedCodes?|Only for HTTP/HTTPS monitor types.
"200"Attach accepted; the transitional monitor is returned.
application/json- response
Health monitor attached to a load-balancer pool.
id*stringtype*HealthMonitorTypeHealth monitor probe type.
"HTTP""HTTPS""TCP""PING"delay*integerProbe interval in seconds.
timeout*integerProbe timeout in seconds.
maxRetries*integerhttpMethod*string|nullurlPath*string|nullexpectedCodes*|Expected HTTP status codes, e.g. "200".
operating*LbOperatingOperating (health) state of a load balancer or one of its sub-resources.
"ONLINE""DEGRADED""OFFLINE""ERROR""NO_MONITOR"curl -X POST "https://example.com/scopes/string/network/load-balancers/string/pools/string/monitor" \ -H "Idempotency-Key: 497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{ "type": "HTTP", "delay": 5, "timeout": 3, "maxRetries": 3 }'{ "id": "string", "type": "HTTP", "delay": 0, "timeout": 0, "maxRetries": 0, "httpMethod": "string", "urlPath": "string", "expectedCodes": "string", "operating": "ONLINE"}