Skip to main content

What it does

Lists an application’s WhatsApp templates: cursor pagination + status/category/language filters + name/content search + expand. Data is read fresh directly from Meta (no caching); the app_id is verified to belong to the organization.

Endpoint

Headers

Authorization
string
required
Secret key in Bearer sk_... format. See Secret Key authentication.

Path parameters

app_id
string
required
Application ID. Must belong to the organization (otherwise 404).

Query parameters

All query parameters are optional.
limit
integer
default:"20"
Maximum records per page. Range 1–100.
after
string
Next-page cursor (the nextCursor from a previous response). Do not pass it on the first request.
before
string
Previous-page cursor (the previousCursor from a response). Cannot be used together with after.
status
string
Status filter. See Template Status.
category
string
Category filter. See Template Category.
language
string
Language filter: a BCP-47 code (e.g. en, tr).
Meta name_or_content search (matches the template name or body text).
expand
string[]
components → also returns the components (not returned by default). Repeatable.
Pagination: don’t pass a cursor on the first request; send the response’s nextCursor as after= on the next request.

Response

Type: CursorPagingResult[TemplateResponseModel]. The envelope is { "data": [ ... ], "pagingMetadata": { ... }, "isSuccess": true }.
isSuccess
boolean
true when the request completed successfully.
data
object[]
The list of templates (TemplateResponseModel).
pagingMetadata
object
Null fields (id, createdAt, messageSendTtlSeconds, correctCategory, previousCategory) are dropped from the response. On the first request, do not pass after/before — take the cursors from the response.

Examples

First page:
Next page (nextCursorafter):
Empty result: "data": [] with "pagingMetadata": { "hasNext": false, "hasPrevious": false, "pageSize": 0 }.

Errors

errors
object
Error details with code, group, and description; isSuccess is false.

Auth / tenant

Request validation (422)

Meta-side (list_templates_async — no subcode routing)

Example error response (429 rate limit):