---
title: "Create a WhatsApp template"
method: POST
path: "/v1/whatsapp/senders/{number}/templates"
tags: ["WhatsApp"]
---

# Create a WhatsApp template

`POST /v1/whatsapp/senders/{number}/templates`

Creates a WhatsApp template for the sender identified by `number` and submits it for provider review.

## Path parameters

- `number` string, required

## Request body

- WhatsAppTemplateCreateRequest
  - `name` string, required — Template name.
  - `language` string, required — Template language code.
  - `category` 'marketing' | 'authentication' | 'utility', required — Template category.
  - `components` WhatsAppTemplateComponent[], required — Structural components of the template. Must include a `BODY` component.
    - `type` 'HEADER' | 'BODY' | 'FOOTER' | 'BUTTONS', required — Component type.
    - `format` 'TEXT' | 'IMAGE' | 'VIDEO' | 'DOCUMENT' | 'LOCATION' — Header content format. Present on `HEADER` components only.
    - `text` string — Component text, with `{{n}}` placeholders where applicable.
    - `example` object — Sample values for the component's placeholders, in the shape the provider expects.
    - `buttons` object[] — Button definitions. Present on `BUTTONS` components only.

## Response `201`

The newly created WhatsApp template.

- WhatsAppTemplateResponse
  - `template` WhatsAppTemplate, required
    - `uuid` string, uuid, required — Template ID.
    - `name` string, required — Template name.
    - `language` string, required — Template language code.
    - `category` 'marketing' | 'authentication' | 'utility', required — Template category.
    - `status` 'draft' | 'pending' | 'approved' | 'rejected' | 'paused' | 'flagged' | 'disabled' | 'in_appeal' | 'pending_deletion' | 'deleted' | 'unknown', required — Template review/approval status.
    - `quality_rating` 'high' | 'medium' | 'low' | 'unknown' | 'null', nullable — Template's messaging quality rating.
    - `submitted_at` string, nullable — Date and time the template was submitted for review, in ISO 8601 format.
    - `components` WhatsAppTemplateComponent[], required — Structural components of the template.
      - `type` 'HEADER' | 'BODY' | 'FOOTER' | 'BUTTONS', required — Component type.
      - `format` 'TEXT' | 'IMAGE' | 'VIDEO' | 'DOCUMENT' | 'LOCATION' — Header content format. Present on `HEADER` components only.
      - `text` string — Component text, with `{{n}}` placeholders where applicable.
      - `example` object — Sample values for the component's placeholders, in the shape the provider expects.
      - `buttons` object[] — Button definitions. Present on `BUTTONS` components only.
    - `created_at` string, required — Date and time the template was created, in ISO 8601 format.

## Other responses

- `400` — Returns when the request body or parameters are invalid.
- `401` — Returns when the request is not authenticated.
- `402` — Returns when the account balance is insufficient.
- `403` — Returns when WhatsApp is account-suspended, or the templates capability is not enabled for the account.
- `404` — Returns when WhatsApp is not available or not enabled for the account, or no sender matches `number`.
- `409` — Returns when a template with this name and language already exists.
- `422` — Returns when the template components are structurally invalid.
- `429` — Returns when the account has exceeded its request rate limit.

## Changes

- **2026-09-23** `8bde78f383c6` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/wavix/apis/wavix-apis/changes/v1/whatsapp/senders/:number/templates/post.md)

---

[API](https://skmtc.dev/wavix/apis/wavix-apis.md) · [All operations](https://skmtc.dev/wavix/apis/wavix-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/wavix/apis/wavix-apis/revisions/43ad912a102a?raw)
