bid_amount value per 1,000 deliveries within the bid_spec object.bid_amount in bid_spec is what 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.per_message_bid_multiplier for individual message adjustments only. The per_message_bid_multiplier scales the template’s 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 for bulk changes.bid_amount to 50,000 and then apply a multiplier of 2.0 on every single message, delivery performance might differ from setting the template’s bid_amount to 100,000 directly — even though the effective max price is the same. For best results, set the bid at the template level and update the template’s bid_spec as needed rather than changing the message level multiplier as a workaround for such cases.bid_spec object in the request body.curl 'https://graph.facebook.com/<API_VERSION>/<WHATSAPP_BUSINESS_ACCOUNT_ID>/message_templates' \ -H 'Authorization: Bearer <ACCESS_TOKEN>' \ -H 'Content-Type: application/json' \ -d ' { "name": "seasonal_sale_promo", "category": "MARKETING", "language": "en", "components": [ { "type": "BODY", "text": "Shop our seasonal sale! Up to 50% off selected items." } ], "bid_spec": { "bid_amount": <BID_AMOUNT>, "bid_strategy": "LOWEST_COST_WITH_BID_CAP" } }'
bid_spec is not included, the template uses standard rate card pricing.| Placeholder | Description | Example Value |
|---|---|---|
<ACCESS_TOKEN>String | Required. | EAAA... |
<API_VERSION>String | Optional. Graph API version. | v25.0 |
<WABA_ID>String | Required. WhatsApp Business Account ID. | 102290129340398 |
<BID_AMOUNT>int32 | Required. Maximum price per 1,000 message deliveries, expressed in your WABA currency’s smallest unit (cents for USD, paise for INR, peso for MXN). See supported currencies for a list of currencies. | 87000 |
<BID_STRATEGY>Enum | Required. The bid strategy to use. Currently supports only LOWEST_COST_WITH_BID_CAP. | LOWEST_COST_WITH_BID_CAP |
bid_amount represents your max price per 1,000 deliveries in your WABA currency’s smallest unit. To convert from your desired per-delivery price:bid_amount to 87000.bid_amount to 5000.curl 'https://graph.facebook.com/<API_VERSION>/<TEMPLATE_ID>/?fields=bid_spec' \ -H 'Authorization: Bearer <ACCESS_TOKEN>'
| Placeholder | Description | Example Value |
|---|---|---|
<ACCESS_TOKEN>String | Required. | EAAA... |
<API_VERSION>String | Optional. Graph API version. | v25.0 |
<TEMPLATE_ID>String | Required. ID of the WhatsApp message template. | 1733678867511493 |
{ "bid_spec": { "bid_strategy": "LOWEST_COST_WITH_BID_CAP", "bid_amount": 87000 }, "id": "1733678867511493" }
bid_spec on templates that were originally created with a max price. The same parameters apply.bid_spec to an existing template that was created without it. You must create a new template with bid_spec included.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> } }'
| Placeholder | Description | Example Value |
|---|---|---|
<ACCESS_TOKEN>String | Required. | EAAA... |
<API_VERSION>String | Optional. Graph API version. | v25.0 |
<TEMPLATE_ID>String | Required. ID of the WhatsApp message template. The template must have been originally created with bid_spec. | 1733678867511493 |
<BID_AMOUNT>int32 | Required. Updated maximum price per 1,000 message deliveries, expressed in your WABA currency’s smallest unit. | 4000 |
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_amount by 50%. If the template’s bid_amount is 2000, the effective max price for this message becomes 3000.| Placeholder | Description | Example Value |
|---|---|---|
<ACCESS_TOKEN>String | Required. | EAAA... |
<API_VERSION>String | Optional. Graph API version. | v25.0 |
<WHATSAPP_BUSINESS_PHONE_NUMBER_ID>String | Required. WhatsApp business phone number ID. | 106540352242922 |
<WHATSAPP_USER_PHONE_NUMBER>String | Required. WhatsApp user phone number. | +16505551234 |
<PER_MESSAGE_BID_MULTIPLIER>Float | Optional. Default: 1A positive multiplier applied to the template’s bid_amount. For example, 1.5 increases the max price by 50%, 0.5 decreases it by 50%, and 1 (default) uses the template’s max price amount unchanged. | 1.5 |
targeting_spec value must be serialized JSON. For example:curl '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>'
| Placeholder | Description | Example Value |
|---|---|---|
<ACCESS_TOKEN>String | Required. | EAAA... |
<API_VERSION>String | Optional. Graph API version. | v25.0 |
<WABA_ID>String | Required. WhatsApp Business Account ID. | 102290129340398 |
<DATE_INTERVAL>Enum | Required. Lookback period for the historical data used to generate estimates. One of: L1D (last 1 day), L7D (last 7 days), L14D (last 14 days), L28D (last 28 days). | L7D |
<TARGETING_SPEC>JSON | Required. Serialized JSON specifying geographic targeting. Must include geo_locations with a countries array. | {"geo_locations":{"countries":["IN"]}} |
{ "waba_currency": "USD", "estimates": [ { "bid_amount": 400, "users": 1000, "deliveries_lower_bound": 500, "deliveries_upper_bound": 570, "cost_lower_bound": 389.74, "cost_upper_bound": 390.74 }, { "bid_amount": 520, "users": 1000, "deliveries_lower_bound": 600, "deliveries_upper_bound": 650, "cost_lower_bound": 400.74, "cost_upper_bound": 510.74 } ] }
estimates entries at different max price amounts, allowing you to compare expected delivery volumes and costs across price points.| Field | Description |
|---|---|
waba_currency | The currency of your WhatsApp Business account. |
bid_amount | Max price per 1,000 message deliveries, in the WABA currency’s smallest unit. |
users | Targeted user count. Fixed at 1,000 during beta. |
deliveries_lower_bound | Lower bound of the estimated delivery range for this max price amount. |
deliveries_upper_bound | Upper bound of the estimated delivery range for this max price amount. |
cost_lower_bound | Lower bound of the estimated average cost per 1,000 deliveries, in the WABA currency’s smallest unit. |
cost_upper_bound | Upper bound of the estimated average cost per 1,000 deliveries, in the WABA currency’s smallest unit. |
/<WHATSAPP_BUSINESS_ACCOUNT_ID>?fields=pricing_analytics: pricing_category = MARKETING_LITE/<WHATSAPP_BUSINESS_ACCOUNT_ID>?fields=template_analytics: product_type = MARKETING_MESSAGES_LITE_APImarketing_lite for pricing.category, while analytics APIs use uppercase MARKETING_LITE for pricing_category. When max price is enabled, the pricing webhook also includes a cost object with the estimated charge for the message."pricing": { "billable": true, "pricing_model": "PMP", "category": "marketing_lite", "type": "regular", "cost": { "amount": 0.035, "currency": "USD" } }
| Field | Type | Description |
|---|---|---|
amount | Float | Cost of the delivered or read message. Appears on delivered and read events. The unit is the currency base unit (dollar for USD, rupee for INR), consistent with the analytics API cost field. |
currency | String | WABA-supported currency in ISO format. |
{ "pricing_analytics": { "data": [ { "data_points": [ { "start": 1748761200, "end": 1748847600, "country": "IN", "pricing_type": "REGULAR", "pricing_category": "MARKETING_LITE", "volume": 1, "cost": 10 } ] } ] } }
{ "data": [ { "granularity": "DAILY", "product_type": "MARKETING_MESSAGES_LITE_API", "data_points": [ { "template_id": "1421988012088524", "start": 1718064000, "end": 1718150400, "sent": 1, "delivered": 1, "read": 1, "cost": [ { "type": "amount_spent", "value": 0.01 }, { "type": "cost_per_delivered", "value": 0.01 } ] } ] } ] }
| Code | Message | Possible reasons and solutions |
|---|---|---|
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. |