Skip to main content
POST

Authorizations

Authorization
string
header
required

Secret key in Bearer sk_... format. Server-to-server only — never embed it in a browser or mobile client. The organization is resolved from the key, so organization_id is never passed explicitly.

Path Parameters

app_id
string
required

Application ID. Must belong to the organization resolved from your secret key, otherwise the request returns 404 with APPLICATION_004.

Example:

"app_7poyXj8GXuv76e"

Body

application/json
name
string
required

Must start with a lowercase letter and contain only lowercase letters, digits, and underscores (WA_TPL_034). Must be unique for the name + language pair, otherwise 409 with META_017.

Maximum string length: 512
Pattern: ^[a-z][a-z0-9_]*$
language
enum<string>
required

Closed list — a code outside it is rejected with 422, so this is not free-form BCP-47. Note that the language query filter on Get Templates is a plain string passed to Meta as-is and is not restricted to this list.

Available options:
af,
sq,
ar,
ar_EG,
ar_AE,
ar_LB,
ar_MA,
ar_QA,
az,
be_BY,
bn,
bn_IN,
bg,
ca,
zh_CN,
zh_HK,
zh_TW,
hr,
cs,
da,
prs_AF,
nl,
nl_BE,
en,
en_GB,
en_US,
en_AE,
en_AU,
en_CA,
en_GH,
en_IE,
en_IN,
en_JM,
en_MY,
en_NZ,
en_QA,
en_SG,
en_UG,
en_ZA,
et,
fil,
fi,
fr,
fr_BE,
fr_CA,
fr_CH,
fr_CI,
fr_MA,
ka,
de,
de_AT,
de_CH,
el,
gu,
ha,
he,
hi,
hu,
id,
ga,
it,
ja,
kn,
kk,
rw_RW,
ko,
ky_KG,
lo,
lv,
lt,
mk,
ms,
ml,
mr,
nb,
ps_AF,
fa,
pl,
pt_BR,
pt_PT,
pa,
ro,
ru,
sr,
si_LK,
sk,
sl,
es,
es_AR,
es_CL,
es_CO,
es_CR,
es_DO,
es_EC,
es_HN,
es_MX,
es_PA,
es_PE,
es_ES,
es_UY,
sw,
sv,
ta,
te,
th,
tr,
uk,
ur,
uz,
vi,
zu
category
enum<string>
required

Determines which components are allowed. UTILITY for transactional messages, MARKETING for promotional, AUTHENTICATION for one-time passcodes.

Available options:
UTILITY,
MARKETING,
AUTHENTICATION
body
object
required
header
object
buttons
object[]

Not allowed together with carousel — carousel buttons belong to each card.

Maximum array length: 10

Turns the template into a carousel: a body bubble followed by 2–10 swipeable cards. MARKETING only.

Required array length: 2 - 10 elements
allowCategoryChange
boolean

When true, Meta may automatically re-classify the template's category.

messageSendTtlSeconds
integer

Message time-to-live. Valid range depends on the category — see the TTL ranges above.

limitedTimeOffer
object

Response

The template was created and submitted for review.

data
object

Lean creation response. It does not carry components, qualityScore, rejectedReason, parameterFormat, or the DB id — fetch those with Get Template Detail or Get Templates.

isSuccess
enum<boolean>
Available options:
true