<Intro>

<EndpointHeader />

<Description>

Returns the WhatsApp message templates you can send from. Each entry carries the template's `name` (the reference you pass when sending), its language, category, review status, and its content blocks with example values for every placeholder. The catalogue is returned in full, so this list is not paginated, and it can differ by region: you see the templates stocked for the region you call. Pick a template here, then fill its placeholders in the `components` of [Send a WhatsApp message](/docs/api/reference/send-whats-app-message).

</Description>

</Intro>

<Payload kind="response">

<Field name="data" type="array of object" required>

<Description>

The templates available to your workspace.

</Description>

<FieldChildren kind="response">

<Field name="id" type="object" prefix="data." required>

<Description>

Stable Bird identifier for the template.

</Description>

</Field>

<Field name="name" type="object" prefix="data." required>

<Description>

The template's stable handle. Pass it as the template reference when sending.

</Description>

</Field>

<Field name="description" type="nullable string" prefix="data.">

<Description>

Optional description of the template's purpose. Null when unset.

</Description>

</Field>

<Field name="scope" type="string" prefix="data." required>

<Description>

Whether the template is a built-in Bird template (`system`) or one your workspace authored (`workspace`).

</Description>

<Description>

Possible values: `system`, `workspace`

</Description>

</Field>

<Field name="language" type="object" prefix="data." required />

<Field name="category" type="object" prefix="data." required>

<Description>

Content classification applied to messages sent from this template.

</Description>

</Field>

<Field name="status" type="object" prefix="data." required>

<Description>

The template's review and health status.

</Description>

</Field>

<Field name="components" type="array of object" prefix="data." required>

<Description>

The content blocks that make up the template, in display order.

</Description>

<FieldChildren kind="response">

<Field name="type" type="string" prefix="data.components." required>

<Description>

The content block's type within the template.

</Description>

<Description>

Possible values (may grow over time): `header`, `body`, `footer`, `buttons`

</Description>

</Field>

<Field name="text" type="string" prefix="data.components.">

<Description>

The block's text content, with any variable placeholders shown inline. Present when the block carries text.

</Description>

</Field>

<Field name="example_parameters" type="array of object" prefix="data.components.">

<Description>

Example values for this block's variables, in placeholder order (one per `{{n}}`). Use them to see what a filled message looks like. Present when the block has variables.

</Description>

<FieldChildren kind="response">

<Field name="type" type="object" prefix="data.components.example_parameters." required>

<Description>

The kind of value this parameter accepts.

</Description>

</Field>

<Field name="text" type="string" prefix="data.components.example_parameters.">

<Description>

An example value for a text parameter. Present when `type` is `text`.

</Description>

</Field>

<Field name="name" type="string" prefix="data.components.example_parameters.">

<Description>

The named placeholder this example fills, for templates that use named parameters. Absent for system templates, which use positional parameters.

</Description>

</Field>

</FieldChildren>

</Field>

<Field name="buttons" type="array of object" prefix="data.components.">

<Description>

The buttons attached to this block. Present when the block carries buttons.

</Description>

<FieldChildren kind="response">

<Field name="type" type="string" prefix="data.components.buttons." required>

<Description>

The button's behavior type.

</Description>

<Description>

Possible values (may grow over time): `url`, `otp`

</Description>

</Field>

<Field name="otp_type" type="string" prefix="data.components.buttons.">

<Description>

How the recipient receives the one-time passcode. Present on authentication-template OTP buttons.

</Description>

<Description>

Possible values (may grow over time): `copy_code`

</Description>

</Field>

<Field name="text" type="string" prefix="data.components.buttons." required>

<Description>

The button's label text.

</Description>

</Field>

<Field name="url" type="string" prefix="data.components.buttons.">

<Description>

The URL the button opens, with any variable placeholder shown inline. Present on link buttons.

</Description>

</Field>

<Field name="example_parameters" type="array of object" prefix="data.components.buttons.">

<Description>

Example values for this button's variables, in placeholder order. Present when the button URL has variables.

</Description>

<FieldChildren kind="response">

<Field name="type" type="object" prefix="data.components.buttons.example_parameters." required>

<Description>

The kind of value this parameter accepts.

</Description>

</Field>

<Field name="text" type="string" prefix="data.components.buttons.example_parameters.">

<Description>

An example value for a text parameter. Present when `type` is `text`.

</Description>

</Field>

<Field name="name" type="string" prefix="data.components.buttons.example_parameters.">

<Description>

The named placeholder this example fills, for templates that use named parameters. Absent for system templates, which use positional parameters.

</Description>

</Field>

</FieldChildren>

</Field>

</FieldChildren>

</Field>

</FieldChildren>

</Field>

</FieldChildren>

</Field>

</Payload>