---
title: "Submit a message template for review"
method: POST
path: "/v1/accounts/{account_id}/templates"
tags: ["Templates"]
---

# Submit a message template for review

`POST /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`

Meta reviews it (usually minutes); it can be sent only once list-templates shows it APPROVED. Categories: MARKETING or UTILITY. Number body variables {{1}}, {{2}}, … in order and give one body_examples value per variable.

## Path parameters

- `account_id` string, required

## Request body

- CreateTemplateBody
  - `account_id` string: ignored; the path account_id is used
  - `body` string, required
  - `body_examples` string[], nullable
  - `buttons` TemplateButtonInput[], nullable
    - `phone_number` string
    - `text` string, required
    - `type` string, required
    - `url` string
  - `call_permission` boolean
  - `category` string, required
  - `footer` string
  - `header` string
  - `header_example` string
  - `language` string
  - `name` string, required

## Response `201`

Created

- CreateTemplateOutput
  - `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
  - `template` CreatedTemplateInfo
    - `category` string, required: the category Meta assigned, which may differ from the one asked for
    - `id` string, required: Meta's template id
    - `status` string, required: the review status, usually PENDING; poll wa_list_templates until APPROVED before sending it

## 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)
