Sitecore Personalize REST API

The Sitecore Personalize REST API allows developers to programmatically interact with Sitecore Personalize experiments, decisioning flows, and connection configurations. It supports retrieving, creating, updating, and deleting personalization resources through standard HTTP methods. Developers use this API to integrate decisioning logic into server-side applications, trigger personalization flows programmatically, and manage personalization assets as part of automated deployment pipelines.

OpenAPI Specification

sitecore-personalize-rest-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Sitecore Personalize REST API
  description: >-
    The Sitecore Personalize REST API allows developers to programmatically
    interact with Sitecore Personalize experiments, decisioning flows, connection
    configurations, and template assets. It supports retrieving, creating,
    updating, and deleting personalization resources through standard HTTP methods.
    Developers use this API to integrate decisioning logic into server-side
    applications, trigger personalization flows programmatically, manage
    personalization assets as part of automated deployment pipelines, and connect
    to external systems via configurable connection objects. The API base URL is
    environment-specific and is determined by the region of the Sitecore Personalize
    instance.
  version: 'v1'
  contact:
    name: Sitecore Support
    url: https://www.sitecore.com/support
  termsOfService: https://www.sitecore.com/legal/terms-of-service
externalDocs:
  description: Sitecore Personalize Developer Documentation
  url: https://doc.sitecore.com/personalize/en/developers/api/index-en.html
servers:
  - url: https://api.boxever.com
    description: Sitecore Personalize Production Server
tags:
  - name: Connections
    description: >-
      Endpoints for creating, retrieving, updating, and testing connections to
      external systems used in personalization flows and decision models. Connections
      define authentication credentials and URL configurations for external services.
  - name: Decision Models
    description: >-
      Endpoints for managing decision models that power programmatic targeting and
      offer selection logic within Sitecore Personalize. Decision models contain
      variant configurations and deployment settings.
  - name: Flow Definitions
    description: >-
      Endpoints for creating, retrieving, and updating flow definitions that
      represent experiments, experiences, and personalization flows in Sitecore
      Personalize. Flows can be web-based, full-stack, or triggered by API calls.
  - name: Templates
    description: >-
      Endpoints for managing web and decision templates used to define the
      visual and logic components of personalization experiences within flows.
security:
  - apiKeyAuth: []
