Skip to main content
POST
Create a template

Authorizations

Authorization
string
header
required

Your API key, e.g. sk_live_... or sk_test_....

Headers

Idempotency-Key
string

Optional. Makes this write safe to retry: the same key replays the first response instead of acting twice.

Maximum string length: 255

Body

application/json

body_text is required unless library_template_name is set.

name
string
required
Maximum string length: 512
Pattern: ^[a-z0-9_]+$
language
string
required
Maximum string length: 16
category
enum<string>
required
Available options:
AUTHENTICATION,
UTILITY,
MARKETING
body_text
string

Use {{1}}-style placeholders.

Maximum string length: 1024
body_examples
string[]
Maximum array length: 50
Maximum string length: 255
Maximum string length: 60
header
object
buttons
object[]
Maximum array length: 10
submit
boolean

Submit to Meta immediately.

parameter_format
enum<string>

NAMED uses {{first_name}}-style variables.

Available options:
POSITIONAL,
NAMED
library_template_name
string

Clone a ready-made template from GET /v1/templates/library instead of writing body_text.

Maximum string length: 512
Pattern: ^[a-z0-9_]+$
limited_time_offer
object
authentication
object

Media carousels take 2 to 10 cards; product carousels exactly 2 when created. Every card has the same button types.

Maximum array length: 10
message_send_ttl_seconds
integer

How long WhatsApp keeps trying to deliver. Authentication 30–900, utility 30–43200, marketing 43200–2592000. -1 means 30 days (authentication and utility only).

Required range: -1 <= x <= 2592000
call_permission_request
boolean

Marketing or utility: ask the customer for permission to call them. Body only, no buttons.

Marketing: turn off Meta's click tracking for URL buttons.

creative_features
object

Marketing: Meta's automatic creative improvements, such as image_animation or add_text_overlay.

max_price
object

Marketing only, after the max price agreement is accepted. Clear it by sending null for both fields.

Response

Created.

uuid
string
name
string
language
string
category
enum<string>
Available options:
AUTHENTICATION,
UTILITY,
MARKETING
status
enum<string>
Available options:
draft,
submitting,
pending,
approved,
rejected,
paused,
disabled,
archived,
deleted
body_text
string
body_examples
string[]
header
object
buttons
object[]
rejection_reason
string | null
quality_score
string | null
provider_template_id
string | null
submitted_at
string<date-time> | null
approved_at
string<date-time> | null
created_at
string<date-time> | null
limited_time_offer
object | null
call_permission_request
boolean
message_send_ttl_seconds
integer | null
marketing_options
object | null

Creative features and max price as last submitted.

source
string | null

Set when Meta generated the template (for example from Direct Send). Such templates cannot be edited or deleted here.

sub_category
string | null
pending_category
string | null

The category Meta will move this template to.

template_group
string | null

uuid of the template group.

send_features
object[]

Extra inputs a send needs, such as cards, coupon_code or voice_call.

rejection_reason_text
string | null