---
title: "List a Business number's message templates"
method: GET
path: "/v1/accounts/{account_id}/templates"
tags: ["Templates"]
---

# List a Business number's message templates

`GET /v1/accounts/{account_id}/templates`

## Request

- Base URL: `https://api.whatsmcp.com`
- URL: `https://api.whatsmcp.com/v1/accounts/{account_id}/templates`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Every template with its review status (APPROVED, PENDING, REJECTED). Send an APPROVED one with send-message's template/template_language, supplying `variables` template_variables in order.

## Path parameters

- `account_id` string, required

## Response `200`

OK

- ListTemplatesOutput
  - `refusal` Refusal
    - `account_status` string: when the number is not working: its status — starting, not_running, whatsapp_down, suspended, pairing, unlinked or locked
    - `account_status_reason` string: the detail of account_status, e.g. no_egress, stopped, no_plan
    - `message` string, required: a human-readable explanation
    - `reason` string, required: why the call was declined
    - `refused` boolean, required: true when the call was declined rather than performed
    - `retry_after_seconds` integer: seconds to wait before retrying; absent or 0 means retrying will not help
    - `since` string: when the number stopped working, RFC3339, when known
  - `templates` TemplateInfo[], nullable: every message template with its review status; only APPROVED ones can be sent, with the name/language/variables to pass to wa_send_message
    - `body` string: the template's body text as Meta holds it, with its {{n}} variables
    - `buttons` string[], nullable: one line per button, e.g. 'Quick reply: Yes' or 'Link: Shop → https://…'
    - `call_permission` boolean: true when the template asks the customer to allow the business to call them (WhatsApp's call permission request)
    - `category` string, required: MARKETING, UTILITY or AUTHENTICATION
    - `footer` string: the template's footer, if any
    - `header` string: the template's text header, if any
    - `language` string, required: the template's language/locale code, e.g. en_US — pass it as template_language
    - `name` string, required: the template name — pass it as wa_send_message's template
    - `rejected_reason` string: for a REJECTED template, Meta's reason code (e.g. INVALID_FORMAT, TAG_CONTENT_MISMATCH); fix the template and create it again under a new name
    - `status` string, required: APPROVED, PENDING or REJECTED; only APPROVED templates can be sent
    - `variables` integer, required: how many positional {{1}}…{{n}} values the body needs — supply that many template_variables to wa_send_message, in order

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Unprocessable Entity
- `429`: Too Many Requests
- `500`: Internal Server Error

---

[API](https://skmtc.dev/whatsmcp/apis/whatsmcp-api.md) · [All operations](https://skmtc.dev/whatsmcp/apis/whatsmcp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/whatsmcp/apis/whatsmcp-api/revisions/719dc99224ce?raw)