paths:
  /v1/connections:
    get:
      operationId: listConnections
      summary: List connections
      description: >-
        Retrieves a paginated collection of all connections configured in the
        Sitecore Personalize instance. Connections represent integrations with
        external systems used within decision models and personalization flows.
        Supports search, sorting, and pagination via query parameters.
      tags:
        - Connections
      parameters:
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/pageOffset'
        - $ref: '#/components/parameters/sortBy'
      responses:
        '200':
          description: A paginated list of connections
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectionListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createConnection
      summary: Create a connection
      description: >-
        Creates a new connection to an external system. Connections define the
        authentication type, endpoint URL, request configuration, and field
        mappings used when calling the external service from within a
        personalization flow or decision model.
      tags:
        - Connections
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateConnectionRequest'
      responses:
        '201':
          description: Connection created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connection'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'

  /v1/connections/{id}:
    get:
      operationId: getConnection
      summary: Get a connection
      description: >-
        Retrieves a specific connection by its unique identifier. Returns the
        full connection configuration including authentication settings, URL,
        and field mappings.
      tags:
        - Connections
      parameters:
        - $ref: '#/components/parameters/resourceId'
      responses:
        '200':
          description: Connection details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connection'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateConnection
      summary: Update a connection
      description: >-
        Performs a full replacement update of a connection. All fields are
        replaced with the values provided in the request body.
      tags:
        - Connections
      parameters:
        - $ref: '#/components/parameters/resourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateConnectionRequest'
      responses:
        '200':
          description: Connection updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Connection'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'

  /v1/connections/{id}/test:
    post:
      operationId: testConnection
      summary: Test a connection
      description: >-
        Performs a test call to the external system using the connection
        configuration to verify that the credentials and endpoint URL are
        correct and the service is reachable.
      tags:
        - Connections
      parameters:
        - $ref: '#/components/parameters/resourceId'
      responses:
        '200':
          description: Connection test result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectionTestResult'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'

  /v1/decision-models:
    get:
      operationId: listDecisionModels
      summary: List decision models
      description: >-
        Retrieves a paginated collection of all decision models configured in
        the Sitecore Personalize instance. Decision models drive offer selection
        and targeting logic. Supports search, sorting, and pagination.
      tags:
        - Decision Models
      parameters:
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/pageOffset'
        - $ref: '#/components/parameters/sortBy'
      responses:
        '200':
          description: A paginated list of decision models
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecisionModelListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createDecisionModel
      summary: Create a decision model
      description: >-
        Creates a new decision model in Sitecore Personalize. Decision models
        contain items, variant configurations, and deployment settings that
        control how offers or content are selected for a given audience.
      tags:
        - Decision Models
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDecisionModelRequest'
      responses:
        '201':
          description: Decision model created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecisionModel'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'

  /v1/decision-models/{id}:
    get:
      operationId: getDecisionModel
      summary: Get a decision model
      description: >-
        Retrieves a specific decision model by its unique identifier. Returns
        the full model including its items, variant configuration, and current
        deployment status.
      tags:
        - Decision Models
      parameters:
        - $ref: '#/components/parameters/resourceId'
      responses:
        '200':
          description: Decision model details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecisionModel'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateDecisionModel
      summary: Update a decision model
      description: >-
        Performs a full replacement update of a decision model. All fields are
        replaced with the values in the request body. This creates a new
        revision of the model.
      tags:
        - Decision Models
      parameters:
        - $ref: '#/components/parameters/resourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDecisionModelRequest'
      responses:
        '200':
          description: Decision model updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DecisionModel'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'

  /v1/flow-definitions:
    get:
      operationId: listFlowDefinitions
      summary: List flow definitions
      description: >-
        Retrieves a paginated collection of all flow definitions configured in
        the Sitecore Personalize instance. Flow definitions represent experiments,
        full-stack experiences, and API-triggered personalization flows.
      tags:
        - Flow Definitions
      parameters:
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/pageOffset'
        - $ref: '#/components/parameters/sortBy'
        - name: type
          in: query
          description: Filter flow definitions by type
          required: false
          schema:
            type: string
            enum:
              - WEB
              - FULLSTACK
              - API
      responses:
        '200':
          description: A paginated list of flow definitions
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowDefinitionListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createFlowDefinition
      summary: Create a flow definition
      description: >-
        Creates a new flow definition representing a personalization experiment
        or experience. Flow definitions contain variant configurations, targeting
        rules, and scheduling settings.
      tags:
        - Flow Definitions
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFlowDefinitionRequest'
      responses:
        '201':
          description: Flow definition created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowDefinition'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'

  /v1/flow-definitions/{id}:
    get:
      operationId: getFlowDefinition
      summary: Get a flow definition
      description: >-
        Retrieves a specific flow definition by its unique identifier. Returns the
        full definition including type, variant configuration, status, and scheduling.
      tags:
        - Flow Definitions
      parameters:
        - $ref: '#/components/parameters/resourceId'
      responses:
        '200':
          description: Flow definition details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowDefinition'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateFlowDefinition
      summary: Update a flow definition
      description: >-
        Performs a full replacement update of a flow definition. All fields are
        replaced with the values in the request body.
      tags:
        - Flow Definitions
      parameters:
        - $ref: '#/components/parameters/resourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFlowDefinitionRequest'
      responses:
        '200':
          description: Flow definition updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FlowDefinition'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'

  /v1/templates:
    get:
      operationId: listTemplates
      summary: List templates
      description: >-
        Retrieves a paginated collection of all templates configured in the
        Sitecore Personalize instance. Templates define the visual or logic
        components used within personalization flows.
      tags:
        - Templates
      parameters:
        - $ref: '#/components/parameters/pageSize'
        - $ref: '#/components/parameters/pageOffset'
        - $ref: '#/components/parameters/sortBy'
      responses:
        '200':
          description: A paginated list of templates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TemplateListResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createTemplate
      summary: Create a template
      description: >-
        Creates a new template in Sitecore Personalize. Templates contain HTML,
        CSS, and JavaScript that define the visual presentation or decision logic
        of a personalization experience.
      tags:
        - Templates
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTemplateRequest'
      responses:
        '201':
          description: Template created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Template'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'

  /v1/templates/{id}:
    get:
      operationId: getTemplate
      summary: Get a template
      description: >-
        Retrieves a specific template by its unique identifier. Returns the full
        template including its code, revision history, and status.
      tags:
        - Templates
      parameters:
        - $ref: '#/components/parameters/resourceId'
      responses:
        '200':
          description: Template details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Template'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateTemplate
      summary: Update a template
      description: >-
        Performs a full replacement update of a template. A new revision is
        created upon each update.
      tags:
        - Templates
      parameters:
        - $ref: '#/components/parameters/resourceId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTemplateRequest'
      responses:
        '200':
          description: Template updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Template'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'

