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

# Obter Templates

> Listar templates de mensagem WhatsApp para um remetente específico

Este endpoint retorna todos os templates de mensagem associados a um remetente WhatsApp específico. Templates são necessários para iniciar conversas ou enviar mensagens para usuários fora da janela de mensagens de 24 horas.

### Parâmetros de Caminho

<ParamField path="senderId" type="integer" required>
  O ID do remetente WhatsApp (obtido do endpoint [Get Senders](/api-reference/whatsapp/get-senders))
</ParamField>

### Parâmetros de Consulta

<ParamField query="status" type="string" optional>
  Filtrar templates por status de aprovação. Padrão: `approved`. Use `all` para retornar todos os templates independentemente do status.
</ParamField>

### Campos de Resposta

<ResponseField name="data" type="array">
  <Expandable title="Propriedades do objeto template">
    <ResponseField name="id" type="integer">
      O identificador único do template. Use isso ao enviar mensagens de template.
    </ResponseField>

    <ResponseField name="name" type="string">
      O nome do template como registrado na Meta (ex: `order_confirmation`, `appointment_reminder`)
    </ResponseField>

    <ResponseField name="language" type="string">
      O código de idioma do template (ex: `en`, `es`, `pt_BR`)
    </ResponseField>

    <ResponseField name="category" type="string">
      A categoria do template: `marketing`, `utility` ou `authentication`
    </ResponseField>

    <ResponseField name="status" type="string">
      O status de aprovação: `approved`, `pending` ou `rejected`
    </ResponseField>

    <ResponseField name="body_text" type="string">
      O texto do corpo do template, com placeholders de variáveis mostrados como `{{1}}`, `{{2}}`, etc.
    </ResponseField>

    <ResponseField name="variables" type="array">
      Lista de nomes de variáveis definidos para o template. Array vazio se o template não tiver variáveis.
    </ResponseField>

    <ResponseField name="has_variables" type="boolean">
      Se este template requer que variáveis sejam fornecidas ao enviar
    </ResponseField>
  </Expandable>
</ResponseField>

### Respostas de Erro

<ResponseField name="404 Not Found">
  <Expandable title="Resposta de Erro">
    <ResponseField name="success" type="boolean">
      `false`
    </ResponseField>

    <ResponseField name="error" type="string">
      `Sender not found`
    </ResponseField>

    <ResponseField name="error_code" type="string">
      `SENDER_NOT_FOUND`
    </ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET "https://suasofia.online/api/user/whatsapp/senders/12/templates" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```bash Todos os templates (incluindo pending/rejected) theme={null}
  curl -X GET "https://suasofia.online/api/user/whatsapp/senders/12/templates?status=all" \
    -H "Authorization: Bearer YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null}
  const senderId = 12;

  const response = await fetch(
    `https://suasofia.online/api/user/whatsapp/senders/${senderId}/templates`,
    {
      headers: {
        'Authorization': 'Bearer YOUR_API_KEY'
      }
    }
  );

  const data = await response.json();
  console.log(data.data); // Array de templates
  ```

  ```python Python theme={null}
  import requests

  sender_id = 12

  response = requests.get(
      f'https://suasofia.online/api/user/whatsapp/senders/{sender_id}/templates',
      headers={'Authorization': 'Bearer YOUR_API_KEY'}
  )

  templates = response.json()['data']
  for template in templates:
      print(f"{template['name']} ({template['language']}): {template['body_text']}")
  ```
</RequestExample>

<ResponseExample>
  ```json 200 Resposta theme={null}
  {
    "data": [
      {
        "id": 45,
        "name": "appointment_reminder",
        "language": "en",
        "category": "utility",
        "status": "approved",
        "body_text": "Olá {{1}}, este é um lembrete para seu compromisso em {{2}} às {{3}}. Responda SIM para confirmar ou NÃO para reagendar.",
        "variables": ["customer_name", "date", "time"],
        "has_variables": true
      },
      {
        "id": 46,
        "name": "welcome_message",
        "language": "pt_BR",
        "category": "marketing",
        "status": "approved",
        "body_text": "Bem-vindo à Sua SofIA! Estamos empolgados em tê-lo. Como podemos ajudá-lo hoje?",
        "variables": [],
        "has_variables": false
      }
    ]
  }
  ```

  ```json 404 Remetente Não Encontrado theme={null}
  {
    "success": false,
    "error": "Sender not found",
    "error_code": "SENDER_NOT_FOUND"
  }
  ```
</ResponseExample>

### Notas

* Apenas templates `approved` são retornados por padrão. Templates com status `pending` ou `rejected` não podem ser usados para enviar mensagens.
* O status de aprovação do template é sincronizado com a Meta a cada 4 horas automaticamente.
* Variáveis em `body_text` são mostradas como `{{1}}`, `{{2}}`, etc. O array `variables` fornece nomes legíveis para humanos para cada placeholder.
* Templates são necessários ao enviar mensagens para um usuário pela primeira vez ou fora da janela de mensagens de 24 horas.
