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

# Listar templates

> Espelho de `GET /{waba_id}/message_templates` da Meta Cloud API.

Lista os templates da conta com nome, status, categoria e idioma. A resposta informa o `id` de cada template e o status atual da análise.

```json theme={null}
{
  "data": [
    {
      "id": "5400801403478858",
      "name": "retirada_equipamento",
      "language": "pt_BR",
      "status": "APPROVED",
      "category": "UTILITY"
    }
  ],
  "paging": { "cursors": { "before": "QVFIU...", "after": "QVFIU..." } }
}
```

## Campos retornados

Por padrão a Meta retorna o template completo, incluindo todos os componentes. O parâmetro `fields` limita a resposta aos campos informados:

```bash theme={null}
curl 'https://cloud.datafyapi.com.br/v1/{waba_id}/message_templates?fields=name,status,category,language' \
  -H 'Authorization: Bearer sk_live_xxx'
```

Além dos campos básicos, `components` retorna o conteúdo do template e `rejected_reason` informa o motivo da recusa, como `INVALID_FORMAT` quando falta o `example` das variáveis.

## Filtros

| Filtro | Exemplo | Resultado |
| - | - | - |
| `name` | `?name=retirada_equipamento` | Retorna o template informado, em todos os idiomas |
| `status` | `?status=APPROVED` | Retorna apenas os templates no status indicado |
| `limit` | `?limit=20` | Define a quantidade de templates por página |

O filtro `name` permite consultar o status de um template específico enquanto o webhook `message_template_status_update` não estiver implementado.

## Paginação

Quando a conta possui muitos templates, a resposta é paginada e os cursores são retornados em `paging.cursors`. Para obter a página seguinte, repita a chamada com o cursor `after`:

```bash theme={null}
curl 'https://cloud.datafyapi.com.br/v1/{waba_id}/message_templates?limit=20&after=QVFIU...' \
  -H 'Authorization: Bearer sk_live_xxx'
```

> [!WARNING]
>
> A resposta pode conter um `paging.next` apontando para `graph.facebook.com`. Esse endereço é da Meta e exige o token dela, que a Datafy não expõe. Utilize apenas o valor do cursor, na URL da Datafy, como no exemplo acima.

Mais detalhes em [Paginação](https://developers.datafyapi.com.br/api-reference/whatsapp/visao-geral/requisicoes.md#paginação) e na [visão geral de templates da Meta](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/overview).


## OpenAPI

````yaml api-reference/whatsapp/openapi.json GET /v1/{waba_id}/message_templates
openapi: 3.1.0
info:
  title: Datafy API — WhatsApp
  version: 1.0.0
  description: Espelho da Meta Cloud API e endpoints próprios da Datafy.
servers:
  - url: https://cloud.datafyapi.com.br
    description: Produção
security:
  - bearerAuth: []
tags:
  - name: Templates
  - name: Mídia
  - name: Datafy
paths:
  /v1/{waba_id}/message_templates:
    get:
      tags:
        - Templates
      summary: Listar templates
      description: Espelho de `GET /{waba_id}/message_templates` da Meta Cloud API.
      operationId: listarTemplates
      parameters:
        - $ref: '#/components/parameters/WabaId'
        - name: name
          in: query
          required: false
          schema:
            type: string
          description: Filtra pelo nome do template.
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - APPROVED
              - PENDING
              - REJECTED
              - PAUSED
              - DISABLED
          description: Filtra pelo status de aprovação.
        - name: fields
          in: query
          required: false
          schema:
            type: string
          description: Campos retornados, separados por vírgula.
          example: name,status,category,language,components
        - name: limit
          in: query
          required: false
          schema:
            type: integer
          description: Quantidade de templates por página.
      responses:
        '200':
          description: Lista de templates.
          content:
            application/json:
              example:
                data:
                  - id: '1234567890123456'
                    name: pedido_pronto
                    language: pt_BR
                    status: APPROVED
                    category: UTILITY
                paging:
                  cursors:
                    before: QVFIU...
                    after: QVFIU...
        '400':
          $ref: '#/components/responses/MetaError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '402':
          $ref: '#/components/responses/PaymentRequired'
        '429':
          $ref: '#/components/responses/TooManyRequests'
      externalDocs:
        description: Referência de templates da Meta
        url: >-
          https://developers.facebook.com/docs/whatsapp/business-management-api/message-templates
components:
  parameters:
    WabaId:
      name: waba_id
      in: path
      required: true
      schema:
        type: string
      description: ID da conta do WhatsApp Business. Descubra com `GET /me`.
  responses:
    MetaError:
      description: Erro retornado pela Meta, repassado sem alteração.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/MetaError'
          example:
            error:
              message: (#131030) Recipient phone number not in allowed list
              type: OAuthException
              code: 131030
              fbtrace_id: AbCdEfGhIjK
    Unauthorized:
      description: Token ausente ou inválido.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DatafyError'
          example:
            statusCode: 401
            message: Token inválido ou não encontrado.
    PaymentRequired:
      description: Assinatura da Datafy inativa.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DatafyError'
          example:
            statusCode: 402
            message: >-
              Assinatura inativa. Ative sua assinatura no painel para voltar a
              usar a API.
    TooManyRequests:
      description: Limite de requisições excedido.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/DatafyError'
          example:
            statusCode: 429
            message: Rate limit excedido (60 req/min). Tente novamente em 12s.
  schemas:
    MetaError:
      type: object
      properties:
        error:
          type: object
          properties:
            message:
              type: string
            type:
              type: string
            code:
              type: integer
            error_subcode:
              type: integer
            fbtrace_id:
              type: string
    DatafyError:
      type: object
      properties:
        statusCode:
          type: integer
        message:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Token gerado no painel da Datafy ao criar o canal. Formato:
        `sk_live_xxx`.

````

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