---
title: "List templates"
method: GET
path: "/v1/templates"
---

# List templates

`GET /v1/templates`

List WhatsApp message templates for this project.

## Query parameters

- `limit` integer
- `cursor` string

## Response `200`

List of templates.

- object
  - `items` Template[], required
    - `id` string, required
    - `name` string, required — Template name. For WhatsApp, must match the approved template name in Meta.
    - `language` string, required — Language code.
    - `body` string, required — Default template body with variables: positional ({{1}}, {{2}}) or named ({{customer_name}}, {{contact.first_name}}). Templates created in Zavu are submitted to Meta as positional; templates imported from a WhatsApp Business Account keep their original format (named or positional). Used when no channel-specific body is set.
    - `smsBody` string — Channel-specific body for SMS messages. Falls back to `body` if not set.
    - `telegramBody` string — Channel-specific body for Telegram messages. Falls back to `body` if not set.
    - `instagramBody` string — Channel-specific body for Instagram messages. Falls back to `body` if not set.
    - `category` 'UTILITY' | 'MARKETING' | 'AUTHENTICATION', required — WhatsApp template category.
    - `status` 'draft' | 'pending' | 'approved' | 'rejected'
    - `variables` string[] — List of variable names for documentation.
    - `headerType` string — Type of header (text, image, video, document).
    - `headerContent` string — Header content (text or media URL).
    - `footer` string — Footer text for the template.
    - `buttons` object[] — Template buttons.
      - `type` 'quick_reply' | 'url' | 'phone' | 'otp' | 'request_contact_info'
      - `text` string
      - `url` string
      - `example` string — Sample value used to substitute `{{1}}` in the URL when submitting the template to Meta for review. Only present for dynamic URL buttons.
      - `phoneNumber` string
      - `otpType` 'COPY_CODE' | 'ONE_TAP' — OTP button type. Required when type is 'otp'.
      - `packageName` string — Android package name. Required for ONE_TAP buttons.
      - `signatureHash` string — Android app signature hash. Required for ONE_TAP buttons.
    - `addSecurityRecommendation` boolean — Add 'Do not share this code' disclaimer. Only for AUTHENTICATION templates.
    - `codeExpirationMinutes` integer — Code expiration time in minutes. Only for AUTHENTICATION templates.
    - `whatsapp` object — WhatsApp-specific template information.
      - `templateName` string — WhatsApp template name.
      - `namespace` string — WhatsApp Business Account namespace.
      - `status` string — WhatsApp approval status.
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `nextCursor` string, nullable

## Other responses

- `401` — Unauthorized.

---

[API](https://skmtc.net/zavudev/apis/zavu-unified-messaging-layer-api.md) · [All operations](https://skmtc.net/zavudev/apis/zavu-unified-messaging-layer-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zavudev/zavu-unified-messaging-layer-api/versions/07b87b6ae707/schema)
