Skip to main content
It’s the platform’s price tag, always showing today’s value. No API Key needed: you can call it straight from a browser, a static page, or a script.

In short

  • One public endpoint, no authentication: GET /v1/pricing.
  • Returns plans, per-channel prices, the official WhatsApp software fee, and the table by country and category.
  • Includes updatedAt, the date the prices took effect.

Request

No Authorization, no workspace, no special header.

Response (200)

Abbreviated example with illustrative values. In the real response, plans, skus, and rates come complete (the country table has over a thousand rows).

Fields

credits is what comes out of the plan; paygCents is what comes out of the BRL balance. To convert credits to BRL, multiply by creditValueCents and divide by 100.
Which of the two prices to use. On a Tech Provider or BYOK connection (the default path), Meta bills conversations directly to you and Notifique charges only softwareFee; the rates rows are not charged, because they already include the Meta rate that’s on your invoice. The rates rows apply to BSP connections, where Notifique is the one paying Meta. See Official WhatsApp by country.
rates is still useful on the default path for one thing: knowing whether the destination accepts the category. Availability applies in both models.
A row with available: false is a destination Meta does not accept in that category. The reason comes in unavailableReason, and the send is refused with 400 DESTINATION_NOT_AVAILABLE. See Official WhatsApp by country.

Cache and usage limit

The response is the same for everyone and changes at most once a day, so it’s worth caching:
  • Cache-Control: public, max-age=300, stale-while-revalidate=3600
  • Content-based ETag, and 304 when you send the same value back in If-None-Match
  • Access-Control-Allow-Origin: *, so you can call it straight from the browser
The default limit is 120 requests per minute per IP. Go over it and the API returns 429 with RATE_LIMIT_EXCEEDED and a Retry-After: 60 header. Cache the response instead of fetching it on every page load.

Next steps