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

# List templates

> Lists the templates of the number's WhatsApp Business Account as Meta holds them, with the placeholders each one expects, so your code can discover what to send without WhatsApp Manager. Cached for 5 minutes.



## OpenAPI

````yaml https://tawked.com/openapi.json get /v1/whatsapp/templates
openapi: 3.1.0
info:
  title: Tawked Verify API
  version: 2026-09
  summary: >-
    OTP verification for Saudi mobile numbers over SMS or WhatsApp, in two
    calls.
  description: >-
    Tawked is a Saudi OTP verification API: one request sends a code by SMS or
    WhatsApp to a Saudi mobile number, one request checks it. Built in Jeddah,
    billed only per delivered code. SAR 0.09 per delivered SMS code, prepaid;
    failed sends are not charged. Authenticate with a Bearer API key from the
    dashboard (tk_live_ for production, tk_test_ for the sandbox, tk_partner_
    for partners). Both /v1/... and /api/v1/... answer identically. Rate limit:
    120 requests per minute per key.
  termsOfService: https://tawked.com/en/terms
  license:
    name: Proprietary (Tawked terms of service)
    url: https://tawked.com/en/terms
  contact:
    name: Tawked support
    email: support@tawked.com
    url: https://tawked.com/en/contact
servers:
  - url: https://tawked.com
    description: Production (the sandbox is a tk_test_ key on the same host)
  - url: https://tawked.com/api
    description: The same API under /api/v1/..., kept for older integrations
security:
  - bearerKey: []
  - headerKey: []
tags:
  - name: Verify
    description: Send and check one-time codes.
  - name: WhatsApp
    description: >-
      Send approved WhatsApp templates through the number connected to an
      application; any approved application connects its own number from the
      dashboard.
externalDocs:
  description: Developer docs, with code samples
  url: https://tawked.com/en/docs
paths:
  /v1/whatsapp/templates:
    get:
      tags:
        - WhatsApp
      summary: List templates
      description: >-
        Lists the templates of the number's WhatsApp Business Account as Meta
        holds them, with the placeholders each one expects, so your code can
        discover what to send without WhatsApp Manager. Cached for 5 minutes.
      operationId: whatsapp_templates
      parameters:
        - name: application
          in: query
          required: false
          description: >-
            Partner keys only: passed as a query parameter (`?application=…`)
            since a GET request has no body.
          schema:
            type: string
      responses:
        '200':
          description: The templates and their placeholders
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                        language:
                          type: string
                        category:
                          type: string
                        status:
                          type: string
                        placeholders:
                          type: object
                          properties:
                            kind:
                              type: string
                            header:
                              type: array
                              items:
                                type:
                                  - string
                                  - 'null'
                            body:
                              type: array
                              items:
                                type: string
                            buttons:
                              type: array
                              items:
                                type: object
                                properties:
                                  index:
                                    type: integer
                                  type:
                                    type: string
              examples:
                the_templates_and_their_placeholders:
                  summary: The templates and their placeholders
                  value:
                    data:
                      - name: order_received_v1
                        language: ar
                        category: UTILITY
                        status: APPROVED
                        placeholders:
                          kind: named
                          header: []
                          body:
                            - name
                            - order
                          buttons:
                            - index: 0
                              type: url
        '400':
          description: >-
            `service_required`: Partner key used with no `application` (or
            `service`) in the request body.; `invalid_json`: The request body is
            not valid JSON.; `invalid_request`: start: `to` (and `phone`) both
            missing or blank. check: `id` or `code` missing.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        enum:
                          - service_required
                          - invalid_json
                          - invalid_request
        '401':
          description: >-
            `unauthorized`: Missing, unknown, revoked, or mode-mismatched key;
            or an unknown/suspended partner.; `key_expired`: The key's
            `expires_at` has passed. Checked right after the key is recognised,
            before the IP allowlist or scope.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        enum:
                          - unauthorized
                          - key_expired
        '403':
          description: >-
            `account_not_active`: The application is not approved yet, the
            account is banned, or a partner disabled this application. All four
            causes share this one response.; `ip_not_allowed`: The caller's IP
            does not match the key's `ip_allowlist` (exact IPs and/or CIDR
            ranges, IPv4 and IPv6).; `live_key_required`: A sandbox (tk_test_)
            key. WhatsApp has no sandbox yet; use the application's live key.;
            `whatsapp_not_enabled`: WhatsApp is turned off for this application.
            Message support if you think this is a mistake.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        enum:
                          - account_not_active
                          - ip_not_allowed
                          - live_key_required
                          - whatsapp_not_enabled
        '404':
          description: >-
            `service_not_found`: Partner key, but `application`/`service` does
            not match any of that partner's provisioned applications.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        enum:
                          - service_not_found
        '409':
          description: >-
            `no_whatsapp_number`: No WhatsApp number is connected to this
            application yet. Connect one from the application's WhatsApp tab in
            the dashboard (Getting started, step 1).
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        enum:
                          - no_whatsapp_number
        '429':
          description: >-
            `too_many_requests`: Per-key rate limit exceeded (default 120
            requests/minute, fixed 60s window). Checked before authentication.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        enum:
                          - too_many_requests
        '500':
          description: >-
            `internal_error`: An unhandled server error. Quote the X-Request-Id
            header if you report it.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        enum:
                          - internal_error
        '503':
          description: >-
            `templates_unavailable`: Meta did not answer the read of the
            number's template list, which both `GET /v1/whatsapp/templates` and
            a send need before anything happens. Nothing was sent or charged;
            retry shortly.
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/Error'
                  - properties:
                      error:
                        enum:
                          - templates_unavailable
components:
  schemas:
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
          description: A stable machine-readable code; the docs list every one.
      additionalProperties: true
  securitySchemes:
    bearerKey:
      type: http
      scheme: bearer
      description: 'Authorization: Bearer <api key>'
    headerKey:
      type: apiKey
      in: header
      name: x-api-key
      description: >-
        The same API key, as a header, for clients that cannot set
        Authorization.

````