contentstack Experiences API
Experiences define personalized content variations delivered to specific audience segments, supporting both segmented and A/B test configurations.
Experiences define personalized content variations delivered to specific audience segments, supporting both segmented and A/B test configurations.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/contentstack-experiences-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Contentstack Personalize Management Experiences API
description: The Contentstack Personalize Management API provides programmatic control over the resources in a Contentstack Personalize project, including Attributes, Audiences, Events, and Experiences.
version: v1
contact:
name: Contentstack Support
url: https://www.contentstack.com/contact
termsOfService: https://www.contentstack.com/legal/terms-of-service
servers:
- url: https://personalize-api.contentstack.com
description: AWS North America Production Server
- url: https://eu-personalize-api.contentstack.com
description: AWS Europe Production Server
- url: https://au-personalize-api.contentstack.com
description: AWS Australia Production Server
- url: https://azure-na-personalize-api.contentstack.com
description: Azure North America Production Server
- url: https://azure-eu-personalize-api.contentstack.com
description: Azure Europe Production Server
security:
- bearerAuth: []
- authtokenAuth: []
tags:
- name: Experiences
description: Experiences define personalized content variations delivered to specific audience segments, supporting both segmented and A/B test configurations.
paths:
/experiences:
get:
operationId: getAllExperiences
summary: Get all experiences
description: Retrieves all experience configurations in the Personalize project, including their variant definitions and audience assignments.
tags:
- Experiences
parameters:
- $ref: '#/components/parameters/ProjectUid'
responses:
'200':
description: A list of all experiences in the project.
content:
application/json:
schema:
$ref: '#/components/schemas/ExperienceList'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createExperience
summary: Create an experience
description: Creates a new experience in the Personalize project. Experiences can be of type SEGMENTED (rule-based audience targeting) or AB_TEST (split testing with traffic distribution).
tags:
- Experiences
parameters:
- $ref: '#/components/parameters/ProjectUid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateExperienceRequest'
responses:
'201':
description: The newly created experience.
content:
application/json:
schema:
$ref: '#/components/schemas/Experience'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/experiences/{id}:
get:
operationId: getExperience
summary: Get an experience
description: Retrieves details for a specific experience including its variants, audience assignments, status, and configuration.
tags:
- Experiences
parameters:
- $ref: '#/components/parameters/ExperienceId'
- $ref: '#/components/parameters/ProjectUid'
responses:
'200':
description: The requested experience.
content:
application/json:
schema:
$ref: '#/components/schemas/Experience'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateExperience
summary: Update an experience
description: Updates the configuration of an existing experience including its name, variants, and audience targeting rules.
tags:
- Experiences
parameters:
- $ref: '#/components/parameters/ExperienceId'
- $ref: '#/components/parameters/ProjectUid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateExperienceRequest'
responses:
'200':
description: The updated experience.
content:
application/json:
schema:
$ref: '#/components/schemas/Experience'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
delete:
operationId: deleteExperience
summary: Delete an experience
description: Permanently deletes an experience from the Personalize project. Only experiences in draft or inactive status can be deleted.
tags:
- Experiences
parameters:
- $ref: '#/components/parameters/ExperienceId'
- $ref: '#/components/parameters/ProjectUid'
responses:
'200':
description: Experience deleted successfully.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/experiences/priority:
get:
operationId: getExperiencePriority
summary: Get experience priority order
description: Retrieves the priority ordering of all active experiences, which determines which experience takes precedence when a user qualifies for multiple experiences.
tags:
- Experiences
parameters:
- $ref: '#/components/parameters/ProjectUid'
responses:
'200':
description: The current experience priority ordering.
content:
application/json:
schema:
$ref: '#/components/schemas/ExperiencePriority'
'401':
$ref: '#/components/responses/Unauthorized'
put:
operationId: updateExperiencePriority
summary: Update experience priority order
description: Updates the priority ordering of experiences to control which experience is applied first when a user qualifies for multiple active experiences.
tags:
- Experiences
parameters:
- $ref: '#/components/parameters/ProjectUid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ExperiencePriority'
responses:
'200':
description: Updated experience priority ordering.
content:
application/json:
schema:
$ref: '#/components/schemas/ExperiencePriority'
'401':
$ref: '#/components/responses/Unauthorized'
components:
responses:
BadRequest:
description: The request is malformed or contains invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: Authentication credentials are missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
ExperienceList:
type: object
description: A list of personalization experiences.
properties:
data:
type: array
description: Array of experience objects.
items:
$ref: '#/components/schemas/Experience'
ExperienceVariant:
type: object
description: A content variant within a personalization experience.
properties:
uid:
type: string
description: Unique identifier of the variant.
name:
type: string
description: Display name of the variant.
audience_uid:
type: string
description: UID of the audience this variant targets (for SEGMENTED experiences).
traffic_percentage:
type: number
description: Percentage of traffic assigned to this variant (for AB_TEST experiences).
minimum: 0
maximum: 100
CreateExperienceRequest:
type: object
description: Parameters for creating or updating an experience.
required:
- name
- type
properties:
name:
type: string
description: Display name for the experience.
type:
type: string
description: Experience type.
enum:
- SEGMENTED
- AB_TEST
variants:
type: array
description: Variant definitions for the experience.
items:
$ref: '#/components/schemas/ExperienceVariant'
Error:
type: object
description: Standard error response.
properties:
message:
type: string
description: Human-readable description of the error.
status:
type: integer
description: HTTP status code.
Experience:
type: object
description: A personalization experience with variant and audience configuration.
properties:
uid:
type: string
description: Unique identifier of the experience.
name:
type: string
description: Display name of the experience.
type:
type: string
description: Type of experience — SEGMENTED for rule-based or AB_TEST for split testing.
enum:
- SEGMENTED
- AB_TEST
status:
type: string
description: Current status of the experience.
enum:
- DRAFT
- ACTIVE
- INACTIVE
- ENDED
variants:
type: array
description: List of content variants included in the experience.
items:
$ref: '#/components/schemas/ExperienceVariant'
created_at:
type: string
format: date-time
description: ISO 8601 timestamp when the experience was created.
ExperiencePriority:
type: object
description: Priority ordering of experiences for conflict resolution.
properties:
priority:
type: array
description: Ordered list of experience UIDs from highest to lowest priority.
items:
type: string
parameters:
ProjectUid:
name: x-project-uid
in: header
required: true
description: The UID of the Contentstack Personalize project.
schema:
type: string
ExperienceId:
name: id
in: path
required: true
description: The unique identifier of the experience.
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: OAuth 2.0 Bearer token with personalize:manage or personalize:read scope.
authtokenAuth:
type: apiKey
in: header
name: authtoken
description: Contentstack user authtoken for session-based authentication.
externalDocs:
description: Contentstack Personalize Management API Documentation
url: https://www.contentstack.com/docs/developers/apis/personalize-management-api