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

# Create a message template and submit it to Meta

> Compiles a plain template payload, enforces dashboard character limits, probes URL buttons, and submits the template. A PENDING result blocks send until Meta approves it. Call POST /templates/validate first.



## OpenAPI

````yaml /openapi.json post /templates
openapi: 3.1.0
info:
  title: GreenTick Developer API
  version: 1.0.0
  summary: WhatsApp messaging, contacts, workflows, and webhooks
  description: >-
    Use GreenTick's REST API to send WhatsApp messages, synchronize contacts,
    trigger workflows, and receive signed event webhooks. Each API key belongs
    to one connected phone number.
  contact:
    name: GreenTick Support
    url: https://greentick.ai
servers:
  - url: https://api.greentick.ai/v1
    description: GreenTick API v1
security: []
tags:
  - name: System
    description: Health and API metadata
  - name: Messages
    description: Send WhatsApp messages
  - name: Conversations
    description: List inbox threads and fetch message history
  - name: Templates
    description: Discover approved templates and their variables
  - name: Contacts
    description: Synchronize customer contacts
  - name: Labels
    description: Contact label catalog for the connected phone number
  - name: Attributes
    description: Contact custom attribute definitions for the connected phone number
  - name: Phone numbers
    description: WhatsApp sending line for this phone number
  - name: Automations
    description: List enrollable automations and start one for a contact
  - name: Workflow hooks
    description: Trigger GreenTick automations from external systems
  - name: Webhooks
    description: Subscribe Zapier, Make.com, or your own server to GreenTick events
  - name: API key
    description: Check the Bearer API key and account timezone
  - name: MCP platform
    description: Limits, usage, and shared connector behavior
  - name: Media
    description: Host customer-supplied files
  - name: Workflows
    description: Create, publish, and export automations
  - name: Flows
    description: WhatsApp Flows
  - name: AI bots
    description: AI bots and knowledge
  - name: Broadcasts
    description: Template broadcasts
  - name: Catalogs
    description: Commerce catalogs, products, and orders
  - name: Ads
    description: Click-to-WhatsApp ads and conversions
paths:
  /templates:
    post:
      tags:
        - MCP platform
      summary: Create a message template and submit it to Meta
      description: >-
        Compiles a plain template payload, enforces dashboard character limits,
        probes URL buttons, and submits the template. A PENDING result blocks
        send until Meta approves it. Call POST /templates/validate first.
      operationId: createTemplate
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TemplateCreateRequest'
      responses:
        '200':
          description: Template submitted or structured error envelope
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
      security:
        - apiKey: []
components:
  schemas:
    TemplateCreateRequest:
      type: object
      required:
        - name
        - language
        - category
        - body
      properties:
        name:
          type: string
          description: Template name.
        language:
          type: string
          example: en_US
        category:
          type: string
          enum:
            - MARKETING
            - UTILITY
            - AUTHENTICATION
        body:
          type: string
        footer:
          type: string
        header:
          type: object
          properties:
            format:
              type: string
              enum:
                - TEXT
                - IMAGE
                - VIDEO
                - DOCUMENT
            text:
              type: string
            mediaId:
              type: string
            mediaUrl:
              type: string
        buttons:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                  - QUICK_REPLY
                  - URL
                  - PHONE_NUMBER
                  - COPY_CODE
              text:
                type: string
              url:
                type: string
              phoneNumber:
                type: string
              example:
                type: string
        samples:
          type: object
          additionalProperties:
            type: string
        phoneNumberRef:
          type: string
        phoneNumberId:
          type: string
  responses:
    BadRequest:
      description: Invalid request
      content:
        application/json:
          schema:
            type: object
            required:
              - success
              - code
              - message
            properties:
              success:
                type: boolean
                example: false
              code:
                type: string
                example: INVALID_TO
              message:
                type: string
                example: to (E.164 phone) is required
    Unauthorized:
      description: Missing, invalid, or revoked API key
      content:
        application/json:
          schema:
            type: object
            required:
              - success
              - code
              - message
            properties:
              success:
                type: boolean
                example: false
              code:
                type: string
                example: INVALID_TO
              message:
                type: string
                example: to (E.164 phone) is required
  securitySchemes:
    apiKey:
      type: http
      scheme: bearer
      bearerFormat: gt_live_…
      description: >-
        Create an API key in GreenTick Developer settings. Send it as
        Authorization: Bearer gt_live_… (Bearer prefix required).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.