components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API key authentication. Provide the API key in the Authorization header
        obtained from the Sitecore Personalize instance configuration.

  parameters:
    resourceId:
      name: id
      in: path
      description: The unique identifier of the resource
      required: true
      schema:
        type: string
    pageSize:
      name: pageSize
      in: query
      description: Number of items to return per page
      required: false
      schema:
        type: integer
        minimum: 1
        maximum: 100
        default: 20
    pageOffset:
      name: pageOffset
      in: query
      description: Number of records to skip for pagination
      required: false
      schema:
        type: integer
        minimum: 0
        default: 0
    sortBy:
      name: sort
      in: query
      description: Field name and direction to sort results by (e.g., name:asc)
      required: false
      schema:
        type: string

  responses:
    Unauthorized:
      description: Authentication credentials are missing or invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: The request body or parameters are invalid
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The requested resource was not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'

  schemas:
    Connection:
      type: object
      description: >-
        A connection to an external system used within Sitecore Personalize
        decision models and flows
      properties:
        ref:
          type: string
          description: The unique identifier of the connection
        name:
          type: string
          description: The display name of the connection
        description:
          type: string
          description: A description of what the connection is used for
        authType:
          type: string
          description: The authentication method used by the connection
          enum:
            - NONE
            - BASIC
            - OAUTH
            - API_KEY
        connectionUrl:
          type: string
          description: The URL of the external service endpoint
          format: uri
        requestType:
          type: string
          description: The HTTP method used for requests
          enum:
            - GET
            - POST
            - PUT
            - PATCH
            - DELETE
        connectionTimeout:
          type: integer
          description: Timeout in milliseconds before aborting the connection
        socketTimeout:
          type: integer
          description: Timeout in milliseconds waiting for response data
        createdAt:
          type: string
          description: The ISO 8601 timestamp when the connection was created
          format: date-time
        modifiedAt:
          type: string
          description: The ISO 8601 timestamp when the connection was last modified
          format: date-time

    CreateConnectionRequest:
      type: object
      description: Request body for creating or updating a connection
      required:
        - name
        - connectionUrl
        - requestType
      properties:
        name:
          type: string
          description: The display name of the connection
        description:
          type: string
          description: A description of what the connection is used for
        authType:
          type: string
          description: The authentication method
          enum:
            - NONE
            - BASIC
            - OAUTH
            - API_KEY
        connectionUrl:
          type: string
          description: The URL of the external service endpoint
          format: uri
        requestType:
          type: string
          description: The HTTP method for requests
          enum:
            - GET
            - POST
            - PUT
            - PATCH
            - DELETE
        connectionTimeout:
          type: integer
          description: Timeout in milliseconds before aborting the connection
        socketTimeout:
          type: integer
          description: Timeout in milliseconds waiting for response data

    ConnectionListResponse:
      type: object
      description: A paginated list of connections
      properties:
        items:
          type: array
          description: The connections for the current page
          items:
            $ref: '#/components/schemas/Connection'
        total:
          type: integer
          description: Total number of connections

    ConnectionTestResult:
      type: object
      description: Result of a connection test
      properties:
        success:
          type: boolean
          description: Whether the connection test succeeded
        statusCode:
          type: integer
          description: The HTTP status code returned by the external service
        message:
          type: string
          description: A description of the test result or error

    DecisionModel:
      type: object
      description: >-
        A decision model that defines targeting and offer selection logic within
        Sitecore Personalize
      properties:
        ref:
          type: string
          description: The unique identifier of the decision model
        name:
          type: string
          description: The display name of the decision model
        status:
          type: string
          description: The current status of the decision model
          enum:
            - DRAFT
            - TEST
            - PRODUCTION
            - ARCHIVED
        revision:
          type: integer
          description: The current revision number of the decision model
        archived:
          type: boolean
          description: Whether the decision model has been archived
        deploymentConfiguration:
          type: array
          description: Variant configuration specifying traffic splits and content
          items:
            $ref: '#/components/schemas/VariantConfig'
        createdAt:
          type: string
          description: The ISO 8601 timestamp when the model was created
          format: date-time
        modifiedAt:
          type: string
          description: The ISO 8601 timestamp when the model was last modified
          format: date-time

    VariantConfig:
      type: object
      description: Configuration for a variant within a decision model or flow
      properties:
        variantRef:
          type: string
          description: The identifier of the variant
        split:
          type: integer
          description: The percentage of traffic allocated to this variant
          minimum: 0
          maximum: 100

    CreateDecisionModelRequest:
      type: object
      description: Request body for creating or updating a decision model
      required:
        - name
      properties:
        name:
          type: string
          description: The display name of the decision model
        status:
          type: string
          description: The deployment status of the decision model
          enum:
            - DRAFT
            - TEST
            - PRODUCTION
        deploymentConfiguration:
          type: array
          description: Variant configuration for the decision model
          items:
            $ref: '#/components/schemas/VariantConfig'

    DecisionModelListResponse:
      type: object
      description: A paginated list of decision models
      properties:
        items:
          type: array
          description: The decision models for the current page
          items:
            $ref: '#/components/schemas/DecisionModel'
        total:
          type: integer
          description: Total number of decision models

    FlowDefinition:
      type: object
      description: >-
        A flow definition representing a personalization experiment or experience
        in Sitecore Personalize
      properties:
        ref:
          type: string
          description: The unique identifier of the flow definition
        name:
          type: string
          description: The display name of the flow
        type:
          type: string
          description: The type of flow
          enum:
            - WEB
            - FULLSTACK
            - API
        status:
          type: string
          description: The current deployment status of the flow
          enum:
            - DRAFT
            - ACTIVE
            - PAUSED
            - ENDED
            - ARCHIVED
        variants:
          type: array
          description: Variant configurations for the flow
          items:
            $ref: '#/components/schemas/VariantConfig'
        createdAt:
          type: string
          description: The ISO 8601 timestamp when the flow was created
          format: date-time
        modifiedAt:
          type: string
          description: The ISO 8601 timestamp when the flow was last modified
          format: date-time

    CreateFlowDefinitionRequest:
      type: object
      description: Request body for creating or updating a flow definition
      required:
        - name
        - type
      properties:
        name:
          type: string
          description: The display name of the flow
        type:
          type: string
          description: The type of flow
          enum:
            - WEB
            - FULLSTACK
            - API
        status:
          type: string
          description: The deployment status of the flow
          enum:
            - DRAFT
            - ACTIVE
            - PAUSED

    FlowDefinitionListResponse:
      type: object
      description: A paginated list of flow definitions
      properties:
        items:
          type: array
          description: The flow definitions for the current page
          items:
            $ref: '#/components/schemas/FlowDefinition'
        total:
          type: integer
          description: Total number of flow definitions

    Template:
      type: object
      description: A template defining visual or logic components of a personalization experience
      properties:
        ref:
          type: string
          description: The unique identifier of the template
        name:
          type: string
          description: The display name of the template
        type:
          type: string
          description: The template type
          enum:
            - WEB
            - DECISION
        revision:
          type: integer
          description: The current revision number of the template
        html:
          type: string
          description: The HTML markup of the template
        css:
          type: string
          description: The CSS styles for the template
        javascript:
          type: string
          description: The JavaScript code for the template
        createdAt:
          type: string
          description: The ISO 8601 timestamp when the template was created
          format: date-time
        modifiedAt:
          type: string
          description: The ISO 8601 timestamp when the template was last modified
          format: date-time

    CreateTemplateRequest:
      type: object
      description: Request body for creating or updating a template
      required:
        - name
        - type
      properties:
        name:
          type: string
          description: The display name of the template
        type:
          type: string
          description: The type of template
          enum:
            - WEB
            - DECISION
        html:
          type: string
          description: The HTML markup of the template
        css:
          type: string
          description: The CSS styles for the template
        javascript:
          type: string
          description: The JavaScript code for the template

    TemplateListResponse:
      type: object
      description: A paginated list of templates
      properties:
        items:
          type: array
          description: The templates for the current page
          items:
            $ref: '#/components/schemas/Template'
        total:
          type: integer
          description: Total number of templates

    ErrorResponse:
      type: object
      description: An error response body
      properties:
        message:
          type: string
          description: A human-readable error message
        statusCode:
          type: integer
          description: The HTTP status code
        errors:
          type: array
          description: List of detailed error messages
          items:
            type: string