Optimizely Structured Contents API

The Structured Contents API from Optimizely — 11 operation(s) for structured contents.

Business capability
Content Management AE-170.70

Operations 17

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 /structured-content/content-types List structured content types · GET /structured-content/content-types #
Ask an LLM
“Which structured content types are defined in my Optimizely CMP?”
“Can I list only the disabled structured content types, or those from one source?”
Tell an agent
List all structured content types.
List structured content types from source {source} with disabled set to {disabled}.
POST /structured-content/content-types Create a structured content type · POST /structured-content/content-types #
Ask an LLM
“How do I define a new structured content type with its own field definitions?”
“Can I set the expected locales when I create a content type?”
Tell an agent
Create a structured content type with details {details} and field definitions {field_definitions}, created by {created_by}.
Create a new content type from source {source} expecting locales {expected_locales}, fields {field_definitions}, details {details}, by user {created_by}.
GET /structured-content/content-types/{content_type_id} Get a structured content type · GET /structured-content/content-types/{content_type_id} #
Ask an LLM
“What does a single structured content type look like when I fetch it by ID?”
“Where can I see the details of one specific content type?”
Tell an agent
Show me structured content type {content_type_id}.
Fetch the definition of content type {content_type_id}.
POST /structured-content/content-types/{content_type_id} Update a structured content type's details · POST /structured-content/content-types/{content_type_id} #
Ask an LLM
“Can I rename or change the details of an existing structured content type?”
“Is it possible to update a content type's source metadata after it was created?”
Tell an agent
Update the details of content type {content_type_id} to {details}, recorded as updated by {updated_by}.
Change the source metadata of content type {content_type_id} to {source_metadata} with details {details}, by user {updated_by}.
GET /structured-content/content-types/{content_type_id}/versions List versions of a content type · GET /structured-content/content-types/{content_type_id}/versions #
Ask an LLM
“What versions exist for a given structured content type?”
“Can I see the version history of a content type's schema?”
Tell an agent
List all versions of content type {content_type_id}.
Show the version history for content type {content_type_id}.
POST /structured-content/content-types/{content_type_id}/versions Add a new version to a content type · POST /structured-content/content-types/{content_type_id}/versions #
Ask an LLM
“How do I publish a new version of a content type with changed field definitions?”
“Can a new content type version expect different locales than the previous one?”
Tell an agent
Add a new version to content type {content_type_id} with field definitions {field_definitions}, created by {created_by}.
Create a version of content type {content_type_id} expecting locales {expected_locales} with fields {field_definitions}, by {created_by}.
GET /structured-content/content-types/{content_type_id}/versions/{version_id} Get one version of a content type · GET /structured-content/content-types/{content_type_id}/versions/{version_id} #
Ask an LLM
“How can I inspect the field definitions of one specific content type version?”
“What did a content type look like at a particular version?”
Tell an agent
Show version {version_id} of content type {content_type_id}.
Fetch the field definitions in version {version_id} of content type {content_type_id}.
POST /structured-content/contents/{content_id}/migration Migrate a content item to a content type version · POST /structured-content/contents/{content_id}/migration #
Ask an LLM
“How do I move a single piece of structured content onto a newer content type version?”
“Can I supply field values while migrating one content item to a new version?”
Tell an agent
Migrate content {content_id} to content type version {new_content_type_version_id}, performed by {created_by}.
Migrate content {content_id} to version {new_content_type_version_id} with fields {fields}, by user {created_by}.
POST /structured-content/contents/{content_id}/versions/{version_id}/previews/{preview_id}/acknowledge Acknowledge a content preview request · POST /structured-content/contents/{content_id}/versions/{version_id}/previews/{p… #
Ask an LLM
“How does my integration claim a content preview request before rendering it?”
“Can a content preview be acknowledged more than once?”
Tell an agent
Acknowledge preview {preview_id} for version {version_id} of content {content_id} with content hash {content_hash}, as user {acknowledged_by}.
Claim preview request {preview_id} on content {content_id} version {version_id}, hash {content_hash}, acknowledged by {acknowledged_by}.
POST /structured-content/contents/{content_id}/versions/{version_id}/previews/{preview_id}/complete Complete a content preview with rendered previews · POST /structured-content/contents/{content_id}/versions/{version_id}/previews/{p… #
Ask an LLM
“How do I send the finished preview renderings back for a content version?”
“What do I submit to mark a content preview request as complete?”
Tell an agent
Complete preview {preview_id} for content {content_id} version {version_id} with keyed previews {keyed_previews}.
Submit the rendered previews {keyed_previews} to finish preview {preview_id} of content {content_id}, version {version_id}.
POST /structured-content/content-types/{content_type_id}/managed-migrations Create a managed migration job · POST /structured-content/content-types/{content_type_id}/managed-migrations #
Ask an LLM
“How do I set up a bulk migration of all content from an older content type version?”
“Can I give default values for new fields when creating a managed migration job?”
Tell an agent
Create a managed migration for content type {content_type_id} from source version {source_content_type_version_id}, created by {created_by}.
Set up a migration job on content type {content_type_id} from version {source_content_type_version_id} using defaults {default_values}, by {created_by}.
GET /structured-content/content-types/{content_type_id}/managed-migrations List managed migration jobs for a content type · GET /structured-content/content-types/{content_type_id}/managed-migrations #
Ask an LLM
“Which managed migration jobs have been set up for a content type?”
“Can I get a summary of how many contents succeeded or errored in each migration job?”
Tell an agent
List managed migration jobs for content type {content_type_id}.
List migration jobs on content type {content_type_id} with the content migration summary, {limit} at a time from offset {offset}.
POST /structured-content/content-types/{content_type_id}/managed-migrations/{job_id}/start Start a managed migration job · POST /structured-content/content-types/{content_type_id}/managed-migrations/{job… #
Ask an LLM
“How do I kick off a managed migration job I already created?”
“What call actually runs a pending content type migration?”
Tell an agent
Start managed migration job {job_id} on content type {content_type_id}.
Run the not-yet-started migration {job_id} for content type {content_type_id} now.
GET /structured-content/content-types/{content_type_id}/managed-migrations/{job_id} Get a managed migration job's details · GET /structured-content/content-types/{content_type_id}/managed-migrations/{job_… #
Ask an LLM
“What is the current state of a specific managed migration job?”
“Can I check the default values configured on one migration job?”
Tell an agent
Show migration job {job_id} for content type {content_type_id}.
Check the progress of managed migration {job_id} on content type {content_type_id}.
PATCH /structured-content/content-types/{content_type_id}/managed-migrations/{job_id} Change a managed migration job's default values · PATCH /structured-content/content-types/{content_type_id}/managed-migrations/{jo… #
Ask an LLM
“Can I change the default field values on a migration job before it runs?”
“How do I edit an existing managed migration job?”
Tell an agent
Set the default values of migration job {job_id} on content type {content_type_id} to {default_values}.
Update migration {job_id} for content type {content_type_id} so new fields default to {default_values}.
DELETE /structured-content/content-types/{content_type_id}/managed-migrations/{job_id} Delete a not-started managed migration job · DELETE /structured-content/content-types/{content_type_id}/managed-migrations/{j… #
Ask an LLM
“Can I remove a managed migration job that hasn't started yet?”
“Is it possible to delete a migration job once it is already running?”
Tell an agent destructive · confirm first
Delete managed migration job {job_id} from content type {content_type_id}.
Cancel the unstarted migration {job_id} on content type {content_type_id} by deleting it.
POST /structured-content/content-types/{content_type_id}/managed-migrations/validate Check whether a managed migration is possible · POST /structured-content/content-types/{content_type_id}/managed-migrations/vali… #
Ask an LLM
“Before creating a migration job, can I check whether migrating from a version will work?”
“Will my default values be enough to migrate content from an older content type version?”
Tell an agent
Validate a migration of content type {content_type_id} from version {source_content_type_version_id}.
Dry-run check migrating content type {content_type_id} from version {source_content_type_version_id} with defaults {default_values}.

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-structured-contents-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-structured-contents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: V3
  title: Optimizely CMP Open API Documentation Structured Contents…
servers:
- url: https://api.cmp.optimizely.com/v3
  description: v3 version of Optimizely CMP Open API
security:
- OAuth2:
  - openid
  - profile
  - offline_access
tags:


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