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.
Allocate a new floating IP
Allocates a public IPv4 address from an external network pool into the active scope, driven by the
the floating IP creation form submission. Inputs mirror the visible form: region (fixed to the active scope's
region), allocation pool, and an optional immediate association target. Floating IPs are billed
pay-as-you-go only: billingCycle may be omitted (it defaults to pay-as-you-go). On acceptance the address becomes discoverable in the scoped
list; when associateTo is omitted the address is created unassociated (status DOWN) and billed at
the same rate as an associated one.
Validation: scope must be active and writable by the caller (contributor or higher) → 403
FORBIDDEN otherwise; pool must name an existing external pool → 422 VALIDATION_FAILED; billingCycle,
when given, must be pay-as-you-go → monthly / yearly are refused 422 VALIDATION_FAILED; associateTo, when present, must reference an
instance/port reachable in the scope → 404 NOT_FOUND; floating-IP quota for the subscription must not
be exhausted → 409 QUOTA_EXCEEDED; pool address exhaustion → 409 CAPACITY_UNAVAILABLE.
Async & state: Asynchronous: returns 202 with the FloatingIp resource in its transitional state
(status DOWN, fixedIp/instance/port/router null until association completes). The backend emits
resource.updated SSE frames (kind: network.floating_ip, patch: {status, fixedIp, instance, port,
router}) as allocation and the optional association settle; terminal states are ACTIVE (associated)
or DOWN (allocated, unassociated).
Errors: 401 unauthenticated; 403 missing create permission; 404 unknown associate target; 409
QUOTA_EXCEEDED when the scope's floating-IP quota is reached; 409 CAPACITY_UNAVAILABLE when the pool
has no free addresses; 422 invalid body; 429 rate limited; 500 internal failure.
Idempotency/Concurrency: Idempotency-Key is required; replaying the same key returns the original
202 result with the same FloatingIp id instead of allocating a second address.
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.
Idempotency-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
The floating IP creation form submission — allocate a public address from an external pool.
pool*stringExternal network pool to allocate from (UI default public-ext-net).
billingCycle?stringOptional; defaults to pay-as-you-go, the only cycle a floating IP is offered on (it is metered hourly at the network.floatingip price; there is no reserved pricing). monthly and yearly are REFUSED with 422 VALIDATION_FAILED (field billingCycle) rather than accepted and ignored.
"pay-as-you-go""pay-as-you-go""monthly""yearly"associateTo?|Optional instance/port to associate immediately; null or omitted leaves the address unassociated.
Allocation accepted; floating IP returned in its transitional state.
application/json- response
A public floating IP allocation (list/detail core record, mirrors the FloatingIP interface).
origin?stringWhere the resource was made -- portal for a create on the console, api for an object made straight against the OpenStack API (CLI, Terraform, the Kubernetes cloud provider) that discovery adopted. Informational; nothing behaves differently. Absent from a backend that predates it, which means portal.
"portal""api""system""imported"id*stringStable identifier of the floating IP (e.g. fip-01).
ip*stringThe public IPv4 address (e.g. 203.0.113.42).
status*stringACTIVE when associated with a port; DOWN when allocated but unassociated.
"ACTIVE""DOWN"fixedIp*|Private fixed IP of the associated port; null when unassociated.
pool*stringExternal network pool the address was allocated from (e.g. public-ext-net).
instance*|Name of the associated instance or VIP owner; null when unassociated.
port*|Name of the associated port; null when unassociated.
router*|Router carrying the association; null when unassociated.
createdAt*stringAllocation timestamp (ISO 8601).
date-timecurl -X POST "https://example.com/scopes/string/network/floating-ips" \ -H "Idempotency-Key: 497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{ "pool": "string" }'{ "origin": "portal", "id": "string", "ip": "string", "status": "ACTIVE", "fixedIp": "string", "pool": "string", "instance": "string", "port": "string", "router": "string", "createdAt": "2019-08-24T14:15:22Z"}