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

# List approved templates

> List the templates this merchant can send right now.

Only templates approved in Meta are listed, because only those can be sent:
naming an unapproved one in a send is rejected with `422`. Each entry
carries the `name`, the `language` and the variable keys a send must supply.

An empty list means no template has been approved and mirrored for this
account yet, and every send will be rejected until one is.



## OpenAPI

````yaml /openapi.json get /v1/templates
openapi: 3.1.0
info:
  title: YV Business API
  description: >-
    Public API for YaVendio merchants to access orders, product catalog,
    conversations, contacts and company profile, and to send WhatsApp template
    messages.


    ## Authentication


    All endpoints require a valid API key sent via the `X-API-Key` header. API
    keys are created and managed from the [YaVendio Dashboard](https://ya.onl)
    under **Settings → API Keys**.


    Use the **Authorize** button above to set your key for all requests.


    Every endpoint declares the scope it requires (e.g. `orders:read`,
    `products:write`, `conversations:read`, `contacts:read`, `company:read`,
    `outbound:send`, `outbound:read`), listed on its reference page. Keys
    created from the dashboard today carry no scopes and therefore have full
    access; a key that has scopes but lacks the one an endpoint requires gets
    `403 Forbidden`.


    ## Rate Limiting


    Requests are rate-limited per merchant. Every response includes
    `X-RateLimit-Limit`, `X-RateLimit-Remaining`, and `X-RateLimit-Reset`
    headers. Check these headers to know your current limit and remaining quota.
    When the limit is exceeded, the API responds with `429 Too Many Requests`
    and adds a `Retry-After` header.


    ## Pagination


    List endpoints support pagination via `page` and `limit` query parameters.
    Responses include a `pagination` object with `total_pages`, `total_items`,
    and `has_more` fields. Maximum `limit` is 100.
  version: 1.14.2
servers:
  - url: https://api.ya.onl
security: []
tags:
  - name: Orders
    description: Retrieve merchant orders and their details.
  - name: Products
    description: CRUD operations on merchant products.
  - name: Product Variants
    description: Manage variants of a product.
  - name: Product Options
    description: Manage product options.
  - name: Product Option Values
    description: Manage individual option values.
  - name: Product Media
    description: Manage media files attached to product variants.
  - name: Categories
    description: CRUD operations on merchant categories (tags).
  - name: Product Categories
    description: Assign and remove categories from products.
  - name: Catalogs
    description: Retrieve merchant catalogs.
  - name: Webhooks
    description: Manage webhook subscriptions for real-time order events.
  - name: Conversations
    description: Read WhatsApp conversations and their messages.
  - name: Contacts
    description: Retrieve campaign contacts.
  - name: Company
    description: Retrieve the merchant's company profile.
  - name: Templates
    description: >-
      List the WhatsApp templates approved for the merchant, with the variables
      each one expects.
  - name: Template Messages
    description: >-
      Send approved WhatsApp templates to customers and follow their delivery
      status.
paths:
  /v1/templates:
    get:
      tags:
        - Templates
      summary: List approved templates
      description: >-
        List the templates this merchant can send right now.


        Only templates approved in Meta are listed, because only those can be
        sent:

        naming an unapproved one in a send is rejected with `422`. Each entry

        carries the `name`, the `language` and the variable keys a send must
        supply.


        An empty list means no template has been approved and mirrored for this

        account yet, and every send will be rejected until one is.
      operationId: get_templates_v1_templates_get
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            description: Page number (1-indexed)
            default: 1
            title: Page
          description: Page number (1-indexed)
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            exclusiveMinimum: 0
            description: Number of items per page (max 100)
            default: 25
            title: Limit
          description: Number of items per page (max 100)
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedResponse_TemplateSummary_'
          headers:
            X-RateLimit-Limit:
              description: Maximum number of requests allowed in the current window
              schema:
                type: integer
                example: 100
            X-RateLimit-Remaining:
              description: Number of requests remaining in the current window
              schema:
                type: integer
                example: 87
            X-RateLimit-Reset:
              description: Unix timestamp when the rate limit window resets
              schema:
                type: integer
                example: 1710288000
        '401':
          description: Invalid or missing API key
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
        '403':
          description: API key lacks the `outbound:read` scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
        '429':
          description: Rate limit exceeded
          headers:
            X-RateLimit-Limit:
              description: Maximum number of requests allowed in the current window
              schema:
                type: integer
                example: 100
            X-RateLimit-Remaining:
              description: Number of requests remaining in the current window
              schema:
                type: integer
                example: 87
            X-RateLimit-Reset:
              description: Unix timestamp when the rate limit window resets
              schema:
                type: integer
                example: 1710288000
            Retry-After:
              description: Seconds to wait before making another request
              schema:
                type: integer
                example: 30
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/APIErrorResponse'
      security:
        - APIKeyHeader: []
components:
  schemas:
    PaginatedResponse_TemplateSummary_:
      properties:
        data:
          items:
            $ref: '#/components/schemas/TemplateSummary'
          type: array
          title: Data
          description: List of items for the current page
        pagination:
          $ref: '#/components/schemas/PaginationResponse'
          description: Pagination metadata
      type: object
      required:
        - data
        - pagination
      title: PaginatedResponse[TemplateSummary]
    APIErrorResponse:
      properties:
        type:
          type: string
          title: Type
          description: Error type identifier, e.g. 'UnauthorizedError'
        detail:
          type: string
          title: Detail
          description: Human-readable error message
      type: object
      required:
        - type
        - detail
      title: APIErrorResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    TemplateSummary:
      properties:
        name:
          type: string
          title: Name
          description: >-
            Value to send as `template.name`. The name approved in Meta when
            there is one, the display name otherwise
          examples:
            - cart_recovery
        display_name:
          anyOf:
            - type: string
            - type: 'null'
          title: Display Name
          description: >-
            Name shown in the YaVendio dashboard. Null unless it differs from
            `name` — the key is always present, so test the value
          examples:
            - Cart recovery
        language:
          type: string
          title: Language
          description: >-
            Value to send as `template.language`. Always present, and it must
            match exactly — `es` and `es_PE` are different templates
          examples:
            - es
        category:
          type: string
          title: Category
          description: Meta category the template was approved under
          examples:
            - marketing
        required_variables:
          items:
            type: string
          type: array
          title: Required Variables
          description: >-
            Keys that `variables` must carry when sending this template —
            exactly these, no more and no fewer. A positional template lists
            positions (`"1"` fills `{{1}}`); a template authored with named
            placeholders lists their names (`"name"` fills `{{name}}`). An empty
            list means the template takes no variables
          examples:
            - - '1'
              - '2'
            - - name
              - order_total
        sendable:
          type: boolean
          title: Sendable
          description: >-
            False when the approved text mixes positional and named
            placeholders, numbers them with gaps (`{{1}} {{3}}`), or puts a
            placeholder in the header (this API fills body variables only);
            `required_variables` then lists every placeholder found and `POST
            /v1/template-messages` answers 422 for this template
          default: true
          examples:
            - true
      type: object
      required:
        - name
        - language
        - category
      title: TemplateSummary
      description: One approved template, described as a send request must reference it.
    PaginationResponse:
      properties:
        page:
          type: integer
          title: Page
          description: Current page number
          examples:
            - 1
        limit:
          type: integer
          title: Limit
          description: Items per page
          examples:
            - 25
        total_pages:
          type: integer
          title: Total Pages
          description: Total number of pages
          examples:
            - 4
        total_items:
          type: integer
          title: Total Items
          description: Total number of items across all pages
          examples:
            - 100
        has_more:
          type: boolean
          title: Has More
          description: Whether there are more pages after the current one
          examples:
            - true
      type: object
      required:
        - page
        - limit
        - total_pages
        - total_items
        - has_more
      title: PaginationResponse
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      description: Merchant API key for authentication
      in: header
      name: X-API-Key

````

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