Skip to main content
O preço por mensagem publicado do Meta / WhatsApp Business Platform para um único mercado + moeda + categoria — o preço de tabela que a Meta cobra por mensagem entregue. É a tabela pública da Meta exposta como dado de referência; não é a cobrança real da sua conta.

Endpoint

GET https://pilotstatus.com.br/v1/meta/pricing
Requer qualquer API key válida (ps_*) no header x-api-key. Chaves com escopo de número ou de tenant funcionam — preço é dado global, não vinculado a um número.

Parâmetros de query

string
Código do mercado: ISO 3166-1 alpha-2 para países (BR, GB, IN…), NAM para América do Norte, ou um bucket regional (AFR, APAC, CEEU, LATAM, MDE, WEU, GLO).
string
Código de moeda ISO 4217 (USD, BRL, EUR, GBP, INR…).
string
marketing, utility, authentication, service ou authentication_international. Obrigatório junto com market e currency.
boolean
true / 1 → também retorna volumeTiers (a Meta cobra menos por mensagem conforme o volume mensal cresce).

Modos

Exemplos

Preço (200)
Com volume tiers (200)
Metadados (200)

Campos da resposta

string
Código do mercado devolvido.
string
Nome legível do mercado.
string
Moeda ISO 4217 devolvida.
string
A categoria pedida.
number
Preço de tabela por mensagem entregue na moeda pedida.⚠️ Responde 0 para Service até 30/09/2026 e deixa de o fazer depois disso — ver o aviso abaixo. Leia o valor; não fixe no código quais categorias são grátis.
array
Só com tiers=1. Cada { from, to, pricePerMessage } — o preço cai conforme o volume mensal cresce; to é null no tier superior ilimitado. Vazio para categorias sem tiering (Marketing / Service).

Categorias de mensagem

A Meta só muda preços no 1º dia de cada trimestre (aviso de ~1 mês), então esta tabela é atualizada por schedule. Trate os valores como indicativos e confirme com as tabelas oficiais da Meta para a cobrança exata.

⚠️ A partir de 1 de outubro de 2026, Serviço deixa de ser grátis

A Meta muda a cobrança nessa data, e é a mudança mais importante desta página: ⛔ A franquia é por NÚMERO, não por WABA. Cada número tem as suas próprias 1.000 — concentrar vários clientes na mesma conta do WhatsApp não os faz partilhar franquia. Conversas 1:1 e de grupo dividem a mesma franquia do número. ⚠️ Sem forma de pagamento configurada na Meta, ela para de entregar depois das 1.000. Não é degradação silenciosa: as mensagens deixam de sair. ⇒ O que isto significa para quem lê esta rota: pricePerMessage para service responde 0 hoje e deixará de responder 0. Uma integração que trate «serviço é sempre grátis» como constante passa a calcular custo a menos. Leia o valor em vez de o assumir — é para isso que ele é devolvido. 📌 Para o valor exato cobrado numa mensagem específica, não reconstrua a partir desta tabela: use o metaPricing de GET /v1/messages/{messageId} ou o pricing do status de entrega no webhook. pricing.type distingue free_customer_service (dentro da franquia) de regular (cobrada), e é o veredito da própria Meta.

Não há data de vigência na resposta — e por quê

A resposta não carrega effectiveFrom / effectiveTo. Não existe campo dizendo a que trimestre um preço pertence nem quando ele deixa de valer, então não dá para saber só por esta resposta se você está com a tabela atual.O motivo está na fonte: a tabela publicada que espelhamos (whatsappbusiness.com) informa os preços, não as datas em que passaram a valer. Emitir um effectiveFrom seria inventá-lo.
Até isso ser exposto, fixe o instante você mesmo: registre a data em que leu cada preço junto do valor, e releia a tabela no início de cada trimestre (a Meta só muda preço no dia 1º de um trimestre). Se você precisa do valor exato que a Meta cobrou por uma mensagem específica, não reconstrua a partir desta tabela: leia pricing.category e pricing.type direto do status de entrega daquela mensagem no envelope nativo do webhook da Meta. Esse é o veredito da própria Meta para aquela mensagem, incluindo se foi cobrada.
A resposta traz a IDADE do preço. fetchedAt diz quando puxamos a tabela publicada pela última vez, e source diz de onde. Não é vigência — e não há vigência para dar, pela razão acima — mas responde à pergunta prática: estou a usar a tabela do trimestre corrente?

Erros comuns

  • 400 MARKET_CURRENCY_CATEGORY_REQUIRED — envie market, currency e category juntos (ou nenhum, para metadados).
  • 400 INVALID_CATEGORY — o valor de category não é uma das cinco categorias válidas.
  • 401 — header x-api-key ausente ou inválido.
  • 404 PRICE_NOT_FOUND — sem rate publicada para esse mercado + moeda + categoria.