Skip to main content
POST
Send a marketing message
Send a marketing template through a connected Official API Number with a credential that has messages:write. Meta must allow that account to use its Marketing Messages API and accept the required terms. This request does not enroll an account or accept terms for it. A simulated Number cannot send it. Set product_policy to STRICT explicitly. The endpoint rejects a missing policy or CLOUD_API_FALLBACK. Include the recipient, a template name, and a deterministic language code:
When you provide template.components, use the shapes in the API reference. Carousel components accept 1 to 10 cards with zero-based card_index values from 0 to 9. For a date-time body parameter, include fallback_value; you may also send year, month, day_of_month, hour, minute, day_of_week, and calendar as structured values supported by Meta. For a limited-time offer template, send one limited_time_offer component with one limited_time_offer parameter whose expiration_time_ms is the offer’s expiration as a Unix timestamp in milliseconds:
Buttons accept the quick_reply, url, catalog, and copy_code subtypes. The endpoint rejects other button subtypes, such as Flow or multi-product buttons. Send the body as Content-Type: application/json. The endpoint validates the whole request before sending it to Meta. A 400 response names the field that failed validation. For a component, it reports the field within the component matching your type and sub_type, or reports an unsupported component when none matches. Meta returns the send response and remains the authority for account eligibility, template approval, message status, and any charge. This endpoint does not switch a Campaign send to Marketing Messages. After an uncertain response, reconcile the message with Meta and your status webhooks before deciding whether to send again. Do not replay the request blindly. Set message_activity_sharing only after establishing the required permission for that recipient and account. Direct Graph requests do not perform Campaign audience suppression and opt-out checks; use the Campaign workflow when those controls are required. Read the WABA’s Marketing Messages status to see the raw fields Meta exposes. Those fields do not establish eligibility or accepted terms for a send.

Authorizations

Authorization
string
header
required

Polymorfa organization key (pmfa_ prefix) or project token (pmfa_pt_ prefix). Client tokens are not accepted by Graph operations.

Path Parameters

version
string
required

Specifies version for this path parameter.

Example:

"v26.0"

phoneNumberId
string
required

Identifier for the phone number.

Example:

"123456789012345"

Body

application/json
messaging_product
enum<string>
required

Messaging product associated with this Graph API object.

Allowed values

Available options:
whatsapp
recipient_type
enum<string>
required

Category assigned to recipient.

Allowed values

Available options:
individual
to
string
required

Specifies to for this graph graph marketing send request.

Value constraints

Minimum string length: 1
type
enum<string>
required

Type discriminator for this object.

Allowed values

Available options:
template
template
object
required

Structured template values for this graph graph marketing send request.

product_policy
enum<string>
required

Specifies product policy for this graph graph marketing send request.

Allowed values

Available options:
STRICT
message_activity_sharing
boolean

Whether message activity sharing.

Response

Meta's response to the marketing message request

The response is of type unknown.