Optimizely Structured Contents API

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

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"

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