Optimizely Content API

Manage content items including articles and other content types within the CMP content repository.

Business capability
Content Management AE-170.70

Operations 27

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /content List items in the CMP content repository · List content #
Ask an LLM
“What content items are sitting in my Optimizely CMP content repository?”
“Can I page through the CMP content library with a limit and offset?”
Tell an agent
List everything in the CMP content repository.
Show {limit} CMP content items starting after the first {offset}.
POST /content Import a content item from a URL · Import content #
Ask an LLM
“How do I ingest an article into the content library just by giving its URL?”
“Does importing content from a link happen right away or is it queued?”
Tell an agent
Import the page at {original_url} as a new content item.
Queue {original_url} for content ingestion.
GET /content/{contentId} Get a CMP content item's details · Get a content item #
Ask an LLM
“How can I look up the details of a single item in the CMP content repository?”
“What does the CMP return for one content item when I know its content ID?”
Tell an agent
Get CMP content item {contentId}.
Show me the repository details for CMP content {contentId}.
GET /api/v2/content/PageByType Get a storefront page by its page type · Content page by type #
Ask an LLM
“How do I fetch the storefront page definition for a given page type like the home page?”
“Can I load a Configured Commerce page just by knowing its type name?”
Tell an agent
Load the storefront page of type {type}.
Get the page content for the {type} page type.
GET /api/v2/content/PagesByParent List storefront pages under a parent node · Content pages by parent #
Ask an LLM
“Which storefront pages sit underneath a given parent node in the page tree?”
“Can I get all child pages of a node in the commerce site structure?”
Tell an agent
List the storefront pages under parent node {parentNodeId}.
Show all pages whose parent is node {parentNodeId}.
GET /api/v2/content/PageByUrl Get a storefront page by its URL · Content page by url #
Ask an LLM
“How do I resolve a storefront URL path to the page that renders it?”
“Can I fetch a commerce page's content when all I have is its URL?”
Tell an agent
Get the storefront page served at {url}.
Resolve URL {url} to its page content.
GET /api/v2/content/PageUrlByType Look up the URL of a storefront page type · Content page url by type #
Ask an LLM
“What URL does the storefront use for a particular page type, say the cart page?”
“Can I find out where a page type lives so I can link to it?”
Tell an agent
Give me the URL of the {type} page.
Find the storefront link for page type {type}.
GET /api/v2/content/GetNodeIdForPageName Find the node ID for a storefront page name · Content get node id for page name #
Ask an LLM
“How do I find the content node ID behind a page when I only know its name?”
“Which node ID corresponds to a named storefront page?”
Tell an agent
Look up the node ID for the page named {pageName}.
Get the content node for page {pageName}.
GET /api/v2/content/Theme Get the storefront's current theme · Content theme async #
Ask an LLM
“Which theme is my commerce storefront currently using?”
“Can I read the active site theme so my headless front end matches it?”
Tell an agent
Get the active storefront theme.
Tell me which theme the site is set to.
GET /content/{contentId}/children List child items of a content item · Get content children #
Ask an LLM
“How do I walk down a CMS page tree to see the items beneath a page?”
“Can I skip and limit results when listing a content item's children in a given language?”
Tell an agent
List the child items of content {contentId}.
Show {top} children of content {contentId} in {language}, skipping the first {skip}.
GET /content/{contentId}/ancestors List the ancestors of a content item · Get content ancestors #
Ask an LLM
“How can I get the chain of parent items from the root down to a content item?”
“What calls give me a breadcrumb trail for a CMS page by its content ID?”
Tell an agent
Get the ancestor path for content {contentId}.
Build a breadcrumb for content {contentId} in {language}.
POST / Create a new content item in the CMS · Create a content item #
Ask an LLM
“How do I create a new page or block of a given content type under a parent in Optimizely CMS?”
“Can I create a language branch of existing content instead of a brand-new item?”
Tell an agent
Create a {contentType} named {name} under parent {parentLink}.
Create content {name} of type {contentType} under {parentLink}, scheduled to publish at {startPublish}.
GET /{contentGuid} Get a content item by its GUID · Get content by GUID #
Ask an LLM
“How do I fetch the primary draft or latest published version of content using its GUID?”
“Can I read a CMS item for editing when I only have its GUID?”
Tell an agent
Get the content item with GUID {contentGuid}.
Load the current draft of content {contentGuid} for editing.
PUT /{contentGuid} Replace or upsert a content item by GUID · Update content by GUID #
Ask an LLM
“How do I overwrite a whole content item by GUID, creating it if it doesn't exist?”
“Will a full update by GUID create new content when nothing matches that GUID?”
Tell an agent
Upsert content {contentGuid} as {contentType} named {name} under {parentLink}.
Fully replace content {contentGuid} and set its status to {status}.
PATCH /{contentGuid} Change a few fields on a content item · Partially update content by GUID #
Ask an LLM
“Can I update just the name or status of a content item without resending everything?”
“How do I tweak a single property on a CMS page identified by GUID?”
Tell an agent
Rename content {contentGuid} to {name}.
Set only the status of content {contentGuid} to {status}.
DELETE /{contentGuid} Trash or permanently delete content · Delete content by GUID #
Ask an LLM
“How do I delete a CMS item by its GUID?”
“Does deleting content send it to the trash bin, or can I skip the trash and remove it for good?”
Tell an agent destructive · confirm first
Move content {contentGuid} to the trash.
Permanently delete content {contentGuid} with permanent set to {permanent}.
POST /{contentGuid}/move Move a content item under a new parent · Move content #
Ask an LLM
“How do I relocate a page so it becomes a child of a different node?”
“Can I restructure my CMS tree by moving an item to another parent?”
Tell an agent
Move content {contentGuid} under {destination}.
Reparent item {contentGuid} to node {destination}.
GET /{contentReference} Get a content item by its numeric reference · Get content by reference #
Ask an LLM
“How do I fetch a CMS item using its numeric content reference rather than a GUID?”
“What comes back when I look content up by reference ID in the management API?”
Tell an agent
Get content by reference {contentReference}.
Look up the item whose content reference is {contentReference}.
GET /api/episerver/v3.0/content/{contentIdentifier} Deliver a content item by reference or GUID · Get content by given content reference or unique identifier and language #
Ask an LLM
“How do I read published content through the Content Delivery API in a specific language?”
“Can I choose which properties to return or expand when delivering a single content item?”
Tell an agent
Deliver content {contentIdentifier} in {language}.
Fetch delivered content {contentIdentifier} returning only {select}.
GET /api/episerver/v3.0/content/{contentIdentifier}/children Deliver the children of a content item · Get the children of the content item by given content reference or unique… #
Ask an LLM
“Which children does a page have when read through the Content Delivery API?”
“Can I page children with a continuation token in the delivery API?”
Tell an agent
Deliver the children of {contentIdentifier} in {language}.
Get up to {top} delivered child items of {contentIdentifier}.
GET /api/episerver/v3.0/content/{contentIdentifier}/ancestors Deliver the ancestors of a content item · Get the ancestors of the content item by given content reference or unique… #
Ask an LLM
“How do I get a page's parents through the Content Delivery API for site navigation?”
“Can the delivery API return ancestors localized to a given language?”
Tell an agent
Deliver the ancestors of {contentIdentifier}.
List delivered parent pages of {contentIdentifier} in {language}.
GET /api/episerver/v3.0/content Deliver content by URL or a list of IDs · Get content by given content url or by list of GUID/Reference with given… #
Ask an LLM
“How do I get published content from its full URL through the delivery API?”
“Can I fetch several content items at once by passing a comma-separated list of GUIDs?”
Tell an agent
Deliver the content at {ContentUrl}, matching the URL exactly.
Deliver the content items with GUIDs {Guids}.
POST /content/_filter Search content items with a Lucene query · Search content #
Ask an LLM
“How do I filter the content library with a Lucene query?”
“Can content search results include topic information and be paginated?”
Tell an agent
Search content matching the Lucene query {query}.
Run content filter {query} and return page {page} with {rpp} results per page.
GET /content/{id} Fetch a recommendations content item by ID · Fetch content by ID #
Ask an LLM
“How do I see the title, abstract and approval status of an ingested content item?”
“Can I check whether an ingested article is featured or approved?”
Tell an agent
Fetch ingested content item {id}.
Show whether content {id} is approved and featured.
PATCH /content/{id} Approve or feature an ingested content item · Update content #
Ask an LLM
“How do I mark an ingested article as approved?”
“Which fields can I actually change on a content item - just approved and featured?”
Tell an agent
Set approved to {approved} on content {id}.
Mark content {id} as featured: {featured}.
GET /content/{id}/sections List the sections that contain a content item · List content sections #
Ask an LLM
“Which sections is a given content item included in?”
“Can I see every section an article appears in?”
Tell an agent
List the sections containing content {id}.
Show where content {id} is placed across sections.

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/optimizely:optimizely-content-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

