> ## 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.

# List Business Events

> Returns all business events in the workspace, or a single one when you supply `name` or `id`. Use either `name` or `id`, not both. Omit both parameters to list everything (paginated).

Use this endpoint to page through every event or to look up exactly one. To look up several events at once, use [Search Business Events (V5)](/api/business-events/search-business-events-v5), which takes arrays of names or IDs.




## OpenAPI

````yaml /api/business-events/business-events-v5/business-events-v5.yaml get /v5/business-events
openapi: 3.0.3
info:
  title: MoEngage Business Events API (V5)
  description: >
    V5 API for triggering business events in a MoEngage workspace and for
    looking up the events registered in it.


    You can fire a previously created business event so that any campaigns or
    flows attached to it are executed. For example, you can trigger a business
    event when a new episode of an OTT series becomes available, when there is a
    flight delay, or when there is a price drop on an item in a cart. You can
    also list the business events in your workspace, or look several up at once
    by name or ID.


    Served to users through the unified MoEngage gateway, behind a versioned
    `{response_id, type, data}` envelope.


    To create a new business event, use the [Business Events
    (Legacy)](/api/business-events/business-events-legacy/business-events-overview)
    API — that operation has not moved to V5 yet.
  version: 1.4.0
servers:
  - url: https://api-{dc}.moengage.com
    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: Business Events
    description: >-
      Trigger business events registered in the workspace, and look up the
      events it contains.
paths:
  /v5/business-events:
    get:
      tags:
        - Business Events
      summary: List Business Events
      description: >
        Returns all business events in the workspace, or a single one when you
        supply `name` or `id`. Use either `name` or `id`, not both. Omit both
        parameters to list everything (paginated).


        Use this endpoint to page through every event or to look up exactly one.
        To look up several events at once, use [Search Business Events
        (V5)](/api/business-events/search-business-events-v5), which takes
        arrays of names or IDs.
      operationId: listBusinessEvents
      parameters:
        - name: name
          in: query
          schema:
            type: string
          description: Exact business event name. Use either `name` or `id`, not both.
          example: price_drop
        - name: id
          in: query
          schema:
            type: string
          description: >
            Business event ID — a bare 24-character hexadecimal ObjectId. Pass
            this value exactly as returned in `data[].id`. Use either `name` or
            `id`, not both.
          example: 67a2c4f18d3b5e0a9c1f4e73
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Cursor'
        - $ref: '#/components/parameters/RequestIdHeader'
      responses:
        '200':
          description: Business event list
          headers:
            X-MOE-Request-Id:
              schema:
                type: string
                format: uuid
              description: >-
                Trace ID echoed from the request. Generated by MoEngage when you
                do not send one.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BusinessEventListResponse'
              example:
                response_id: 5f3e2a1b9c8d
                type: business-events
                data:
                  - id: 67a2c4f18d3b5e0a9c1f4e73
                    name: price_drop
                    attributes:
                      - name: product_id
                        data_type: string
                      - name: new_price
                        data_type: number
                    campaign_count: 50000
                    trigger_count: 12840
                    created_by: john.doe@example.com
                    last_triggered_at: '2026-07-19T14:03:22Z'
                    created_at: '2026-05-01T09:12:00Z'
                pagination:
                  has_more: true
                  next_cursor: eyJsYXN0X2lkIjoiNjdhMmM0ZjE4ZDNiNWUwYTljMWY0ZTc0In0=
        '400':
          $ref: '#/components/responses/BadRequestV5'
        '401':
          $ref: '#/components/responses/UnauthorizedV5'
        '403':
          $ref: '#/components/responses/ForbiddenV5'
        '429':
          $ref: '#/components/responses/RateLimitedV5'
        '500':
          $ref: '#/components/responses/InternalServerErrorV5'
