Set a max-price for marketing messages (BETA) | Developer Documentation
Set a max-price for marketing messages (BETA)
Updated: Mar 17, 2026
Marketing Messages API for WhatsApp (formerly known as Marketing Messages Lite API) is now generally available.
Amidst our introduction of the max-price feature on the Marketing Messages API for WhatsApp, there is no change to how we charge on the WhatsApp Business Platform. We continue to charge on a per-message basis, as outlined here.
The max-price feature will become available via Limited Beta as of mid-May and be optional throughout 2026.
What is a max-price?
As announced in March 2026 -- in 2026, we’we're introducing new pricing features on the Marketing Messages API for WhatsApp to enable businesses to drive higher ROI and have more control to optimize spend for their marketing messaging campaigns.
Our first pricing feature allows businesses to set a maximum price (max-price) per marketing message delivery; when a max-price is set, Meta will charge that max-price or lower for delivery. Businesses can choose to set a max-price the same as, lower than, or higher than the published rate to achieve their objectives per campaign.
The second pricing feature is the reach estimation tool, which helps businesses set the right max-price by helping them understand estimated delivery rates and costs at different max-prices.
Max-price explainer
The max-price feature allows you to set the maximum price you are willing to pay per message delivery. You are charged your max-price or lower. In the API, you express this as a
bid_amount value per 1,000 deliveries within the bid_spec object.Phased roll-out of the max-price feature
We plan to roll out our max-price feature in 3 phases:
Before you begin
To use the max-price feature, you must:
Recommendations
Set your max-price at the template level. The Meta’Meta's delivery system optimizes against. Setting the right max-price when you create the template gives the system the best signal for delivery optimization.
bid_amount in bid_spec is what The template’template's
per_message_bid_multiplier scales the bid_amount up or down for individual messages, but the delivery system generally gives better performance optimizing based on the original template-level bid_amount on large amount.For example, if you set a template’template's template’template's template’template's
bid_amount to 50,000 and then apply a multiplier of 2.0 on every message, delivery performance might differ from setting the bid_amount to 100,000 directly -- even though the effective max-price is the same. Hence we recommend setting up the bid at template level and update the bid_spec if needed rather than changing the message level multiplier as a workaround.Ramp up traffic gradually. When sending messages with a new max-price template for the first time, increase volume slowly before sending at scale. This aligns with Template pacing best practices and helps the delivery system optimize effectively.
Create templates with max-price
Use the POST /<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates endpoint to set a maximum price and include the
bid_spec object in the request body.Request syntax
curl
If
bid_spec is not included, the template uses standard rate card pricing.Request parameters
<ACCESS_TOKEN>String
Required.
EAAAN6tcBzAUBOZC82CW7iR2LiaZBwUHS4Y7FDtQxRUPy1PHZClDGZBZCgWdrTisgMjpFKiZAi1FBBQNO2IqZBAzdZAA16lmUs0XgRcCf6z1LLxQCgLXDEpg80d41UZBt1FKJZCqJFcTYXJvSMeHLvOdZwFyZBrV9ZPHZASSqxDZBUZASyFdzjiy2A1sippEsF4DVV5W2IlkOSr2LrMLuYoNMYBy8xQczzOKDOMccqHEZD<API_VERSION>String
Optional.
Graph API version.
v25.0
<WABA_ID>StringRequired.
WhatsApp Business Account ID.
102290129340398<BID_AMOUNT>int
Required.
Maximum price per 1,000 message deliveries, expressed in your WABA currency’currency's smallest unit (cents for USD, paise for INR, peso for MXN). See supported currencies for a list of currencies.
87000Calculating max-price amounts
The currency’currency's smallest unit. To convert from your desired per-delivery price:
bid_amount represents your max-price per 1,000 deliveries in your WABA Example: To set a max-price of ₹?0.87 per delivery:
Set
bid_amount to 87000.Example: To set a max-price of $0.05 USD per delivery:
Set
bid_amount to 5000.Retrieve
max-price information
Request syntax
curl 'https://graph.facebook.com/<API_VERSION>/<TEMPLATE_ID>/?fields=bid_spec' \ -H 'Authorization: Bearer <ACCESS_TOKEN>'
Request parameters
| | |
| ||
| |
Example response
{ "bid_spec": { "bid_strategy": "LOWEST_COST_WITH_BID_CAP", "bid_amount": 87000 }, "id": "1733678867511493" }
Update max-price for templates
bid_specbid_specbid_specRequest syntax
curl 'https://graph.facebook.com/<API_VERSION>/<TEMPLATE_ID>/' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "bid_spec": { "bid_strategy": "LOWEST_COST_WITH_BID_CAP", "bid_amount": <BID_AMOUNT> } }'
Request parameters
| | |
| ||
| | |
| |
Adjust max-price when sending messages
Request syntax
curl 'https://graph.facebook.com/<API_VERSION>/<WHATSAPP_BUSINESS_PHONE_NUMBER_ID>/marketing_messages' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d '{ "recipient_type": "individual", "messaging_product": "whatsapp", "to": "<WHATSAPP_USER_PHONE_NUMBER>", "type": "template", "template": { "name": "seasonal_sale_promo", "language": { "code": "en" } }, "bid_spec": { "per_message_bid_multiplier": "<PER_MESSAGE_BID_MULTIPLIER>" } }'
bid_amountbid_amountRequest parameters
| | |
| ||
| | |
| | |
| | |
Estimate reach and costs
Request syntax
targeting_speccurl 'https://graph.facebook.com/<API_VERSION>/<WHATSAPP_BUSINESS_ACCOUNT_ID>/reachestimate?targeting_spec={"geo_locations":{"countries":["IN"]}}&date_interval=<DATE_INTERVAL>' \ -H 'Authorization: Bearer <ACCESS_TOKEN>'
Request parameters
| | |
| ||
| | |
| | |
| | |
Example response
{ "waba_currency": "USD", "estimates": [ { "bid_amount": 400, "users": 1000, "lower_bound_deliveries": 500, "upper_bound_deliveries": 570, "cost_lower_bound": 389.74, "cost_upper_bound": 390.74 }, { "bid_amount": 520, "users": 1000, "lower_bound_deliveries": 600, "upper_bound_deliveries": 650, "cost_lower_bound": 400.74, "cost_upper_bound": 510.74 } ] }
estimatesResponse fields
Metrics and billing
Messages sent with or without the max-price feature use the same Marketing Lite product type (SKU) for billing purposes.
Marketing messages sent with max-price appear in analytics with the following identifiers:
/<WHATSAPP_BUSINESS_ACCOUNT_ID>?fields=pricing_analytics: pricing_category = MARKETING_LITETemplate Analytics/<WHATSAPP_BUSINESS_ACCOUNT_ID>?fields=template_analytics: product_type = MARKETING_MESSAGES_LITE_API
Webhooks use lowercase
marketing_lite for pricing.category, while analytics APIs use uppercase MARKETING_LITE for pricing_category.Pricing analytics response example
{
Template analytics response example
{
For more details on metrics, see Viewing metrics.
Error codes
131061
Marketing templates containing bid_spec are not supported by the Cloud API. To use templates with bid_spec, please use the Marketing Messages API for WhatsApp.
You are sending a template with
bid_spec to the Cloud API /messages endpoint. Send to the /marketing_messages endpoint instead.100
You need to sign the testing legal agreement before sending out messages.
You have not signed the testing legal agreement. Please sign the agreement to gain access to this feature.
For a full list of error codes, see Error codes.