optimizely-content-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Optimizely Content API
  version: '1.0'
  description: 'Operations tagged Content across 6 of this provider''s published API definitions: optimizely-cmp-openapi.yml, optimizely-configured-commerce-storefront-api-v2-openapi.json, optimizely-content-delivery-openapi.yml, optimizely-content-management-openapi.yml, optimizely-content-management-system-episervercontentapidocs-openapi.json, optimizely-recommendations-public-api-spec-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.cmp.optimizely.com/v0
  description: Optimizely CMP API Server
- url: https://dogfood.commerce.insitesandbox.com
- url: '{siteUrl}/api/episerver/v3.0'
  description: Optimizely CMS Content Delivery API endpoint
  variables:
    siteUrl:
      default: https://www.example.com
      description: The base URL of the Optimizely CMS site
- url: '{siteUrl}/api/episerver/v3.0/contentmanagement'
  description: Optimizely CMS Content Management API endpoint
  variables:
    siteUrl:
      default: https://www.example.com
      description: The base URL of the Optimizely CMS site
- url: https://{hostname}/1.0
  description: Primary API server
  variables:
    hostname:
      default: api.usea01.idio.episerver.net
      enum:
      - api.apac01.idio.episerver.net
      - api.caea01.idio.episerver.net
      - api.emea01.idio.episerver.net
      - api.usea01.idio.episerver.net
tags:


# --- truncated at 32 KB (64 KB total) ---
# Full source: https://artifacts.apis.io/optimizely/openapi/optimizely-content-api-openapi.yml