8x8

8x8 Reporting API

The Reporting API API from 8x8 — 10 operation(s) for reporting api.

Operations 11

POST /api/v1/subaccounts/{subAccountId}/messages/exports Start log export job #
GET /api/v1/subaccounts/{subAccountId}/messages/exports/{jobId} Get log export job result #
DELETE /api/v1/subaccounts/{subAccountId}/messages/exports/{jobId} Cancel the log export job #
GET /api/v1/subaccounts/{subAccountId}/messages/{umid} Retrieve message details #
GET /api/v1/accounts/{accountId}/usage/messages Get message usage #
DELETE /api/v1/subaccounts/{subAccountId}/messages/{umid}/pii Remove Personally Identifiable Information (PII) #
GET /api/v1/accounts/{accountId}/prices Get SMS price list #
GET /api/v1/accounts/{accountId}/balance Get account balance #
GET /api/v1/call-logs Call Logs #
GET /api/v1/calls/{id} Detail call #
GET /{link} Retrieve Image #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/8x8-reporting-api-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

8x8-reporting-api-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: 8x8 Reporting Reporting API
  contact:
    name: 8x8 Inc
    url: https://cpaas.8x8.com
    email: cpaas-support@8x8.com
  termsOfService: https://cpaas.8x8.com/sg/terms-and-conditions/
  version: '1.0'
  description: 'Operations tagged Reporting API across 4 of this provider''s published API definitions: 8x8-connect-business-messaging-api.json, 8x8-connect-sms-api.json, 8x8-connect-video-interaction-api.json, 8x8-connect-voice-v1-api.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://chatapps.8x8.com
  description: Asia-Pacific region
- url: https://chatapps.us.8x8.com
  description: North America region
- url: https://chatapps.8x8.uk
  description: Europe region
- url: https://chatapps.8x8.id
  description: Indonesia region
- url: https://sms.8x8.com
  description: Asia-Pacific region
- url: https://sms.us.8x8.com
  description: North America region
- url: https://sms.8x8.uk
  description: Europe region
- url: https://sms.8x8.id
  description: Indonesia region
