API reference
Templates
API reference descriptions are provided in English to preserve the exact published contract.
List templates
GET /v1/accounts/{AC}/templates
getV1AccountsByAcTemplatesPaginated200
List message templates with their review status and quality.
Required scope: `templates:read`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
limit | query · integer (1–100) | | |
cursor | query · string (max 2048 chars) | | |
wabaSid | query · string (WB… SID) | | Filter by WABA SID |
name | query · string (max 512 chars) | | |
language | query · string (max 16 chars) | | |
status | query · string (max 32 chars) | | |
category | query · string (max 16 chars) | | |
qualityScore | query · string (max 16 chars) | | |
updatedAfter | query · string (date-time) | | |
AC | path · string (AC… SID) | yes | Account SID |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Create a template draft
POST /v1/accounts/{AC}/templates
postV1AccountsByAcTemplatesIdempotency-Key required201
Create a template draft. Nothing is sent to Meta until you submit it for review.
Required scope: `templates:write`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
AC | path · string (AC… SID) | yes | Account SID |
Request body (11 fields)
Request body| Name | Type | Required | Description |
|---|
category | "MARKETING" | "UTILITY" | "AUTHENTICATION" | yes | |
codeExpirationMinutes | integer (1–90) | | |
components | object[] | | |
headerMediaHandle | string (pattern ^[0-9]+:\S+$, max 2048 chars) | | Handle returned by POST /media/uploads for a media template header. |
language | string (max 16 chars) | yes | |
libraryTemplateName | string (max 256 chars) | | |
messageSendTtlSeconds | integer (30–2592000) | | |
name | string (max 512 chars) | yes | |
parameterFormat | "NAMED" | "POSITIONAL" | yes | |
source | "custom" | "meta_library" | | |
wabaSid | string (WB… SID) | | WABA SID; required when the account has multiple WABAs |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Browse the versioned Meta Template Library catalog
GET /v1/accounts/{AC}/templates/library
getV1AccountsByAcTemplatesLibraryPaginated200
Required scope: `templates:read`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
q | query · string (max 128 chars) | | |
category | query · "MARKETING" | "UTILITY" | "AUTHENTICATION" | | |
language | query · string (max 16 chars) | | |
limit | query · integer (1–100) | | |
cursor | query · string (max 2048 chars) | | |
AC | path · string (AC… SID) | yes | Account SID |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Reconcile the complete local template projection with Meta
POST /v1/accounts/{AC}/templates/reconcile
postV1AccountsByAcTemplatesReconcileIdempotency-Key required202
Required scope: `templates:write`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
wabaSid | query · string (WB… SID) | | |
AC | path · string (AC… SID) | yes | Account SID |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Fetch a template
GET /v1/accounts/{AC}/templates/{TM}
getV1AccountsByAcTemplatesByTm200
Fetch one template with its components, status and rejection reason, if any.
Required scope: `templates:read`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
AC | path · string (AC… SID) | yes | Account SID |
TM | path · string (TM… SID) | yes | Template SID |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Edit a draft or provider-backed template
PATCH /v1/accounts/{AC}/templates/{TM}
patchV1AccountsByAcTemplatesByTmIdempotency-Key required200202
Edit a draft, or a template already with Meta where Meta allows the change.
Required scope: `templates:write`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
AC | path · string (AC… SID) | yes | Account SID |
TM | path · string (TM… SID) | yes | Template SID |
Request body (5 fields)
Request body| Name | Type | Required | Description |
|---|
category | "MARKETING" | "UTILITY" | "AUTHENTICATION" | | |
codeExpirationMinutes | integer (1–90) | | |
components | object[] | | |
headerMediaHandle | string (pattern ^[0-9]+:\S+$, max 2048 chars) | | Handle returned by POST /media/uploads for a media template header. |
messageSendTtlSeconds | integer (30–2592000) | | |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Delete a template by name
DELETE /v1/accounts/{AC}/templates/{TM}
deleteV1AccountsByAcTemplatesByTm202
Delete a template. Meta deletes every language of the same name, and the name cannot be reused for 30 days.
Required scope: `templates:write`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
language | query · string (max 16 chars) | | |
AC | path · string (AC… SID) | yes | Account SID |
TM | path · string (TM… SID) | yes | Template SID |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Record an approved-template category appeal submitted through Meta Business Support
POST /v1/accounts/{AC}/templates/{TM}/appeal
postV1AccountsByAcTemplatesByTmAppealIdempotency-Key required200
Records the confirmed external case for the latest Meta category change and projects IN_APPEAL.
Required scope: `templates:write`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
AC | path · string (AC… SID) | yes | Account SID |
TM | path · string (TM… SID) | yes | Template SID |
Request body (3 fields)
Request body| Name | Type | Required | Description |
|---|
confirmedSubmittedToMeta | true | yes | |
note | string (max 2000 chars) | yes | |
supportCaseReference | string (max 256 chars) | yes | |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Duplicate a template as a new draft while retaining its origin
POST /v1/accounts/{AC}/templates/{TM}/duplicate
postV1AccountsByAcTemplatesByTmDuplicateIdempotency-Key required201
Required scope: `templates:write`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
AC | path · string (AC… SID) | yes | Account SID |
TM | path · string (TM… SID) | yes | Template SID |
Request body (2 fields)
Request body| Name | Type | Required | Description |
|---|
language | string (max 16 chars) | | |
name | string (max 512 chars) | yes | |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Fetch template category, version, and appeal history
GET /v1/accounts/{AC}/templates/{TM}/history
getV1AccountsByAcTemplatesByTmHistoryPaginated200
Required scope: `templates:read`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
limit | query · integer (1–100) | | |
cursor | query · string (max 2048 chars) | | |
appealCursor | query · string (max 2048 chars) | | |
AC | path · string (AC… SID) | yes | Account SID |
TM | path · string (TM… SID) | yes | Template SID |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.
Submit a template for review
POST /v1/accounts/{AC}/templates/{TM}/submit
postV1AccountsByAcTemplatesByTmSubmitIdempotency-Key required202
Submit a draft to Meta for review. The result arrives as a `template.*` webhook event.
Required scope: `templates:write`.
Parameters
Parameters| Name | Type | Required | Description |
|---|
AC | path · string (AC… SID) | yes | Account SID |
TM | path · string (TM… SID) | yes | Template SID |
Errors: 400, 401, 403, 404, 409, 422, 429, 500, 503 — see errors.