Skip to content

Errors

Every error response has a JSON body with an error member naming the code, so branch on the code rather than on the message. Some carry more members that help you fix the request, such as the property or items at fault; the operation's reference page says which. A response without a body, such as a plain 404, means the thing you named does not exist or the key cannot see it.

Content Delivery API

CodeStatusMeaningReturned by
category_not_in_group400the category belongs to a different group from the one the filter is scoped to.Query a stream
environment_mismatch400env names a different delivery environment than the key's.List published sites, Get the locale tree, Get sitemap data
invalid_context400ctx is not a valid context bag.Get a published component
invalid_cursor400the cursor is malformed or belongs to a different order; restart from the first page.List published components, Query a stream
locale_not_addressable400the site takes its locale from the address.Resolve a path
preview_raw_unsupported400raw=true with a preview session.Resolve a path
tree_too_large400over 5,000 nodes; narrow it with from, include or maxDepth.Query the page tree
unknown_category400no category has this path or id.List published components, Query a stream
unknown_contract400no contract has this id or external id.List published components
unknown_filter_field400no field, an undeclared one, or the full-text filter. validation_failed, unknown_category and category_not_in_group as for the stream.Get a stream facet
validation_failed400an unsupported parameter value.Resolve a path, Query the page tree, Get a published component, List published components, Query a stream
invalid_preview_token401the token is spent, expired, unknown, or was minted for another delivery environment.Exchange a preview token
missing_api_key
invalid_api_key
401no key was sent, or it is unknown, revoked or expired.Any operation
app_not_available403Content is not enabled for the organization.Any operation
origin_denied
ip_denied
403a browser-safe key was used from an origin or address outside its restrictions.Any operation
preview_site_mismatch403the path is in a different site from the page being previewed.Resolve a path
scope_denied403the key lacks this route's scope.Any operation
node_not_found404from names nothing published in that site.Query the page tree
not_published404no published component has this id or external id.Get a published component
path_not_found404nothing is published at this path.Resolve a path
site_not_found404no site matches site or host.Resolve a path, Query the page tree, Get sitemap data
unknown_stream404no stream has this external id or id.Query a stream, Get a stream facet
too_many_failed_authentications429too many bad keys from this address.Any operation

Content Management API

