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

# Get Campaign Stats

> This API fetches data at the platform level and provides data for all types of campaigns.


#### Rate Limit

This API provides all version stats, and the call rate is limited to **100 API calls per minute** per workspace.


## OpenAPI

````yaml /api/stats-report/stats-report.yaml post /core-services/v1/campaign-stats
openapi: 3.0.3
info:
  title: MoEngage Campaign Stats and Reports API
  description: >
    The Stats API allows you to fetch detailed campaign stats synchronized in
    real time. 

    The Campaign Report API allows you to download campaign reports for any
    specific date range.
  version: '1.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: []
tags:
  - name: Stats
    description: Fetch detailed, real-time campaign statistics.
  - name: Campaign Reports
    description: Download campaign report files.
paths:
  /core-services/v1/campaign-stats:
    post:
      tags:
        - Stats
      summary: Get Campaign Stats
      description: >
        This API fetches data at the platform level and provides data for all
        types of campaigns.
      operationId: getCampaignStats
      parameters:
        - name: MOE-APPKEY
          in: header
          required: true
          schema:
            type: string
          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)**.
          example: YOUR_WORKSPACE_ID_XXXX
      requestBody:
        $ref: '#/components/requestBodies/CampaignStatsRequest'
      responses:
        '200':
          description: Successful response.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CampaignStatsResponse'
              examples:
                stats-response:
                  summary: Sample Response
                  value:
                    response_id: string
                    total_campaigns: 1
                    current_page: 1
                    total_pages: 1
                    data:
                      66e933029ff25f3322d8279d:
                        - platforms:
                            android:
                              locales:
                                all_locales:
                                  variations:
                                    all_variations:
                                      performance_stats:
                                        attempted: 2
                                        sent: 2
                                        failed: 0
                                        impression: 2
                                        click: 4
                                        ctr: 200
                                        delivery_rate: 100
                                        sent_rate: 100
                                        failure_rate: 0
                                      conversion_goal_stats:
                                        Goal 1:
                                          conversions: 0
                                          cvr: 0
                                          uplift: 0
                                      delivery_funnel:
                                        reachable_users_in_segment: 2
                                        segment_after_uninstall: 2
                                        after_fc: 2
                                        users_after_dup: 2
                                        sent: 2
                                        user_devices: 2
                                        impressions: 2
                                        active_device_token: 2
                                      failure_breakdown: {}
                                    campaign_control_group:
                                      conversion_goal_stats:
                                        Goal 1:
                                          conversions: 0
                                          cvr: 0
                                          uplift: 0
                                      delivery_funnel:
                                        reachable_users_in_segment: 0
                                      failure_breakdown:
                                        user_removed_due_to_campaing_control_group: 1
                                    global_control_group:
                                      conversion_goal_stats:
                                        Goal 1:
                                          conversions: 0
                                          cvr: 0
                                          uplift: 0
                                      delivery_funnel:
                                        reachable_users_in_segment: 0
                                      failure_breakdown:
                                        user_removed_due_to_global_control_group: 1
        '400':
          description: >
            **Bad request**

            Possible issues include duplicates, invalid data types, or missing
            mandatory attributes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseSimple'
              example:
                title: Invalid Field Value
                description: 'app_key - Some of the field values are invalid: app_key : None'
                code: wUcwPRZF
        '401':
          description: >
            **Unauthorized**

            This response is returned upon unauthorized request. Provide
            appropriate authentication credentials.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseSimple'
              example:
                title: Authentication required
                description: Invalid identity information found.
                code: wUcwPRZF
        '403':
          description: >
            **Forbidden**

            This response is returned when our account does not have access to
            the campaign stats management features.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseSimple'
              example:
                title: Forbidden Request
                description: null
                code: kmqLuuHM
        '429':
          description: >
            **Too many requests**

            This response is returned when the number of requests per minute has
            exceeded the rate limit.
        '500':
          description: >
            **Internal server error**

            This response is returned when the system runs into an unexpected
            error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponseSimple'
              example:
                title: Server Error
                description: >-
                  An unexpected error was encountered while processing this
                  request. Please contact MoEngage Team
                code: jDTGSxjd
      security:
        - basicAuth: []
