> ## 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.

# Editar template

> Espelho de `POST /{template_id}` da Meta Cloud API. Envia a nova versão do template para análise.

Altera um template existente, sem criar outro com nome diferente. É usado para corrigir templates rejeitados e para alterar o conteúdo de templates aprovados.

O caminho usa o `template_id`, sem o `waba_id`. Esse ID é retornado por [Criar template](https://developers.datafyapi.com.br/api-reference/whatsapp/templates/criar-template.md) e por [Listar templates](https://developers.datafyapi.com.br/api-reference/whatsapp/templates/listar-templates.md).

## Status que permitem edição

| Status | Edição |
| - | - |
| `REJECTED` | Permitida |
| `APPROVED` | Permitida, dentro do limite de edições por período definido pela Meta |
| `PENDING` | Não permitida enquanto a análise estiver em andamento |

A edição de um template em análise retorna `HTTP 400`:

```json theme={null}
{
  "error": {
    "message": "Invalid parameter",
    "code": 100,
    "error_subcode": 2388003,
    "error_user_title": "O modelo de mensagem não pode ser editado",
    "error_user_msg": "Os modelos de mensagem só podem ser editados se tiverem sido rejeitados.",
    "fbtrace_id": "AQSfa8D0NJFaoG_WsFANxMz"
  }
}
```

## Componentes

O corpo da requisição substitui a lista de componentes do template. Envie todos os componentes que o template deve conter ao final da edição, inclusive os que não foram alterados: componentes omitidos são removidos.

```json theme={null}
{
  "components": [
    {
      "type": "BODY",
      "text": "Olá, {{1}}. Seu pedido {{2}} foi enviado.",
      "example": { "body_text": [["Rafael", "7539"]] }
    }
  ]
}
```

A resposta identifica o template alterado:

```json theme={null}
{
  "success": true,
  "id": "5400801403478858",
  "name": "retirada_equipamento",
  "category": "UTILITY"
}
```

> [!NOTE]
>
> O nome e o idioma não podem ser alterados, pois identificam o template. Para alterar qualquer um dos dois, crie um template novo.

## Após a edição

O template retorna ao status `PENDING` e passa por nova análise, inclusive quando já estava aprovado. Durante a análise, a versão anterior continua válida para envio, e o resultado é informado pelo webhook [`message_template_status_update`](https://developers.datafyapi.com.br/api-reference/whatsapp/webhooks/eventos/templates).

Os limites de edição por período estão em [gerenciamento de templates da Meta](https://developers.facebook.com/documentation/business-messaging/whatsapp/templates/template-management).


## OpenAPI

````yaml api-reference/whatsapp/openapi.json POST /v1/{template_id}
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/{template_id}:
    post:
      tags:
        - Templates
      summary: Editar template
      description: >-
        Espelho de `POST /{template_id}` da Meta Cloud API. Envia a nova versão
        do template para análise.
      operationId: editarTemplate
      parameters:
        - name: template_id
          in: path
          required: true
          schema:
            type: string
          description: >-
            ID do template. Aparece no retorno de Criar template e de Listar
            templates.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                category:
                  type: string
                  enum:
                    - MARKETING
                    - UTILITY
                    - AUTHENTICATION
                components:
                  type: array
                  description: Nova lista completa de componentes do template.
                  items:
                    type: object
            example:
              components:
                - type: BODY
                  text: >-
                    Olá, {{1}}. O equipamento da ordem de serviço {{2}} já pode
                    ser retirado na unidade Centro.
                  example:
                    body_text:
                      - - Rafael
                        - '7539'
      responses:
        '200':
          description: Edição enviada para análise.
          content:
            application/json:
              example:
                success: true
                id: '5400801403478858'
                name: retirada_equipamento
                category: UTILITY
        '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:
  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.