---
title: "Create a template"
method: POST
path: "/api/v1/whatsApp/templates"
tags: ["Templates"]
---

# Create a template

`POST /api/v1/whatsApp/templates`

## Request body

- object
  - `type` string — Template type, for example 'template'.
  - `category` string — High-level category of the template, e.g. MARKETING, UTILITY, AUTHENTICATION.
  - `subCategory` string — Sub-category of the template, e.g. STANDARD, CAROUSEL, CATALOG, CHECKOUT_BUTTON, ORDER_STATUS, LIMITED_TIME_OFFER.
  - `buttonsType` string — Type of buttons configuration, e.g. NONE, quick_reply, call_to_action, quick_reply_and_call_to_action, order_details, checkout.
  - `buttons` object[] — List of buttons used in the template.
    - `type` 'request_contact_info' — Button type, e.g. quick_reply ,url ,call , copy_code , one_tap , launch_catalog ,copy_offer_code ,order_details ,voice_call , call_permission_request.
    - `parameter` object — Configuration of the button.
      - `text` string — Button text shown to the user.
      - `phoneNumber` string — Phone number used for call-type buttons, if applicable.
      - `url` string — URL used for URL-type buttons.
      - `urlType` string — URL type, e.g. 'static' or 'none'.
      - `copyOfferCode` string — Offer code to be copied for copy_offer_code button type.
  - `footer` string — Footer text of the template.
  - `elementName` string — Internal name of the template.
  - `language` string — Language code of the template, e.g. en, es, fr.
  - `header` object — Header configuration of the template.
    - `type` string — Header type, e.g. 'none'.
    - `link` string — Link used in header for media templates.
    - `mediaFromPC` string — Local media reference if media is uploaded from PC.
    - `mediaHeaderId` string — Identifier of the media header.
  - `body` string — Body text of the template, can include variables like {{name}}.
  - `customParams` object[] — List of custom parameters to be used in the template.
    - `paramName` string — Name of the template parameter.
    - `paramValue` string — Default value of the template parameter.
  - `creationMethod` integer — Template creation method. 0 - HUMAN, 1 - AI, 2 - HUMAN_AND_AI.

## Response `200`

Create template success

- object
  - `ok` boolean — Indicates whether the template creation request was successful.
  - `result` object — Details of the created template.
    - `id` string — Unique identifier of the created template.
    - `tenantId` string — Tenant ID that owns this template.
    - `wabaContextId` unknown
    - `clareTemplateId` unknown
    - `status` object — Status metadata for this template in the provider system.
      - `clareTemplateId` unknown
      - `waTemplateId` unknown
      - `newStatus` integer — Numeric status of the template (internal enum).
      - `feedback` string — Feedback message from template review, if any.
      - `submittedAt` string — Timestamp when the template was submitted for review.
      - `currencyMigration` boolean — Indicates whether this template has gone through currency migration.
    - `templateParamMapping` unknown
    - `waTemplateId` unknown
    - `elementName` string — Internal name of the template (element name).
    - `category` string — Template category (e.g. MARKETING, UTILITY, AUTHENTICATION).
    - `subCategory` string — Template sub-category (e.g. STANDARD, CAROUSEL, CATALOG, CHECKOUT_BUTTON, ORDER_STATUS, LIMITED_TIME_OFFER).
    - `catalogInfo` unknown
    - `language` string — Language code of the template (e.g. 'en_US').
    - `customParams` object[] — Array of custom parameter definitions used in the template.
      - `paramName` string — Name of the parameter.
      - `paramValue` string — Default value or example value of the parameter.
    - `hsm` unknown
    - `hsmOriginal` unknown
    - `localizableParams` unknown
    - `lastModified` string — Last modification date of the template.
    - `created` string — Creation date of the template.
    - `lastSynchronized` string — Last synchronization date of the template with upstream systems.
    - `type` integer — Template type (internal numeric enum, 1 indicates template).
    - `header` object — Header configuration of the template.
      - `type` integer — Header type as numeric enum (0 for none).
      - `headerTypeString` string — Header type as string (e.g. 'none', 'text', 'image').
      - `typeString` string — Alias for header type string.
      - `text` unknown
      - `link` string — Header media link, if header is media type.
      - `mediaHeaderId` string — Identifier of the header media, if any.
      - `mediaFromPC` string — Path or flag indicating the media is uploaded from PC.
      - `headerOriginal` unknown
      - `headerParamMapping` unknown
    - `body` string — Template body text with parameter placeholders (e.g. {{name}}).
    - `bodyOriginal` unknown
    - `footer` string — Footer text shown at the bottom of the message.
    - `buttons` object[] — List of buttons configured for the template.
      - `type` string — Button type (e.g. 'url', 'copy_offer_code', 'quick_reply').
      - `parameter` object — Button configuration parameters.
        - `text` string — Button display text.
        - `phoneNumber` string — Phone number associated with the button, if any.
        - `url` string — URL associated with the button, if type is 'url'.
        - `urlOriginal` unknown
        - `urlType` string — URL type (e.g. 'static' or 'none').
        - `buttonParamMapping` unknown
        - `copyOfferCode` unknown
        - `orderDetails` unknown
    - `carouselCards` unknown
    - `buttonsType` integer — Numeric representation of the buttons configuration type.
    - `lastSubmitAttemptDate` unknown
    - `submittedUserId` unknown
    - `wabaCheckPendingStatusTimes` integer — Number of times WABA status check is pending.
    - `lastWABACheckStatusDate` unknown
    - `expiresIn` integer — Lifetime of the template in seconds, 0 means no explicit expiry.
    - `includeExpiryTime` boolean — Indicates whether an explicit expiry time is included.
    - `addSecurityRecommendation` boolean — Indicates whether security recommendation text is added.
    - `isUrlBtnClickTrackingEnabled` boolean — Whether URL button click tracking is enabled for this template.
    - `limitedTimeOffer` unknown
    - `quality` integer — Quality score of the template (0 for default).
    - `creationMethod` integer — Indicates how the template was created (internal enum).

---

[API](https://skmtc.net/wati/apis/api-documentation-v3.md) · [All operations](https://skmtc.net/wati/apis/api-documentation-v3/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wati/api-documentation-v3/versions/dee16d2c7d41/schema)
