Salesforce Experience Cloud Content Delivery API

Content delivery operations for headless consumption

Documentation

📖
Documentation
https://developer.salesforce.com/docs/atlas.en-us.exp_cloud_apis.meta/exp_cloud_apis/
📖
Authentication
https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_oauth_and_connected_apps.htm
📖
GettingStarted
https://developer.salesforce.com/docs/atlas.en-us.communities_dev.meta/communities_dev/communities_dev_intro_before.htm
📖
Documentation
https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/
📖
GettingStarted
https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/quickstart_dev_org.htm
📖
Documentation
https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/connect_resources_cms.htm
📖
GettingStarted
https://developer.salesforce.com/docs/platform/cms/guide/cms-developer-guide.html
📖
Documentation
https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/
📖
GettingStarted
https://developer.salesforce.com/docs/atlas.en-us.exp_cloud_lwr.meta/exp_cloud_lwr/template_overview.htm
📖
Documentation
https://developer.salesforce.com/docs/atlas.en-us.graphql.meta/graphql/
📖
GettingStarted
https://developer.salesforce.com/docs/atlas.en-us.graphql.meta/graphql/
📖
Documentation
https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/connect_resources_managed_content_resources.htm
📖
GettingStarted
https://developer.salesforce.com/docs/platform/cms/guide/cms-dev-retrieve-cms-content-with-a-connected-app.html
📖
Documentation
https://developer.salesforce.com/docs/atlas.en-us.chatterapi.meta/chatterapi/connect_resources_cms_delivery_content.htm
📖
Documentation
https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_get_started.htm
📖
GettingStarted
https://developer.salesforce.com/docs/atlas.en-us.uiapi.meta/uiapi/ui_api_get_started.htm

Specifications

Other Resources

OpenAPI Specification

salesforce-experience-cloud-content-delivery-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Salesforce Experience Cloud Salesforce CMS Connect Actions Content Delivery API
  description: Manage content, channels, and media in Experience Cloud CMS. Supports creating, updating, and delivering managed content across channels for headless content delivery and site publishing. Part of the Salesforce Connect REST API.
  version: 59.0.0
  contact:
    name: Salesforce Developer Support
    url: https://developer.salesforce.com/
  license:
    name: Salesforce Master Subscription Agreement
    url: https://www.salesforce.com/company/legal/sfdc-website-terms-of-service/
servers:
- url: https://{instance}.salesforce.com/services/data/v59.0/connect/cms
  description: Salesforce Instance
  variables:
    instance:
      default: yourInstance
      description: Your Salesforce instance name or custom domain
security:
- oauth2: []
- bearerAuth: []
tags:
- name: Content Delivery
  description: Content delivery operations for headless consumption
