Skip to content

Move a domain onto an ingress group or back to one node

POST
/api/domains/{id}/ingress-placement
curl --request POST \
--url https://gateway.example.com/api/domains/550e8400-e29b-41d4-a716-446655440000/ingress-placement \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "ingressGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "nginxNodeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }'

Moves the domain, every route on it and every related registered domain. Onto a group (ingressGroupId): the domain’s current node must be a member and keeps serving; config and certificates reach the other members first, then Cloudflare-managed DNS records become the union of the active members’ addresses (round robin, no health checks: DNS failover mode none). External DNS stays the operator’s: list the members’ addresses there. Back to one node (ingressGroupId null, nginxNodeId a current member): DNS first, then the routes leave the other members. A domain that backs the Pages wildcard profile stays on one node. Onto a group requires domains:create for every member and the multi-node availability entitlement.

id
required
string
>= 1 characters
Example
550e8400-e29b-41d4-a716-446655440000

JSON request body

Media typeapplication/json
object
ingressGroupId
required
string | null format: uuid
nginxNodeId
string format: uuid
Examplegenerated
{
"ingressGroupId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"nginxNodeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"
}

Successful response

Media typeapplication/json
object
data
required

Resource object. Exact fields depend on the endpoint.

object
id
string
name
string
key
additional properties
Example
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"domain": "app.example.com",
"dnsStatus": "valid",
"proxyHostCount": 1
}
}

Bad request

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"details": [
{
"path": [
"name"
],
"message": "Required"
}
]
}

Authentication required

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "UNAUTHORIZED",
"message": "Authentication required"
}

Forbidden

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "FORBIDDEN",
"message": "Insufficient permissions"
}

Not found

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "NOT_FOUND",
"message": "Resource not found"
}

Conflict

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "CONFLICT",
"message": "Resource already exists"
}

Unprocessable entity

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "UNPROCESSABLE_ENTITY",
"message": "Request could not be processed"
}

Internal server error

Media typeapplication/json
object
code
required

Error code

string
message
required

Human-readable error message

string
details

Additional error details

Example
{
"code": "INTERNAL_ERROR",
"message": "Internal server error"
}