Skip to main content
POST
Create a message template

Authorizations

Authorization
string
header
required

Merchant API V2 token. Pass as Authorization: Bearer <token>.

Body

application/json
name
string
required

Unique template name, e.g. "spring_sale_2026".

Required string length: 1 - 512
Pattern: ^[a-z0-9_]+$
category
enum<string>
required

MARKETING for promotions, UTILITY for transactional follow-ups. Meta may re-categorize on review.

Available options:
MARKETING,
UTILITY
body
string
required

Message body. Use {{variable_name}} for values filled in at send time.

Required string length: 1 - 1024
language
string

Defaults to the store's template language.

header
string

Optional text header, max 60 characters. No variables.

Maximum string length: 60
header_image_url
string<uri>

Optional image header. Publicly reachable HTTPS JPEG or PNG URL, 5MB or smaller. Cannot be combined with header.

Optional footer, max 60 characters. No variables.

Maximum string length: 60
buttons
object[]
Maximum array length: 3
parameter_examples
object

Sample value per body variable, e.g. { "customer_name": "Ada" }. Meta reviewers read these, so realistic values approve faster.

Response

Message template

id
string
required
object
enum<string>
required
Available options:
message_template
name
string
required
status
enum<string>
required

Meta review status. Only APPROVED templates can be sent.

Available options:
APPROVED,
IN_APPEAL,
PENDING,
REJECTED,
PENDING_DELETION,
DELETED,
DISABLED,
PAUSED,
LIMIT_EXCEEDED
category
enum<string>
required
Available options:
MARKETING,
UTILITY,
AUTHENTICATION
language
string
required
header
string | null
required
header_image_url
string | null
required
body
string
required
buttons
object[]
required
parameters
string[]
required

Named body variables this template expects, e.g. ["customer_name"]. Pass them as parameters when sending.

rejected_reason
string | null
required