> ## Documentation Index
> Fetch the complete documentation index at: https://help.eazybe.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a template

> Submits a new message template to Meta for approval.

<Note>Approval is asynchronous. Poll the list endpoint or subscribe to the `message_template_status_update` webhook.</Note>


## OpenAPI

````yaml /api-reference/meta/openapi.yaml post /meta/wabas/{wabaId}/templates
openapi: 3.1.0
info:
  title: Eazybe Meta API Documentation
  version: 1.0.0
  description: |
    A single authenticated Eazybe REST surface over WhatsApp Business Cloud API.
    The wrapper uses the Meta credentials captured when a WABA is connected to
    Eazybe, so callers never send Meta access tokens directly.
servers:
  - url: https://cerberus.eazybe.com/staging/api/v2
    description: Eazybe staging API v2.
security:
  - bearerAuth: []
tags:
  - name: Phone numbers
    description: Discover connected WABAs and phone-number IDs.
  - name: Messaging
    description: Send WhatsApp messages and update message state.
  - name: Templates
    description: Manage WhatsApp message templates.
  - name: Media
    description: Upload, inspect, and delete WhatsApp media.
  - name: Webhooks
    description: Manage WABA webhook subscriptions.
  - name: Analytics
    description: Read messaging, conversation, pricing, and template analytics.
  - name: Profiles and settings
    description: Manage business profiles and phone-number settings.
  - name: Automation
    description: Configure welcome messages, ice-breakers, and commands.
  - name: QR codes
    description: Manage click-to-chat QR codes.
  - name: Flows
    description: Manage the WhatsApp Flows lifecycle.
  - name: Number administration
    description: Register numbers, manage PINs, and synchronize coexistence data.
  - name: Block list
    description: List, block, and unblock WhatsApp users.
paths:
  /meta/wabas/{wabaId}/templates:
    post:
      tags:
        - Templates
      summary: Create a template
      description: Submits a new message template to Meta for approval.
      operationId: createTemplate
      parameters:
        - $ref: '#/components/parameters/WabaId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - name
                - language
                - category
                - components
              properties:
                name:
                  type: string
                language:
                  type: string
                category:
                  type: string
                components:
                  type: array
                  items:
                    type: object
                    required:
                      - type
                      - format
                      - text
                      - example
                    properties:
                      type:
                        type: string
                      format:
                        type: string
                      text:
                        type: string
                      example:
                        type: object
                        required:
                          - header_text
                        properties:
                          header_text:
                            type: array
                            items:
                              type: string
              description: |-
                ```json
                {
                  "name": "order_update",
                  "language": "en",
                  "category": "UTILITY",
                  "components": [
                    {
                      "type": "HEADER",
                      "format": "TEXT",
                      "text": "Order {{1}}",
                      "example": {
                        "header_text": [
                          "A-1042"
                        ]
                      }
                    },
                    {
                      "type": "BODY",
                      "text": "Hi {{1}}, your order is on its way.",
                      "example": {
                        "body_text": [
                          [
                            "Ravi"
                          ]
                        ]
                      }
                    },
                    {
                      "type": "FOOTER",
                      "text": "Acme Retail"
                    }
                  ]
                }
                ```
            example:
              name: order_update
              language: en
              category: UTILITY
              components:
                - type: HEADER
                  format: TEXT
                  text: Order {{1}}
                  example:
                    header_text:
                      - A-1042
                - type: BODY
                  text: Hi {{1}}, your order is on its way.
                  example:
                    body_text:
                      - - Ravi
                - type: FOOTER
                  text: Acme Retail
      responses:
        '200':
          description: >-
            Template submitted for review


            **Failure responses**


            | **Status** | **Meaning** | **Action** |

            | --- | --- | --- |

            | `401` | Missing, invalid, or expired bearer token |
            Re-authenticate |

            | `404` | `wabaId` not linked to your organization | Verify the id |

            | `400` | Duplicate name+language, missing `example` values, invalid
            category, or malformed components | Read `error.error_user_msg` |

            | `502` | Graph unreachable or timed out | Retry with backoff |
          content:
            application/json:
              schema:
                type: object
                required:
                  - id
                  - status
                  - category
                properties:
                  id:
                    type: string
                  status:
                    type: string
                  category:
                    type: string
              example:
                id: '778899001125'
                status: PENDING
                category: UTILITY
components:
  parameters:
    WabaId:
      name: wabaId
      in: path
      required: true
      description: WhatsApp Business Account ID returned by `GET /meta/phone-numbers`.
      schema:
        type: string
      example: '1029384756'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: Eazybe token
      description: |
        Eazybe bearer token. The token resolves the caller's organization and
        must be kept on the server.

````