Skip to content

Create a node

POST
/content/management/v1/experience/nodes
curl --request POST \
--url https://api.ebitex.io/content/management/v1/experience/nodes \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "parentNodeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "name": "example", "slug": "example" }'

Creates a page under parentNodeId, with a name and a slug ({ "default": "about-us", "locales": { "fr": "a-propos" } }; locales may be empty). Slug values are lowercase kebab-case, 3 to 64 characters, and must be unique among siblings in every locale. The node is added at the end of its parent’s children.

A new node has no payload, so it is an address with nothing to serve until you set one with PUT /experience/nodes/{id}/payload. To create a site, use POST /experience/sites. Nothing here reaches delivery until the node is published.

The key’s role needs edit on the parent.

Key: a management key with content.management.authoring.

Media typeapplication/json
object
parentNodeId
required
string format: uuid
name
required
string
slug
required
Examplegenerated
{
"parentNodeId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"name": "example",
"slug": "example"
}

Created. The new node, in the shape GET /experience/nodes/{id} returns.

validation_failed: a missing name or slug, or a malformed slug; errors names each field. reserved_path: the resulting path is reserved and cannot be used by a page.

missing_api_key or invalid_api_key: no key was sent, or it is unknown, revoked or expired.

payment_required: the organization’s subscription needs attention.

access_denied: the key’s role may not edit the parent. quota_exceeded: the organization has reached its plan’s limit on Experience nodes.

scope_denied: the key lacks this route’s scope. tier_required: the Content Management API needs the Pro plan or above. ip_denied: the caller’s address is outside the key’s allowed ranges. app_not_available: Content is not enabled for the organization.

No node has the id parentNodeId, or the key’s role cannot see it.

duplicate_slug: a sibling already resolves to this slug; localeSlot and conflictingNodeId say where.

Rate limit or quota exceeded; Retry-After says how long to wait. too_many_failed_authentications: too many bad keys from this address.