Optimizely Content API

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

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

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"

Discovery needs no key. Ratings and market analysis are Pro.

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://raw.githubusercontent.com/api-evangelist/optimizely/refs/heads/main/openapi/optimizely-content-api-openapi.yml