paths:
  /channels/{channelId}/contents/query:
    get:
      operationId: queryDeliveryContent
      summary: Salesforce Experience Cloud Query Delivery Content by Channel
      description: Retrieves published CMS content from the specified delivery channel. Returns content items matching the specified content type and optional filters. Used for headless content delivery to external applications and decoupled frontends.
      tags:
      - Content Delivery
      parameters:
      - $ref: '#/components/parameters/ChannelId'
      - name: managedContentType
        in: query
        required: true
        description: Developer name of the content type (e.g., news, cms_image, cms_document, custom content types)
        schema:
          type: string
      - name: language
        in: query
        description: Language code for content variant (e.g., en_US, fr, de)
        schema:
          type: string
      - name: contentKeys
        in: query
        description: Comma-separated list of content keys to retrieve
        schema:
          type: string
      - name: managedContentIds
        in: query
        description: Comma-separated list of managed content record IDs
        schema:
          type: string
      - name: topics
        in: query
        description: Comma-separated list of topic names to filter content
        schema:
          type: string
      - name: showAbsoluteUrl
        in: query
        description: Whether to return absolute URLs for media references
        schema:
          type: boolean
          default: false
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/PageParam'
      responses:
        '200':
          description: Successfully retrieved delivery content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryContentCollection'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /channels/{channelId}/contents/search:
    get:
      operationId: searchDeliveryContent
      summary: Salesforce Experience Cloud Search Delivery Content
      description: Searches published CMS content in the specified delivery channel using a full-text search term. Returns matching content items with relevance-based ordering.
      tags:
      - Content Delivery
      parameters:
      - $ref: '#/components/parameters/ChannelId'
      - name: q
        in: query
        required: true
        description: Full-text search term
        schema:
          type: string
      - name: managedContentType
        in: query
        description: Filter results to a specific content type
        schema:
          type: string
      - name: language
        in: query
        description: Language code for content filtering
        schema:
          type: string
      - name: showAbsoluteUrl
        in: query
        description: Whether to return absolute URLs
        schema:
          type: boolean
          default: false
      - $ref: '#/components/parameters/PageSize'
      - $ref: '#/components/parameters/PageParam'
      responses:
        '200':
          description: Successfully searched delivery content
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryContentCollection'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /channels/{channelId}/contents/{contentKeyOrId}:
    get:
      operationId: getDeliveryContentItem
      summary: Salesforce Experience Cloud Get a Delivery Content Item
      description: Retrieves a specific published content item from the delivery channel by its content key or managed content ID. Returns all content nodes and metadata for the item.
      tags:
      - Content Delivery
      parameters:
      - $ref: '#/components/parameters/ChannelId'
      - name: contentKeyOrId
        in: path
        required: true
        description: Content key or managed content record ID
        schema:
          type: string
      - name: language
        in: query
        description: Language variant to retrieve
        schema:
          type: string
      - name: showAbsoluteUrl
        in: query
        description: Whether to return absolute URLs
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Successfully retrieved content item
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryContentItem'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    ContentNode:
      type: object
      description: A content node representing a field value
      properties:
        altText:
          type: string
          description: Alternative text for media content
        contentKey:
          type: string
          description: Content key for referenced content
        fileName:
          type: string
          description: File name for media content
        mediaType:
          type: string
          description: Media type classification
        mimeType:
          type: string
          description: MIME type of the content
        nodeType:
          type: string
          description: Type of content node
          enum:
          - Media
          - MediaSource
          - MultilineText
          - NameField
          - RichText
          - Text
          - Url
          - DateTime
        referenceId:
          type: string
          description: Reference ID for the content
        title:
          type: string
          description: Title of the node
        unauthenticatedUrl:
          type: string
          format: uri
          description: Public URL
        url:
          type: string
          format: uri
          description: URL value
        value:
          type: string
          description: Text or value content
    DeliveryContentItem:
      type: object
      description: A delivered CMS content item
      properties:
        contentKey:
          type: string
          description: Unique content key for the item
        contentNodes:
          type: object
          description: Content field values organized as nodes
          additionalProperties:
            $ref: '#/components/schemas/ContentNode'
        contentUrlName:
          type: string
          description: URL-safe name for the content
        language:
          type: string
          description: Language code of this content version
        managedContentId:
          type: string
          description: Salesforce record ID
        publishedDate:
          type: string
          format: date-time
          description: When this content was published
        title:
          type: string
          description: Title of the content
        type:
          type: string
          description: Content type developer name
        typeLabel:
          type: string
          description: Content type display label
        unauthenticatedUrl:
          type: string
          format: uri
          description: Public URL for unauthenticated access
    DeliveryContentCollection:
      type: object
      description: Collection of delivered content items
      properties:
        currentPageUrl:
          type: string
          format: uri
        items:
          type: array
          items:
            $ref: '#/components/schemas/DeliveryContentItem'
        managedContentTypes:
          type: object
          description: Map of content type names to type metadata
          additionalProperties:
            type: object
            properties:
              developerName:
                type: string
              label:
                type: string
        nextPageUrl:
          type: string
          format: uri
        total:
          type: integer
        totalCount:
          type: integer
    ErrorResponse:
      type: object
      description: Standard Salesforce API error response
      properties:
        errorCode:
          type: string
        message:
          type: string
  parameters:
    PageParam:
      name: page
      in: query
      description: Page number (0-indexed)
      schema:
        type: integer
        default: 0
    PageSize:
      name: pageSize
      in: query
      description: Number of items per page (default 25, max 250)
      schema:
        type: integer
        default: 25
        maximum: 250
    ChannelId:
      name: channelId
      in: path
      required: true
      description: The ID of the CMS delivery channel
      schema:
        type: string
  responses:
    Unauthorized:
      description: Unauthorized - invalid or expired OAuth token
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ErrorResponse'
    BadRequest:
      description: Bad request - invalid input parameters
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            type: array
            items:
              $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    oauth2:
      type: oauth2
      description: Salesforce OAuth 2.0 authentication
      flows:
        authorizationCode:
          authorizationUrl: https://login.salesforce.com/services/oauth2/authorize
          tokenUrl: https://login.salesforce.com/services/oauth2/token
          scopes:
            api: Access and manage your data
            content: Manage CMS content
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: OAuth2
      description: Bearer token obtained through OAuth 2.0 flow