> ## Documentation Index
> Fetch the complete documentation index at: https://developer.omni.z-api.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Editar mensagem

> Corrija o texto de uma mensagem já enviada, nos canais que permitem edição

## Conceituação

Troca o texto de uma mensagem de texto que o seu canal já enviou. O destinatário vê o texto novo no lugar do antigo, com a marca de editada do aplicativo. Nenhuma mensagem nova é enviada.

```
PUT /v1/channels/{channelId}/messages/{messageId}
```

* `channelId`: o canal que enviou a mensagem.
* `messageId`: o `messageId` que o envio devolveu. O `contents[].identifier` recebido no webhook também é aceito.

> [!WARNING]
>
> **Só o WhatsApp Web e o Telegram permitem edição.** Em WhatsApp Meta, Instagram e Messenger, a API recusa o pedido com `422` e `subCode` `EDIT_NOT_SUPPORTED`, e nada é enviado ao contato. Veja [Limitações por canal](#limitações-por-canal).

## Corpo da requisição

```json theme={null}
{
  "content": {
    "type": "TEXT",
    "body": { "message": "Texto corrigido" }
  }
}
```

Destinatário e remetente não são pedidos: valem os da mensagem original. Só texto pode ser editado: a legenda de imagem, vídeo ou documento não é editável e recebe `422` `MESSAGE_NOT_EDITABLE`.

## Resposta

`200` com o `messageId` da mensagem editada:

```json theme={null}
{ "messageId": "01A0C92D0C957FE98B73C8BA0CACF741" }
```

O `200` confirma que a edição foi aceita e encaminhada ao canal, não que o aplicativo do contato já mostra o texto novo. Se o canal recusar depois (por exemplo, o contato bloqueou o bot no Telegram ou a mensagem foi apagada), o texto do contato não muda e a API não envia aviso dessa recusa.

## Erros

| Status | `subCode` | Quando |
| - | - | - |
| `400` | — | corpo ausente ou vazio, `content.type` diferente de `TEXT` ou `content.body.message` vazio |
| `404` | — | o `messageId` não existe ou não é deste canal |
| `422` | `EDIT_NOT_SUPPORTED` | o canal não permite edição |
| `422` | `CHANNEL_DISCONNECTED` | o canal está desconectado |
| `422` | `MESSAGE_NOT_EDITABLE` | a mensagem não é texto (inclusive legenda de mídia), não foi enviada pelo seu canal, ainda não foi aceita pelo canal ou falhou no envio |
| `422` | `EDIT_WINDOW_EXPIRED` | passou o prazo em que o canal aceita edição |

Trate as recusas pelo `subCode`. O texto de `message` pode mudar. O formato do corpo de erro está em [Erros no envio](https://developer.omni.z-api.io/messages/introduction.md#erros-no-envio).

## Editar pelo envio

O envio (`POST /v1/channels/{channelId}/messages`) com `content.body.editMessageId` também é tratado como edição da mensagem indicada, com as mesmas regras e as mesmas recusas desta página. Ele nunca envia uma mensagem nova. Prefira o `PUT`, que deixa a intenção explícita.

## Limitações por canal

| Canal | Edição pela API | Por quê |
| - | - | - |
| WhatsApp Meta (Cloud API) | ❌ recusada com `EDIT_NOT_SUPPORTED` | a Cloud API da Meta não oferece edição de mensagem enviada pela empresa |
| WhatsApp Web | ✅ texto | até 15 minutos depois do envio, o prazo do WhatsApp. Depois disso, recebe `EDIT_WINDOW_EXPIRED`. Legenda de mídia recebe `MESSAGE_NOT_EDITABLE` |
| Instagram | ❌ recusada com `EDIT_NOT_SUPPORTED` | a API de mensagens do Instagram não oferece edição de mensagem enviada |
| Messenger | ❌ recusada com `EDIT_NOT_SUPPORTED` | não implementada |
| Telegram | ✅ texto | sem prazo: o Telegram não limita a edição de mensagem enviada pelo bot. Só texto, até 4.096 caracteres; legenda de mídia recebe `MESSAGE_NOT_EDITABLE` |

No Telegram, um texto acima de 4.096 caracteres também recebe `200`, mas o Telegram recusa a edição e o texto do contato não muda. Mantenha a edição dentro desse limite.


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