> ## Documentation Index
> Fetch the complete documentation index at: https://moengage.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Fetch Experience Metadata

> This API fetches a list of currently Active, Scheduled, and Paused experiences within a workspace.


<Tip>
  **Recommended usage**: Call this endpoint once at application startup and cache the result. Experience keys change infrequently — a daily refresh is usually sufficient. In production rendering paths, filter by `?status=Active` so your [Fetch Experience](/api/experiences/fetch-experience) calls only include keys that are currently live.
</Tip>


## OpenAPI

````yaml /api/personalize-experience/personalize-experience.yaml get /experiences/metadata
openapi: 3.0.3
info:
  title: Personalize APIs
  description: >
    Personalize APIs constitute a set of endpoints that can be accessed from
    your platform's code. These APIs offer personalization capabilities and must
    be invoked from your codebase for MoEngage to provide relevant data. After
    receiving the data, you can use it within your platform's code to
    personalize the content for your users.
  version: 1.0.0
servers:
  - url: https://sdk-{dc}.moengage.com/v1
    description: MoEngage API Server
    variables:
      dc:
        default: '01'
        description: >-
          The ‘dc’ in the API Endpoint URL refers to the MoEngage Data Center
          (DC). MoEngage hosts each customer in a different DC. You can find
          your DC number and replace the value of ‘dc’ in the URL by referring
          to the DC and API endpoint mapping
          [here](/api/introduction#data-centers). Your MoEngage Data Center (DC)
          can be 01, 02, 03, 04, 05, 06, or 101.
security:
  - basicAuth: []
tags:
  - name: Experiences
    description: API endpoints for fetching experiences and metadata.
  - name: Events
    description: API endpoints for reporting impressions and clicks.
paths:
  /experiences/metadata:
    get:
      tags:
        - Experiences
      summary: Fetch Experience Metadata
      description: >
        This API fetches a list of currently Active, Scheduled, and Paused
        experiences within a workspace.
      operationId: getMetadata
      parameters:
        - name: MOE-APPKEY
          in: header
          required: true
          description: >-
            This is the Workspace ID of your MoEngage account that must be
            passed with the request. You can find it in the MoEngage dashboard
            at **Settings** > **Account** > **APIs** > **Workspace ID (earlier
            app id)**.
          schema:
            type: string
            example: Workspace ID
        - name: status
          in: query
          required: false
          description: >
            Filter experiences by status. Pass one or more comma-separated
            values. If omitted, all statuses are returned.


            **Accepted values**: `Active`, `Paused`, `Scheduled`
            (case-sensitive). Unknown values (for example, `active` in
            lowercase) silently return an empty list rather than an error —
            verify spelling and casing.


            | Status | Description |

            |---|---|

            | `Active` | Experience is live and being served to matching users.
            |

            | `Paused` | Experience is not being served. Fetching its key via
            [Fetch Experience](/api/experiences/fetch-experience) returns an
            empty payload — not an error. |

            | `Scheduled` | Experience is configured but has not started yet.
            Fetching its key returns an empty payload. |
          schema:
            type: string
            example: Active,Paused
      responses:
        '200':
          description: Successful retrieval
          content:
            application/json:
              schema:
                type: object
                properties:
                  metadata:
                    type: object
                    properties:
                      count:
                        type: integer
                        description: >-
                          Total number of experiences returned after the status
                          filter is applied.
                      experiences:
                        type: array
                        items:
                          type: object
                          properties:
                            experience_name:
                              type: string
                              description: >-
                                Human-readable name set in the MoEngage
                                dashboard.
                            experience_key:
                              type: string
                              description: >-
                                Unique key for this experience. Pass this value
                                in the `experience_key` array of the [Fetch
                                Experience](/api/experiences/fetch-experience)
                                request.
                            status:
                              type: string
                              description: Current status of the experience.
                              enum:
                                - Active
                                - Paused
                                - Scheduled
              examples:
                All statuses:
                  summary: Multiple experiences, mixed statuses
                  value:
                    metadata:
                      count: 3
                      experiences:
                        - experience_name: Homepage Banner — Free Shipping
                          experience_key: homepage-banner
                          status: Active
                        - experience_name: Cart Upsell Widget
                          experience_key: cart-upsell
                          status: Paused
                        - experience_name: Christmas Sale Strip
                          experience_key: christmas-sale-strip
                          status: Scheduled
                Active only:
                  summary: Active filter applied
                  value:
                    metadata:
                      count: 1
                      experiences:
                        - experience_name: Homepage Banner — Free Shipping
                          experience_key: homepage-banner
                          status: Active
                No experiences:
                  summary: No experiences match the filter
                  value:
                    metadata:
                      count: 0
                      experiences: []
        '400':
          description: >
            **Bad Request**

            This response is returned when the `MOE-APPKEY` header is missing or
            not recognized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                title: Request Error
                description: >-
                  MoEngage Client not found. Please check values for headers -
                  MOE-APPKEY or MOE-DBNAME
        '401':
          description: >
            **Authorization Failed**

            This response is returned when the authorization fails due to
            incorrect values for the Workspace ID or Personalize API Key. Refer
            to the authentication guidance in the `basicAuth` security scheme
            above.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                title: Authentication required
                description: Invalid API_KEY used in Authentication Header
        '500':
          description: >
            **Internal Server Error**

            This response is returned when the system runs into an unexpected
            error. Retry after a short delay. If the error persists, contact
            MoEngage support.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      x-codeSamples:
        - lang: cURL
          label: Fetch all experiences
          source: >
            curl --location
            'https://sdk-01.moengage.com/v1/experiences/metadata' \

            --header 'Accept: */*' \

            --header 'Content-Type: application/json' \

            --header 'Authorization: Basic
            <base64(workspaceId:personalizeApiKey)>' \

            --header 'MOE-APPKEY: <Your Workspace ID>'
        - lang: cURL
          label: Fetch by Status (Active)
          source: >
            curl --location
            'https://sdk-01.moengage.com/v1/experiences/metadata?status=Active'
            \

            --header 'Accept: */*' \

            --header 'Content-Type: application/json' \

            --header 'Authorization: Basic
            <base64(workspaceId:personalizeApiKey)>' \

            --header 'MOE-APPKEY: <Your Workspace ID>'
        - lang: cURL
          label: Fetch by Status (Active,Paused)
          source: >
            curl --location
            'https://sdk-01.moengage.com/v1/experiences/metadata?status=Active,Paused'
            \

            --header 'Accept: */*' \

            --header 'Content-Type: application/json' \

            --header 'Authorization: Basic
            <base64(workspaceId:personalizeApiKey)>' \

            --header 'MOE-APPKEY: <Your Workspace ID>'
components:
  schemas:
    ErrorResponse:
      type: object
      description: >-
        Standard error envelope returned by Personalize endpoints for `4xx` and
        `5xx` responses.
      properties:
        title:
          type: string
          description: >-
            Short error category, for example `Invalid Field Value`,
            `Authentication required`, or `Malformed JSON`.
        description:
          type: string
          description: Human-readable detail describing what failed.
        code:
          type: string
          description: >-
            Opaque server-assigned error code. Present on validation failures;
            useful when contacting support.
      required:
        - title
        - description
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >
        Authentication is done via Basic Auth. This requires a base64-encoded
        string of your credentials in the format 'username:password'.


        - **Username**: Use your MoEngage workspace ID (also known as the App
        ID). You can find it in the MoEngage dashboard at **Settings** >
        **Account** > **APIs** > **Workspace ID (earlier app id)**.

        - **Password**: Use your API Key, which you can find within the
        **Personalize** tile.


        **Note**: After you generate and save the Personalize API Key (SECRET
        KEY), DO NOT generate a new key unless there is a security breach. After
        you generate a different key and save it, API calls using the older key
        won't work.


        For more information on authentication and getting your credentials,
        refer
        [here](https://www.moengage.com/docs/api/introduction#getting-your-credentials).

````