components:
  requestBodies:
    CampaignStatsRequest:
      description: Request body to fetch campaign stats.
      required: true
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CampaignStatsRequest'
          examples:
            with-campaign-ids:
              summary: With Campaign IDs
              value:
                request_id: abc
                campaign_ids:
                  - 6643773d4fe37fe7a10b718e
                  - 6645fbae1101e4c6611b15c7
                  - 67c1cfc8c1b46a5ad5022de7
                start_date: '2024-12-22'
                end_date: '2024-12-23'
                attribution_type: VIEW_THROUGH
                metric_type: TOTAL
            without-campaign-ids:
              summary: Without Campaign IDs
              value:
                request_id: abc
                start_date: '2024-12-22'
                end_date: '2024-12-23'
                attribution_type: VIEW_THROUGH
                metric_type: TOTAL
  schemas:
    CampaignStatsResponse:
      type: object
      properties:
        response_id:
          type: string
          description: >-
            The response ID, which is the same as the request ID passed in the
            payload.
        total_campaigns:
          type: integer
          description: >-
            This field indicates the total number of campaigns that are
            requested in the payload.
        current_page:
          type: integer
          description: This field indicates the current page number.
        total_pages:
          type: integer
          description: >-
            This field indicates the total page. It is equal to the total
            campaigns, which is limited to 10 for each call and 10 to be
            displayed for each page.
        data:
          type: object
          description: This object contains the campaign stats. Keys are Campaign IDs.
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/CampaignStatsDetails'
    ErrorResponseSimple:
      type: object
      properties:
        title:
          type: string
        description:
          type: string
          nullable: true
        code:
          type: string
    CampaignStatsRequest:
      type: object
      required:
        - request_id
        - start_date
        - end_date
        - attribution_type
        - metric_type
      properties:
        request_id:
          type: string
          description: >-
            This field shows the request ID created by a user. Helps to know the
            API calls made by the client.
        campaign_ids:
          type: array
          items:
            type: string
          description: This field shows the campaign IDs created, up to 10 max per call.
          maxItems: 10
        start_date:
          type: string
          format: date
          description: >-
            This field shows the start date of the campaign in YYYY-MM-DD
            format.
          example: '2024-12-22'
        end_date:
          type: string
          format: date
          description: >-
            This field shows the campaign's end date in YYYY-MM-DD format. The
            days between the start and end dates should not exceed 30 days.
          example: '2024-12-23'
        attribution_type:
          type: string
          description: >-
            This field shows the attribution type that should be picked to show
            conversion stats.
          enum:
            - VIEW_THROUGH
            - CLICK_THROUGH
            - IN_SESSION
            - TOTAL_CONVERSIONS
            - CLICK_CONVERSIONS
        offset:
          type: integer
          description: |
            This field shows the position of a record in a dataset. 
            The default value for the number of campaigns to skip is 0. 
            For example, set the offset to 50 to see the data from page 51.
          default: 0
        limit:
          type: integer
          description: >-
            This field shows the maximum number of campaigns displayed on a
            page. The default and max limit is up to 10 campaigns.
          default: 10
          maximum: 10
        metric_type:
          type: string
          description: This field shows the total or unique values of all the metrics.
          enum:
            - TOTAL
            - UNIQUE
    CampaignStatsDetails:
      type: object
      properties:
        platforms:
          $ref: '#/components/schemas/Platforms'
    Platforms:
      type: object
      description: >-
        This field indicates the platforms where the user has engaged with your
        communication (e.g., ANDROID, IOS, WEB, MWEB, UNKNOWN).
      additionalProperties:
        $ref: '#/components/schemas/PlatformStats'
    PlatformStats:
      type: object
      properties:
        locales:
          $ref: '#/components/schemas/Locales'
    Locales:
      type: object
      description: This field indicates the details of the locales configured.
      additionalProperties:
        $ref: '#/components/schemas/LocaleStats'
    LocaleStats:
      type: object
      properties:
        variations:
          $ref: '#/components/schemas/Variations'
    Variations:
      type: object
      description: This object contains details of the variations of your locale.
      properties:
        all_variations:
          $ref: '#/components/schemas/VariationDetails'
        campaign_control_group:
          $ref: '#/components/schemas/VariationDetails'
        global_control_group:
          $ref: '#/components/schemas/VariationDetails'
    VariationDetails:
      type: object
      properties:
        performance_stats:
          $ref: '#/components/schemas/PerformanceStats'
        conversion_goal_stats:
          $ref: '#/components/schemas/ConversionGoalStats'
        delivery_funnel:
          $ref: '#/components/schemas/DeliveryFunnel'
        failure_breakdown:
          $ref: '#/components/schemas/FailureBreakdown'
    PerformanceStats:
      type: object
      description: This object shows your campaign's performance metrics.
      properties:
        attempted:
          type: integer
          description: Number of communication attempts made.
        sent:
          type: integer
          description: Number of communications sent.
        failed:
          type: integer
          description: Number of communications that failed to reach customers.
        bounced:
          type: integer
          description: Number of communications bounced.
        impression:
          type: integer
          description: Number of times your communication appeared to the user.
        click:
          type: integer
          description: Number of times your users clicked the message.
        opened:
          type: integer
          description: Number of communications opened by the user.
        delivered:
          type: integer
          description: Number of communications delivered to the customer.
        read:
          type: integer
          description: Number of customers who read your communications.
        closed_click:
          type: integer
          description: Number of messages closed by your customers.
        unsubscribe:
          type: integer
          description: Number of customers who have unsubscribed.
        ctr:
          type: number
          format: double
          description: 'Click-Through Rate: (Clicks / Impressions).'
        delivery_rate:
          type: number
          format: double
          description: Rate of delivery to customers.
        read_rate:
          type: number
          format: double
          description: UniqueRead / uniqueDelivered * 100.
        successfully_synced:
          type: integer
        sent_rate:
          type: number
          format: double
          description: Sent / attempted * 100.
        failure_rate:
          type: number
          format: double
          description: (attempted - sent) / attempted * 100.
        eligible_users:
          type: integer
          description: Number of eligible users.
        complaint:
          type: integer
          description: Count of complaints registered.
        hard_bounce:
          type: integer
        soft_bounce:
          type: integer
        open_rate:
          type: number
          format: double
        ctor:
          type: number
          format: double
          description: Click-through open rate.
        unsub_rate:
          type: number
          format: double
        bounce_rate:
          type: number
          format: double
        complaints_rate:
          type: number
          format: double
    ConversionGoalStats:
      type: object
      description: This object shows the conversion goal stats of your campaign.
      additionalProperties:
        $ref: '#/components/schemas/ConversionGoal'
    DeliveryFunnel:
      type: object
      description: This object shows the delivery stats of your campaign.
      properties:
        reachable_users_in_segment:
          type: integer
        segment_after_uninstall:
          type: integer
        after_fc:
          type: integer
        users_after_dup:
          type: integer
        sent:
          type: integer
        user_devices:
          type: integer
        impressions:
          type: integer
        active_device_token:
          type: integer
        after_invalid_removal:
          type: integer
        total_user_in_segment:
          type: integer
        user_with_email:
          type: integer
        user_with_email_after__h_b:
          type: integer
        user_after_duplicate_removal:
          type: integer
        after_personalization_removal:
          type: integer
        delivered:
          type: integer
    FailureBreakdown:
      type: object
      description: This object shows the failure breakdown of your campaign.
      additionalProperties:
        type: integer
    ConversionGoal:
      type: object
      properties:
        goal_name:
          type: string
        conversions:
          type: integer
          description: Number of conversions.
        cvr:
          type: number
          format: double
          description: Conversion rate.
        uplift:
          type: number
          format: double
          description: Percentage change in performance metrics.
        total:
          type: integer
        unique:
          type: integer
        revenue:
          type: number
        average_order_value:
          type: number
        average_revenue_per_user:
          type: number
        gcg_uplift:
          type: number
  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
        **Campaign report/Business events/Custom templates/Catalog API/Inform
        Report** tile.


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

````