Skip to main content
É a etiqueta de preço da plataforma, sempre com o valor de hoje. Não precisa de API Key: dá para chamar direto do navegador, de uma página estática ou de um script.

Em poucas palavras

  • Um endpoint público, sem autenticação: GET /v1/pricing.
  • Devolve planos, preço por canal, a taxa de software do WhatsApp Oficial e a tabela por país e categoria.
  • Traz updatedAt, a data em que os preços passaram a valer.

Requisição

Sem Authorization, sem workspace, sem header especial.

Resposta (200)

Exemplo abreviado, com valores ilustrativos. Na resposta real, plans, skus e rates vêm completos (a tabela de países passa de mil linhas).

Campos

credits é o que sai do plano; paygCents é o que sai do saldo em reais. Para converter créditos em reais, multiplique por creditValueCents e divida por 100.
Qual dos dois preços usar. Na conexão Tech Provider ou BYOK (o caminho padrão), a Meta fatura as conversas direto de você e a Notifique cobra apenas softwareFee; as linhas de rates não são cobradas, porque já embutem a tarifa da Meta que está na sua fatura. As linhas de rates valem para as conexões BSP, onde é a Notifique que paga a Meta. Ver WhatsApp Oficial por país.
rates continua útil no caminho padrão para uma coisa: saber se o destino aceita a categoria. A disponibilidade vale nos dois modelos.
Linha com available: false é destino que a Meta não aceita naquela categoria. O motivo vem em unavailableReason, e o envio é recusado com 400 DESTINATION_NOT_AVAILABLE. Ver WhatsApp Oficial por país.

Voz e SMS número próprio

  • Voz: o minuto depende do país do destino (saída) ou do chamador (entrada). Sobretaxas em voice.surcharges só entram em jogo quando você usa record: true ou amdMode diferente de disabled na chamada. Detalhes: Preços e opções de voz.
  • SMS com from: use smsOwnNumber.rates[] em vez dos SKUs fixos SMS_FULL / SMS_STANDARD / SMS_SLOW. Detalhes: SMS número próprio.

Cache e limite de uso

A resposta é igual para todo mundo e muda no máximo uma vez por dia, então vale guardar:
  • Cache-Control: public, max-age=300, stale-while-revalidate=3600
  • ETag no conteúdo, e 304 quando você reenvia o mesmo valor em If-None-Match
  • Access-Control-Allow-Origin: *, dá para chamar direto do navegador
O limite padrão é de 120 requisições por minuto por IP. Estourou, a API devolve 429 com RATE_LIMIT_EXCEEDED e o header Retry-After: 60. Guarde a resposta em cache em vez de consultar a cada carregamento de página.

Próximos passos