- url: https://video-agent.8x8.com/
- url: https://voice.8x8.com
tags:
- name: Reporting API
paths:
  /api/v1/subaccounts/{subAccountId}/messages/exports:
    parameters:
    - $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1lon/parameters/0'
    servers:
    - url: https://chatapps.8x8.com
      description: Asia-Pacific region
    - url: https://chatapps.us.8x8.com
      description: North America region
    - url: https://chatapps.8x8.uk
      description: Europe region
    - url: https://chatapps.8x8.id
      description: Indonesia region
    post:
      responses:
        '202':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  jobId:
                    type: string
                    description: Identifier of the job started. Use this value to query job result.
                required:
                - jobId
              examples:
                response:
                  value:
                    jobId: F1T6z9C5tW2QV1pdMzO9xpMXrYEmfnvqORGqpePJGpgzjTJ80TSaZEE7aX2wrgix
      summary: Start log export job
      operationId: start-log-export-job-1
      tags:
      - Reporting API
      security:
      - apiKey: []
      requestBody:
        content:
          application/json:
            schema:
              type: object
              title: LogExportRequest
              properties:
                from:
                  type: string
                  format: date-time
                  description: "The values can be entered either as:\n\n- UTC date (`yyyy-MM-dd` format).\n- UTC timezone datetime, then the expected format is `yyyy-MM-ddTHH:mm:ssZ`\n- or as local timezone datetime, then the expected format is `yyyy-MM-ddTHH:mm:sszzz`\n\nThe API will automatically determine whether the datetime is UTC or local based on the format of the value.  \nThe default value is UTC today - 7 days.  \nThe value should less than value of `to` parameter.  \n\nExample values:\n* `2020-07-01` Date without time\n* `2020-07-01T13:00:00` (UTC Time)\n* `2020-07-01T13:00:00+07:00` Datetime with timezone"
                to:
                  type: string
                  format: date-time
                  description: "The values can be entered either as:\n\n- UTC date (`yyyy-MM-dd` format).\n- UTC timezone datetime, then the expected format is `yyyy-MM-ddTHH:mm:ssZ`\n- or as local timezone datetime, then the expected format is `yyyy-MM-ddTHH:mm:sszzz`\n\nThe API will automatically determine whether the datetime is UTC or local based on the format of the value.  \nThe default value is today in UTC timezone.  \nThe value should less than value of `to` parameter.  \n\nExample values:\n* `2020-07-01` Date without time\n* `2020-07-01T13:00:00` (UTC Time)\n* `2020-07-01T13:00:00+07:00` Datetime with timezone"
                phoneNumber:
                  type: string
                  description: Valid phone number in E.164 format.
                  example: '6511111111'
                countries:
                  type: array
                  description: The list of two-letter ISO 3166 country codes that the message has been sent to
                  items:
                    type: string
                    minLength: 2
                    maxLength: 2
                    example: US
                  example:
                  - US
                  - SG
                limit:
                  type: integer
                  description: 'You also need to define if you would like to limit the number of records to fetch using the parameter ***limit*** and an integer value


                    If you do not want to put a limit on the number of records to retrieve, setting ***limit*** to 0 allows to set is as unlimited.


                    - *NB: a longer time-span (eg: several months) and no limit on the records number will increase the time required to generate the logs file.*'
                  default: 0
                channelUserId:
                  type: string
                  description: 'Channel user identifier. When provided, the export is filtered to messages associated with this user. For WhatsApp, this is the business-scoped user identifier (BSUID) and takes the format: ISO 3166 alpha-2 two-letter country code, followed by a period, followed by up to 128 alphanumeric characters (for example, `US.13491208655302741918`).'
                  example: US.13491208655302741918
        x-examples:
          application/json:
            from: '2020-07-01'
            to: '2020-08-01T13:15:00+08:00'
            limit: 500000
            channelUserId: US.13491208655302741918
      description: '* Sending a **POST** request on this endpoint allows to **request an Messaging Apps logs file**.


        ## URL


        The 8x8 Messaging Apps `subAccountId` needs to be provided in the URL as shown below:

        `https://chatapps.8x8.com/api/v1/subaccounts/{subAccountID}/messages/exports`


        *You must replace `{subAccountId}` in the URL above with the subaccountid that you want to use.*'
  /api/v1/subaccounts/{subAccountId}/messages/exports/{jobId}:
    parameters:
    - $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1lon/parameters/0'
    - name: jobId
      in: path
      required: true
      description: Export job identifier
      schema:
        type: string
    servers:
    - url: https://chatapps.8x8.com
      description: Asia-Pacific region
    - url: https://chatapps.us.8x8.com
      description: North America region
    - url: https://chatapps.8x8.uk
      description: Europe region
    - url: https://chatapps.8x8.id
      description: Indonesia region
    get:
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    enum:
                    - queued
                    - running
                    - succeeded
                    - failed
                    - cancelled
                    - empty
                    - error
                    description: Job status
                  data:
                    type: array
                    description: 'The value presented in the response only when the status is "succeeded".


                      Array of links to download the report. Links are valid until the time defined by `expires` value.'
                    items:
                      type: string
                  expires:
                    type: string
                    description: 'The value presented in the response only when the status is "succeeded".


                      Contains the UTC datetime after which the report won''t be accessible anymore.'
                    example: '2020-07-01T06:58:41.74Z'
                title: LogExportJobStatus
              examples:
                response:
                  value:
                    status: succeeded
                    data:
                    - https://chatapps.8x8.com/api/v1/subaccounts/your_subAccountId/messages/download/long-unique-token-here
                    expires: '2020-10-25T06:58:41.74Z'
        '404':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1messages~1%7Bumid%7D/delete/responses/400/content/application~1json/schema'
              examples:
                response:
                  value:
                    code: 4018
                    message: Invalid jobId
                    errorId: aa400d4b-fffe-ea11-8277-00155d4ff7ed
                    timestamp: '2020-09-25T07:18:22.78Z'
      summary: Get log export job result
      operationId: get-log-export-job-result-1
      tags:
      - Reporting API
      security:
      - apiKey: []
      description: "* Sending a **GET** request on this endpoint allows to **check the status of an Messaging Apps Logs export job** and to **get a download link** if its generation has succeeded.\n\n  \n\n## URL\n\nTo define which SMS logs export you want to retrieve, you need to enter the Job ID generated by XXXXX in the path as well as the 8x8 SMS subaccountid you used in the previous request.\n`https://chatapps.8x8.com/api/v1/subaccounts/{subAccountID}/messages/exports/{jobId}`\n\n*You must replace `{jobID}`  and `{subAccountId}` in the URL above with the jobID and subaccountid from the start SMS logs export job request*\n> To safeguard your privacy, sensitive data such as message content and phone numbers are masked by default. Access to this information can be requested by contacting our support team."
    delete:
      responses:
        '204':
          description: ''
        '404':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1messages~1%7Bumid%7D/delete/responses/400/content/application~1json/schema'
              examples:
                response:
                  value:
                    code: 4018
                    message: Invalid jobId
                    errorId: aa400d4b-fffe-ea11-8277-00155d4ff7ed
                    timestamp: '2020-09-25T07:18:22.78Z'
      summary: 'Cancel the log export job '
      operationId: cancel-log-export-job-1
      tags:
      - Reporting API
      security:
      - apiKey: []
      description: "* Sending a **DELETE** request on this endpoint allows to **cancel a Messaging Apps Logs export job**.\n\n  \n\n## URL\n\nTo define which SMS logs export you want to retrieve, you need to enter the Job ID generated by XXXXX in the path as well as the 8x8 SMS subaccountid you used in the previous request.\n`https://chatapps.8x8.com/api/v1/subaccounts/{subAccountID}/messages/exports/{jobId}`\n\n*You must replace `{jobID}`  and `{subAccountId}` in the URL above with the jobID and subaccountid from the start SMS logs export job request*"
  /api/v1/subaccounts/{subAccountId}/messages/{umid}:
    parameters:
    - $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1lon/parameters/0'
    - name: umid
      in: path
      description: Unique message Id, generated by 8x8 API.
      required: true
      schema:
        type: string
    servers:
    - url: https://chatapps.8x8.com
      description: Asia-Pacific region
    - url: https://chatapps.us.8x8.com
      description: North America region
    - url: https://chatapps.8x8.uk
      description: Europe region
    - url: https://chatapps.8x8.id
      description: Indonesia region
    get:
      responses:
        '200':
          description: The success response returned with the message details of the message specified by the umid. Since channel fallback is supported, a single message umid may have multiple message details records depending on the number of channels attempted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        umid:
                          type: string
                          description: Unique message ID automatically generated by 8x8.
                          example: dec02e44-c76f-4a0a-b69f-6ac2a4386eb9
                        subAccountId:
                          type: string
                          description: Sub account id with which the message is associated with.
                        channel:
                          type: string
                          description: Name of the channel used to send the message. Possible values are *SMS*, *WhatsApp*, *RCS*, *Viber*, *Line*, *Facebook*, *WeChat*, *Zalo* or *Kakao*.
                          example: WhatsApp
                        channelId:
                          type: string
                          description: Unique channel identifier. This property uniquely identifies the channel used to send the message when multiple channels of the same type are associated with one sub account.
                          example: 8e4d1303-5754-e911-8154-020897df5459
                        direction:
                          type: string
                          description: 'Direction of the message. Possible values are

                            - **outbound:** Mobile terminated.

                            - **inbound:** Mobile originated.'
                          example: outbound
                        country:
                          type: string
                          description: Two-letter ISO 3166 country code associated with the message.
                          example: SG
                        status:
                          title: MessageStatus
                          type: object
                          description: Delivery status of the message. Status contains the following information.
                          properties:
                            state:
                              type: string
                              description: "General status of the message. Possible values are\n- **unknown:** Status is not known. This is an exceptional/intermediate status. \n- **queued:** The request is accepted and queued for processing\n- **failed:** The request has been rejected by the api and will not be processed.\n- **sent:** The message has been sent to the operator and we have not received an acknowledgment yet.\n- **delivered:** Message has been delivered to destination and we have received confirmation from the operator.\n- **undelivered:** We have received a delivery receipt from the operator that the message was not delivered.\n- **read:** Message was delivered and read.\n- **ok:** Operation was successful\n- **error:** An error occurred during operation"
                              example: delivered
                            detail:
                              type: string
                              description: '- **delivered_to_operator**: The message has been delivered to the operator. Associated with **delivered** state

                                - **delivered_to_recipient**: The message has been delivered to the recipient. Associated with **delivered** state.

                                - **rejected_by_operator**: The message has been rejected by the operator. Associated with **undelivered** status.

                                - **undelivered_to_recipient**: The message has been delivered but rejected by the target device. Associated with **undelivered** state.'
                              example: delivered_to_carrier
                            errorCode:
                              type: integer
                              description: Error code for the operation
                            errorMessage:
                              type: string
                              description: Description of the error.
                              example: Invalid message length
                            timestamp:
                              type: string
                              description: Date and time when the status was observed expressed in  ISO 8601 format.
                              example: '2020-06-17T04:17:21.06Z'
                              format: date-time
                        user:
                          type: object
                          description: Information about the user the message is associated with.
                          properties:
                            msisdn:
                              type: string
                              description: Phone number (obfuscated to protect sensitive information) expressed in E.164 international format.
                              example: +63922110xxxx
                            channelUserId:
                              type: string
                              description: Channel user identifier (obfuscated to protect sensitive data). For WhatsApp messages, this is the business-scoped user identifier (BSUID).
                              example: PH.26717025731320236
                        contentType:
                          type: string
                          example: Text
                          description: Content type of the message. Possible values are *Text*, *Audio*, *Video*, *Image*, *Location*, *File*, *Carousel*, *List*, *Buttons* or *Template*.
                        content:
                          type: string
                          example: '**MASKED**'
                          description: Message content (obfuscated to protect sensitive information).
                        createdAt:
                          type: string
                          description: 'Date and time the message was submitted to the api expressed in ISO 8601 format.  '
                          example: '2020-06-17T04:17:21.06Z'
                        clientMessageId:
                          type: string
                          description: Client message identifier.
                        clientBatchId:
                          type: string
                          description: Client batch identifier.
                        batchId:
                          type: string
                          description: Universaly unique batch identifier (UUID).
                          example: c9c01382-38bf-4e27-8962-ae0684ab56c3
                        step:
                          type: integer
                          example: 1
                          description: Indicates the attempt on which the channel was used. For instance, a message delivery may be failed via *Viber* and a fallback channel like *WhatsApp* may be attempted next. In this case, step 1 will contain message details for *Viber* and step 2 will contain the message details for *WhatsApp*.
                      required:
                      - umid
                      - subAccountId
                      - channel
                      - channelId
                      - direction
                      - status
                      - contentType
                      - createdAt
                      - step
                required:
                - data
              examples:
                response:
                  value:
                    data:
                    - umid: dec02e44-c76f-4a0a-b69f-6ac2a4386eb9
                      subAccountId: sub_account_id
                      channel: WhatsApp
                      channelId: 904d1303-5754-e911-8154-020897df5459
                      direction: Outbound
                      status:
                        state: read
                        timestamp: '2020-06-17T04:25:21.06Z'
                      contentType: Text
                      createdAt: '2020-06-17T04:15:21.06Z'
                      step: 2
                      country: SG
                      user:
                        msisdn: +63922110xxxx
                        channelUserId: PH.26717025731320236
                      content: '**MASKED**'
                      clientMessageId: client message id
                      clientBatchId: client batch id
                      batchId: c9c01382-38bf-4e27-8962-ae0684ab56c3
        '400':
          $ref: '#/paths/~1api~1v1~1accounts~1%7BaccountId%7D~1webhooks/get/responses/400'
        '401':
          $ref: '#/paths/~1api~1v1~1accounts~1%7BaccountId%7D~1webhooks/get/responses/401'
        '404':
          $ref: '#/paths/~1files~1%7Bfilename%7D/get/responses/404'
        '429':
          description: Rate limiting quota exceeded error
          content:
            application/json:
              schema:
                $ref: '#/paths/~1api~1v1~1subaccounts~1%7BsubAccountId%7D~1messages~1%7Bumid%7D/delete/responses/400/content/application~1json/schema'
              example:
                code: 429
                message: Quota exceeded. Please try again in 1 second(s).
                errorId: c8a41b47-57bf-ea11-8273-00155d466a31
                timestamp: '2020-07-06T07:07:00.30Z'
      tags:
      - Reporting API
      summary: Retrieve message details
      description: 'This resource can be used to query message details like delivery status using the UMID of the message. You need to specify the sub account id and the umid of the message in place of *{subAccountId}* and *{umid}* respectively. *umid* is the unique identifier (in the form of a uuid) you received when you submitted the message to the api.


        ### API Rate Limiting

        To protect the platform from being overloaded and maintain a high quality of service to all customers, we enforce API rate limits for this API endpoint.


        The limit is set to 1 request/second per subaccount.

        > To safeguard your privacy, sensitive data such as message content and phone numbers are masked by default. Access to this information can be requested by contacting our support team.'
      operationId: get-chatapps-message-details
      security:
      - apiKey: []
  /api/v1/accounts/{accountId}/usage/messages:
    servers:
    - url: https://chatapps.8x8.com
      description: Asia-Pacific region
    - url: https://chatapps.us.8x8.com
      description: North America region
    - url: https://chatapps.8x8.uk
      description: Europe region
    - url: https://chatapps.8x8.id
      description: Indonesia region
    get:
      operationId: get-message-usage
      summary: Get message usage
      description: 'Returns monthly per-message usage totals for the specified billing period. Results can be filtered and grouped by subaccount, business account, channel, pricing category, and destination country.


        Currently, only WhatsApp is supported.


        **Constraints:**

        - Data is available from **February 2026** onwards

        - Only **closed billing periods** can be queried

        - Maximum lookback: **6 months**


        **Grouping behavior:**

        - If `groupBy` is omitted, a single aggregated total is returned

        - `pricing` is included when `groupBy` contains `channel`, `businessAccountId`, `pricingCategory`, and `country`'
      tags:
      - Reporting API
      parameters:
      - name: accountId
        in: path
        required: true
        description: You must replace *{accountId}* with the account ID that you want to use.
        schema:
          type: string
      - name: billingPeriod
        in: query
        required: true
        description: The billing month to query, in `YYYY-MM` format (e.g. `2026-03`). Must be a closed billing period from February 2026 or later. Maximum lookback is 6 months.
        schema:
          type: string
          pattern: ^\d{4}-(0[1-9]|1[0-2])$
          example: 2026-03
      - name: channel
        in: query
        required: false
        description: Filter results by messaging channel. Currently, only `whatsapp` is supported. Defaults to `whatsapp` if omitted.
        schema:
          type: string
          enum:
          - whatsapp
          example: whatsapp
      - name: groupBy
        in: query
        required: false
        description: 'Comma-separated list of dimensions to group results by. When omitted, a single aggregated total is returned. `pricing` is included when `groupBy` contains `channel`, `businessAccountId`, `pricingCategory`, and `country`.


          Available values: `subAccountId`, `channel`, `businessAccountId`, `pricingCategory`, `country`.'
        schema:
          type: string
          example: subAccountId,channel,businessAccountId,pricingCategory,country
      responses:
        '200':
          description: Successful response containing message usage data.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    description: List of usage records, grouped according to the `groupBy` parameter.
                    items:
                      type: object
                      properties:
                        subAccountId:
                          type: string
                          description: Sub-account identifier. Present when `subAccountId` is included in `groupBy`.
                          example: umsg_AGG001
                        channel:
                          type: string
                          enum:
                          - whatsapp
                          description: Messaging channel. Present when `channel` is included in `groupBy`.
                          example: whatsapp
                        country:
                          type: string
                          description: ISO 3166-1 alpha-2 destination country code. Present when `country` is included in `groupBy`.
                          example: IN
                        businessAccountId:
                          type: string
                          description: Business account identifier associated with the messaging provider. For WhatsApp, this represents the WhatsApp Business Account (WABA) ID. Present when `businessAccountId` is included in `groupBy`.
                          example: 120xx01234567890
                        pricingCategory:
                          type: string
                          description: 'Message pricing category. For WhatsApp: `utility`, `marketing`, `authentication`, `authentication_international`, `service`. Present when `pricingCategory` is included in `groupBy`.'
                          example: utility
                        volume:
                          type: object
                          description: Message volume breakdown.
                          properties:
                            delivered:
                              type: integer
                              description: Total number of delivered messages.
                              example: 479100
                            charged:
                              type: integer
                              description: Number of messages that were charged.
                              example: 437900
                            free:
                              type: integer
                              description: Number of messages delivered at no charge.
                              example: 41200
                        pricing:
                          type: object
                          description: Pricing structure. Present when `groupBy` includes `channel`, `businessAccountId`, `pricingCategory`, and `country`.
                          properties:
                            rateModel:
                              type: string
                              enum:
                              - flat
                              - tiered
                              description: The pricing rate model applied to this combination.
                              example: tiered
                            tiers:
                              type: array
                              description: Tier breakdown. Only present when `rateModel` is `tiered`.
                              items:
                                type: object
                                properties:
                                  from:
                                    type: integer
                                    description: Lower bound of this tier (inclusive).
                                    example: 0
                                  to:
                                    type: integer
                                    description: Upper bound of this tier (inclusive). `null` indicates an openended bracket with no upper limit.
                                    example: 250000
                                  quantity:
                                    type: integer
                                    description: Number of messages that fall within this tier.
                                    example: 250000
                                  status:
                                    type: string
                                    enum:
                                    - completed
                                    description: Indicates the tier was fully settled. Always `completed` since only closed billing periods can be queried.
                                    example: completed
                  meta:
                    type: object
                    description: Metadata about the request and result set.
                    properties:
                      accountId:
                        type: string
                        description: The account ID used in the request.
                        example: bp-xxx
                      billingPeriod:
                        type: object
                        properties:
                          start:
                            type: string
                            format: date
                            description: Start date of the billing period.
                            example: '2026-03-01'
                          end:
                            type: string
                            format: date
                            description: End date of the billing period.
                            example: '2026-03-31'
                          status:
                            type: string
                            enum:
                            - closed
                            description: The billing period status. Always `closed` since only closed billing periods can be queried.
                            example: closed
                      dataAsOf:
                        type: string
                        format: date-time
                        description: Timestamp the final data snapshot for this billing period.
                        example: '2026-03-16T12:00:00Z'
                      groupBy:
                        type: array
                        description: The `groupBy` dimensions applied to this query.
                        items:
                          type: string
                        example:
                        - subAccountId
                        - channel
                        - businessAccountId
                        - pricingCategory
                        - country
                      currency:
                        type: string
                        description: Currency used for pricing amounts (ISO 4217 code).
                        example: USD
              examples:
                full-groupby:
                  summary: Response with full groupBy (includes pricing)
                  value:
                    data:
                    - subAccountId: umsg_AGG001
                      channel: whatsapp
                      country: IN
                      businessAccountId: 120xx01234567890
                      pricingCategory: utility
                      volume:
                        delivered: 479100
                        charged: 437900
                        free: 41200
                      pricing:
                        rateModel: tiered
                        tiers:
                        - from: 0
                          to: 250000
                          quantity: 250000
                          status: completed
                        - from: 250001
               

# --- truncated at 32 KB (67 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/8x8/refs/heads/main/openapi/8x8-reporting-api-api-openapi.yml