CodeStatusMeaningReturned by
abstract_contract400an abstract contract cannot be instantiated; use one that inherits from it.Create a component
ambiguous_delivery_target400it publishes to several, listed in mappedDeliveryEnvironmentIds; name one as deliveryEnvironmentId.Plan a publish, Publish content, Resolve a draft preview, Preview a stream
category_not_in_group400the category belongs to a different group from the one the filter is scoped to.Preview a stream
cycle400the new parent is the folder itself or one of its descendants.Rename or move a folder, Update or move a category
delivery_target_not_mapped400deliveryEnvironmentId is not a delivery environment this environment publishes to.Plan a publish, Publish content, Resolve a draft preview, Preview a stream
folder_contract_constraint_violation400the folder does not allow components of this contract.Create a component, Update a component
incomplete_sibling_set400orderedNodeIds does not match the parent's current children; re-read them with GET /experience/nodes/{id}/children and retry.Reorder sibling nodes
invalid_context400ctx is not a valid context bag.Resolve a draft preview
invalid_cursor400the cursor is malformed or belongs to a different listing; restart from the first page.List the environment's items
invalid_filter_value400a date value is not YYYY-MM.Preview a stream
invalid_json400the body is not valid JSON.Export a bundle, Plan an import, Import a bundle, Plan a publish, Publish content
invalid_move400the node is a site root, or the new parent is the node itself or one of its descendants.Move a node
invalid_redirect_target400a node cannot redirect to itself.Set a node's payload
invalid_sort400sort is neither name nor updated.List components
no_delivery_target_mapped400this environment publishes to no delivery environment.Plan a publish, Publish content, Preview a stream
required_item_omitted400items the plan calls new are missing from items; the response names them.Import a bundle
reserved_path400the resulting path is reserved and cannot be used by a page.Update a node, Create a node
unknown_category400no category has this path or id.Preview a stream
unknown_property400the body has a property this API does not recognize; the response names it in property.Export a bundle, Plan an import, Import a bundle, Plan a publish, Publish content
unsupported_format_version400the bundle's formatVersion is not one this server accepts; the response gives supplied and supported.Plan an import, Import a bundle
validation_failed400an unknown kind; the response lists the valid ones.List the environment's items, Export a bundle, Plan an import, Import a bundle, Upload a blob, Find stored blobs by hash, Plan a publish, Publish content, Create a contract, Update a contract, Replace a folder's access rules, Replace a folder's allowed contracts, Create a component, Update a component, Create a template, Update a template, Create a site, Update a node, Create a node, Set a node's payload, Replace a node's access rules, Replace a node's allowed Templates, Create an audience, Update an audience, Resolve a draft preview, Create a category group, Rename a category group, Create a category, Update or move a category, Resolve a category path or id, Classify a component, Classify a page, Classify a contract, Create an adapter, Update an adapter, Preview an adapter, Create a stream, Replace a stream, Preview a stream
missing_api_key
invalid_api_key
401no key was sent, or it is unknown, revoked or expired.Any operation
payment_required402the organization's subscription needs attention.Any operation
quota_exceeded402the organization has reached its plan's category limit; quotaKey and limit say which.Create a category
access_denied403the key's role may view the parent folder but not edit it.Create a folder, Rename or move a folder, Delete a folder, Create a component, Update a component, Delete a component, Get a node, Update a node, Delete a node, List a node's children, Create a node, Move a node, Reorder sibling nodes, List what points at a node, Get where a node is used, Set a node's payload, Clear a node's payload, Resolve a draft preview, Classify a component, Classify a page
app_not_available403Content is not enabled for the organization.Any operation
ip_denied403the caller's address is outside the key's allowed ranges.Any operation
permission_denied403the key's role lacks content.contracts.manage.Create a contract, Update a contract, Delete a contract, Get a folder's access rules, Replace a folder's access rules, Get a folder's allowed contracts, Replace a folder's allowed contracts, Create a template, Update a template, Delete a template, Get a node's access rules, Replace a node's access rules, Get a node's allowed Templates, Replace a node's allowed Templates, Create an audience, Update an audience, Delete an audience, Create a category group, Rename a category group, Delete a category group, Create a category, Update or move a category, Delete a category, Classify a contract, Create an adapter, Update an adapter, Delete an adapter, Create a stream, Replace a stream, Delete a stream
quota_exceeded403the organization has reached its plan's component limit.Create a component, Create a site, Create a node
scope_denied403the key lacks this route's scope.Any operation
tier_required403the Content Management API needs the Pro plan or above.Any operation
operation_not_found404no job with this id exists in the key's environment.Get a job's status
unknown_choice_source404pluginKey is not a choice source activated for the organization.Get a choice source's options
adapter_in_use409something still uses the adapter; usages lists each as { entityKind, entityId, name, fieldPath }, where entityKind is stream, adapter, component or node. Remove those uses first.Delete an adapter
audience_in_use409a variant still refers to the audience; usages lists each as { entityKind, entityId }, where entityKind is component or node.Delete an audience
category_in_use409isSelectable: false was sent for a category that child categories, classification or field values still use; usages lists each as { sourceKind, sourceId }.Update or move a category, Delete a category
component_has_translation_jobs409a translation job for it is still in progress.Delete a component
component_published409still published in the deliveryEnvironments listed; unpublish it first.Delete a component
concurrency_conflict409the contract changed since rowVersion; the body carries currentRowVersion and currentUpdatedAtUtc, so re-read and reapply your change.Update a contract, Update a component, Update a template, Update a node, Move a node, Rename a category group, Update or move a category, Update an adapter, Replace a stream
confirm_overwrite_required409items differ from the environment and were not confirmed; they are listed in items. Re-plan before confirming.Import a bundle
contract_read_only409the contract is synced from a content provider and changes only when that provider is refreshed.Update a contract, Delete a contract, Classify a contract
duplicate_external_id409another contract in this environment already has this external id.Create a contract, Update a contract, Create a component, Create a template, Update a template, Create an adapter, Create a stream
duplicate_site_name409a site with this name already exists in the environment.Create a site, Update a node
duplicate_slug409a sibling already resolves to this slug; localeSlot and conflictingNodeId say where.Update a node, Create a node, Move a node
group_not_empty409the group still has categories.Delete a category group
group_referenced_by_field409a contract's category field still names this group in its allowed groups.Delete a category group
has_dependents409other data depends on this contract. blockers groups the dependents' ids by reason: has_children, has_components (a count), referenced_by_folder_constraints, referenced_by_template_constraints, referenced_by_template_settings, referenced_by_adapter_constraints, referenced_by_streams and referenced_by_field_constraints.Delete a contract, Delete a template, Delete a node
import_blocked409the plan has blockers, listed in blockers.Import a bundle
inherited_read_only409the contract is inherited from another environment (sourceEnvironmentId); edit it there.Update a contract, Delete a contract, Rename or move a folder, Delete a folder, Update a component, Delete a component, Update a template, Delete a template, Update an audience, Delete an audience, Rename a category group, Delete a category group, Create a category, Update or move a category, Delete a category, Classify a component, Classify a contract, Update an adapter, Delete an adapter, Replace a stream, Delete a stream
node_published409the node is live in the delivery environments deliveryEnvironments names; unpublish it there first.Delete a node
not_empty409the folder contains child folders or components.Delete a folder, Delete a node
referenced_by409still referenced; usages lists the components and pages that reference it and adapters the Adapters that look it up.Delete a component
taxonomy_read_only409the group or category comes from a content provider and changes only when that provider is refreshed.Rename a category group, Delete a category group, Create a category, Update or move a category, Delete a category
blob_too_large413the upload is over the size limit given in maxBytes.Upload a blob
adapter_invalid422the adapter cannot be saved. errors lists each problem as { path, code, message }: invalid_rules (the rules are not well-formed), contract_not_found (the input or output contract does not exist), nested_adapter_not_found (a nested rule names an adapter that does not exist in this environment), and the type-compatibility and coverage problems /adapters/validate reports.Create an adapter, Update an adapter, Validate an adapter
contract_not_found422the input or output contract (or that input contract version) does not exist.Validate an adapter
invalid_rules422the rules are not well-formed.Validate an adapter, Preview an adapter
stream_invalid422the definition cannot be saved. errors lists each problem as { target, code, message }, for example source_contracts_required, too_many_source_contracts, contract_not_found, adapter_not_found, stream_adapter_input_unsatisfied (a source contract does not satisfy the adapter's input contract), invalid_field_path, invalid_resolve_depth, too_many_exclusions, too_many_filters, duplicate_filter_key, unknown_filter_type, multiple_fulltext_filters and unknown_category_group.Create a stream, Replace a stream
workflow_state_not_editable422the component's workflow state (state, in definition) does not allow edits; move it to an editable state first.Update a component, Update a node, Set a node's payload, Clear a node's payload
quota_exceeded429the organization's blob storage quota is full; the response gives the quota key and its limit. Rate limit or quota exceeded; Retry-After says how long to wait.Upload a blob
too_many_failed_authentications429too many bad keys from this address.Any operation
choice_source_failed502the source is unavailable or failed; message carries its own explanation. Check the source's configuration.Get a choice source's options
bulk_operations_paused503background jobs are temporarily paused. Retry later.Plan a publish, Publish content

Forms SDK API

CodeStatusMeaningReturned by
missing_api_key
invalid_api_key
401no key was sent, or it is unknown, revoked or expired.Any operation
payment_required402the organization's subscription needs attention.Any operation
ip_denied403the caller's address is outside the key's allowed ranges.Any operation
scope_denied403the key lacks forms.sdk.forms.read.Any operation
submission_key_clash409two fields share a submission key. clashingKeys names them; fix it in the Forms editor.Get a form
too_many_failed_authentications429too many bad keys from this address.Any operation