components:
  parameters:
    Limit:
      name: limit
      in: query
      schema:
        type: integer
        default: 20
        maximum: 20
      description: Page size. Max 20 per page.
    Cursor:
      name: cursor
      in: query
      schema:
        type: string
      description: Opaque pagination cursor from a previous response.
    RequestIdHeader:
      name: X-MOE-Request-Id
      in: header
      required: false
      schema:
        type: string
        format: uuid
      description: >
        Client-supplied trace ID (UUID v4). Echoed back in the
        `X-MOE-Request-Id` response header and returned unchanged as
        `response_id` in the body. When you omit this header, MoEngage generates
        a 12-character hexadecimal identifier instead. Quote it when contacting
        MoEngage Support.


        On [Trigger Business Event
        (V5)](/api/business-events/trigger-business-event-v5), the body field
        `moe_request_id` takes precedence: when you send both, `response_id`
        echoes `moe_request_id`, and this header is returned only in the
        `X-MOE-Request-Id` response header.
      example: 9f2c1b7a-4d3e-4a08-b5c6-1e7d02f43a91
  schemas:
    BusinessEventListResponse:
      type: object
      properties:
        response_id:
          type: string
          description: >-
            Unique identifier for this response. Echoes the `X-MOE-Request-Id`
            header you sent, returned unchanged. When you omit it, MoEngage
            generates a 12-character hexadecimal identifier. Quote it when
            contacting MoEngage Support.
          example: 5f3e2a1b9c8d
        type:
          type: string
          description: >-
            The resource type contained in `data`. Always `business-events` for
            this endpoint.
          enum:
            - business-events
        data:
          type: array
          description: The business events matching your filters, up to `limit` per page.
          items:
            $ref: '#/components/schemas/BusinessEventV5'
        pagination:
          description: Cursor pagination state for this page of results.
          allOf:
            - $ref: '#/components/schemas/PaginationV5'
    BusinessEventV5:
      type: object
      description: A business event, as returned by the V5 business events endpoints.
      properties:
        id:
          type: string
          description: >
            Business event ID — a bare 24-character hexadecimal ObjectId. It
            identifies the event itself, unlike `response_id`, which is a
            per-response trace identifier.
          example: 67a2c4f18d3b5e0a9c1f4e73
        name:
          type: string
          description: Business event name.
          example: price_drop
        attributes:
          type: array
          description: >
            The attribute schema registered for this event. Two things depend on
            it. Values you send in `event_attributes` when triggering the event
            are validated against these types, and a mismatch returns a `400` —
            so a `number` attribute sent as a string is rejected. The attribute
            names are also what campaigns and flows reference as personalization
            tokens, so this array tells you which tokens are available to
            content attached to the event.
          items:
            type: object
            description: >-
              One declared attribute — its name, and the type its values are
              validated against.
            properties:
              name:
                type: string
                description: >-
                  Attribute name. Use this when building personalization tokens
                  and when sending `event_attributes` on a trigger call.
                example: product_id
              data_type:
                type: string
                description: >
                  Type that values for this attribute are validated against. One
                  of `string`, `number`, `boolean`, or `datetime`. The legacy
                  Create Business Event API uses a different set, so map between
                  them when moving an integration to V5.
                enum:
                  - string
                  - number
                  - boolean
                  - datetime
                example: string
          example:
            - name: product_id
              data_type: string
            - name: new_price
              data_type: number
        campaign_count:
          type: integer
          description: >-
            Cumulative number of child campaigns this event has triggered across
            all firings.
          example: 50000
        trigger_count:
          type: integer
          description: Total times this event has been triggered.
          example: 12840
        created_by:
          type: string
          format: email
          description: >-
            Email address of the user or service that created the business
            event.
          example: john.doe@example.com
        last_triggered_at:
          type: string
          format: date-time
          description: Last time this event was triggered.
          example: '2026-07-19T14:03:22Z'
        created_at:
          type: string
          format: date-time
          description: Time this event was created.
          example: '2026-05-01T09:12:00Z'
    PaginationV5:
      type: object
      description: Pagination metadata for the V5 business events endpoints.
      properties:
        has_more:
          type: boolean
          description: >-
            Whether more pages exist. When `true`, pass `next_cursor` back as
            `cursor` on the next request.
          example: true
        next_cursor:
          type: string
          description: Present only when `has_more` is `true`.
          example: eyJsYXN0X2lkIjoiNjdhMmM0ZjE4ZDNiNWUwYTljMWY0ZTc0In0=
    ErrorResponseV5:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: >-
                Machine-readable UPPER_SNAKE_CASE code identifying the error
                condition.
              example: INVALID_REQUEST
            message:
              type: string
              description: Human-readable description of the error.
              example: Use either 'name' or 'id', not both.
            target:
              type: string
              description: >-
                The query parameter, body field, or header that caused the
                error.
              example: id
            details:
              type: array
              description: >-
                Field-level breakdown. Returned for validation errors only;
                absent on 401, 403, and 429.
              items:
                type: object
                properties:
                  code:
                    type: string
                    description: >-
                      Machine-readable UPPER_SNAKE_CASE code for this specific
                      violation. More granular than the top-level `code`.
                    example: INVALID_PARAMETER_COMBINATION
                  target:
                    type: string
                    description: The specific parameter or field this violation applies to.
                    example: id
                  message:
                    type: string
                    description: Human-readable description of this violation.
                    example: The 'id' parameter cannot be combined with 'name'.
        response_id:
          type: string
          description: >-
            Unique identifier for this response. Quote it when contacting
            MoEngage Support.
          example: 5f3e2a1b9c8d
  responses:
    BadRequestV5:
      description: Bad request / validation failed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseV5'
          example:
            error:
              code: INVALID_REQUEST
              message: Use either 'name' or 'id', not both.
              target: id
              details:
                - code: INVALID_PARAMETER_COMBINATION
                  target: id
                  message: The 'id' parameter cannot be combined with 'name'.
            response_id: 5f3e2a1b9c8d
    UnauthorizedV5:
      description: Missing or invalid authentication
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseV5'
          example:
            error:
              code: UNAUTHORIZED
              message: Missing or invalid authentication credentials.
              target: Authorization
            response_id: 5f3e2a1b9c8d
    ForbiddenV5:
      description: >
        Missing required scope. Your credentials authenticated successfully, but
        the API key does not carry access to business events — unlike a `401`,
        retrying with the same key will not help. Create a key with the required
        access in the MoEngage dashboard at **Settings** > **Account** > **API
        keys**, or ask a workspace admin to grant it. For more information, see
        [Getting your credentials](/api/introduction#getting-your-credentials).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseV5'
          example:
            error:
              code: FORBIDDEN
              message: >-
                This API key does not have the scope required to read business
                events.
              target: Authorization
            response_id: 5f3e2a1b9c8d
    RateLimitedV5:
      description: Rate limited
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds to wait before retrying.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseV5'
          example:
            error:
              code: RATE_LIMIT_EXCEEDED
              message: Workspace rate limit exceeded. Retry after 60 seconds.
            response_id: 5f3e2a1b9c8d
    InternalServerErrorV5:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponseV5'
          example:
            error:
              code: INTERNAL_ERROR
              message: >-
                An unexpected error occurred while processing the request. Retry
                the request, and quote `response_id` if you contact MoEngage
                Support.
            response_id: 5f3e2a1b9c8d
  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). Find it in the MoEngage dashboard at **Settings** > **Account** >
        **API keys**.

        - **Password**: Use an API key from **Settings** > **Account** > **API
        keys**.


        Refer to [API Key
        Dashboard](/user-guide/settings/account/api-and-api-keys/api-key-dashboard)
        for details on creating and managing API keys.

````