---
title: "Get pricing analytics"
method: GET
path: "/v1/whatsapp/pricing-analytics"
tags: ["WhatsApp Phone Numbers"]
---

# Get pricing analytics

`GET /v1/whatsapp/pricing-analytics`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/whatsapp/pricing-analytics`
- Auth: HTTP bearer

Message volume and approximate cost for one connected WhatsApp number, read live
from Meta's `pricing_analytics` on the WhatsApp Business Account and scoped to
that account's phone number. Meta's figures are approximate and can lag; Meta
bills from its own invoice. Meta limits how far back and how fine the data goes
(for example HALF_HOUR only over short ranges) and answers out-of-range requests
with an error.

## Query parameters

- `accountId` string, required
- `start` string, date-time, required
- `end` string, date-time, required
- `granularity` 'HALF_HOUR' | 'DAILY' | 'MONTHLY', required
- `dimensions` string
- `metricTypes` string
- `pricingTypes` string
- `pricingCategories` string
- `countryCodes` string

## Response `200`

Pricing data points for the range

- object
  - `accountId` string, required
  - `phoneNumber` string, required: The number the data is scoped to, digits only.
  - `granularity` 'HALF_HOUR' | 'DAILY' | 'MONTHLY', required
  - `start` string, date-time, required
  - `end` string, date-time, required
  - `dataPoints` object[], required
    - `start` string, date-time, required
    - `end` string, date-time, required
    - `phoneNumber` string, nullable, required: Set when dimensions includes PHONE.
    - `country` string, nullable, required: Set when dimensions includes COUNTRY.
    - `tier` string, nullable, required: Volume pricing tier. Set when dimensions includes TIER.
    - `pricingType` string, nullable, required: Set when dimensions includes PRICING_TYPE.
    - `pricingCategory` string, nullable, required: Set when dimensions includes PRICING_CATEGORY.
    - `volume` integer, nullable, required: Messages delivered.
    - `cost` number, nullable, required: Approximate charge, in the currency of the WABA's payment method.

## Other responses

- `400`: Invalid query, or Meta refused it. When Meta refuses, `error` carries Meta's own reason (for example "Too small time window to get monthly granularity data." or that COST is not shown for businesses billed through a partner), `code` is `invalid_field_value`, `platformError` holds Meta's raw error, and `param` is `granularity` when the range is too short for MONTHLY. Retrying the same query fails the same way.
- `401`: Missing or invalid API key. `code` is `missing_credentials` when no Authorization header was sent and `invalid_credentials` when the key is unknown, revoked or expired.
- `404`: Resource not found

## Changes

- **2026-10-06** `f8c8f34fb41a`: 2 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `400`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
- **2026-10-02** `d556591af3f6`: 8 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `details` to the response with the `401` status
  - added the optional property `docUrl` to the response with the `400` status
  - added the optional property `docUrl` to the response with the `401` status
  - …4 more
- **2026-10-01** `f92af0e169c1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/whatsapp/pricing-analytics/get.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/4e74db179e73?raw)
