WhatsApp API Delete Message: Can You Edit or Unsend?
A reminder went out with the wrong time. An agent pasted a price meant for a different customer. In the WhatsApp app you'd long-press, tap Delete for everyone or Edit, and move on. Through the API, it isn't that simple.
If you're searching for a WhatsApp API delete message call, here's the short version: Meta's Cloud API doesn't document any way to edit or delete a message after it's sent. What it does offer, on coexistence numbers, is a way to find out when a customer edits or deletes theirs. Linked-number tools can do what the app does, because they are a linked device on the account.
This post covers what each option supports, how to correct a mistake gracefully when you can't unsend, and how to handle customer deletions in your own data.
Cloud API: no documented edit or delete
Meta's Message API reference documents one operation, POST /PHONE_NUMBER_ID/messages. There's nothing to edit, recall or delete a message for everyone once it's sent.
As of October 2026, the reference has no DELETE, PUT or PATCH on messages and no "revoke" message type for businesses to send. A delivered Cloud API message stays in the customer's chat. Two things sound similar and aren't:
- Deleting media. You can send a
DELETErequest for an uploaded media ID to remove that file from Meta's servers (uploaded media otherwise persists for 30 days). That manages your stored files. It is not an unsend: the message itself stays in the chat. - Deleting templates. Template management lets you delete a template so it can't be sent again. Messages already sent with it are unaffected.
Meta's Groups API is explicit on the point: editing and deleting messages are listed as unsupported in groups. For the full list of what the platform can send, see our guide to WhatsApp API message types.
How to correct a mistake you can't unsend
Stop the damage, then send a short, specific correction that quotes the original.
- Pause the queue if the mistake came from a template, a merge field or a bulk job. Every minute you wait sends it to more people.
- Send a correction as a reply to the original, so it appears directly under the wrong message. On the Cloud API that's the
contextfield with the original message ID. - Keep it plain: what was wrong, what's right, a brief apology. No marketing.
- Mind the window. A free-form correction only works inside an open 24-hour customer service window. Outside it, you need an approved utility template written for corrections, so it's worth having one ready.
- Log it against the conversation, so whoever picks up the chat knows what happened.
curl -X POST "https://graph.facebook.com/v23.0/PHONE_NUMBER_ID/messages" \
-H "Authorization: Bearer $WHATSAPP_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"messaging_product": "whatsapp",
"to": "919811122233",
"context": { "message_id": "wamid.ORIGINAL_MESSAGE_ID" },
"type": "text",
"text": { "body": "Correction: your appointment is at 4:30 pm, not 3:30 pm. Sorry for the mix-up." }
}'
Use the current Graph API version from Meta's changelog in place of v23.0. Prevention is cheaper than correction: preview merged templates against real records before a bulk send, send to an internal test number first, and make retries idempotent so a timeout doesn't send the same message twice. Our guide to avoiding duplicate WhatsApp API messages covers that last one.
When the customer edits or deletes: coexistence webhooks
On numbers onboarded through coexistence, Meta sends an edit webhook when a customer edits a message and a revoke webhook when they delete one.
Meta added these webhooks for coexistence (WhatsApp Business app numbers connected to the Cloud API) in late 2025. Per Meta's revoke webhook reference, as of October 2026:
- Revoke fires when a user deletes a message they sent, which WhatsApp allows within two days of sending. The payload carries
type: "revoke"andrevoke.original_message_id. - Edit fires when a user edits a text message or a media caption, which WhatsApp allows within 15 minutes. The payload carries
type: "edit",edit.original_message_idand anedit.messageobject with the new content. - Both are coexistence-only. Meta documents them only for WhatsApp Business app users, so on a standard Cloud API number, don't assume you'll be told when a customer deletes something.
The revoke message object looks like this:
{
"from": "16505551234",
"id": "wamid.HBgLMTY1MDM4Nzk0MzkVAgASGBQzQUFERjg0NDEzNDdFODU3MUMxMAA=",
"timestamp": "1749854575",
"type": "revoke",
"revoke": {
"original_message_id": "wamid.HBgLMTQxMjU1NTA4MjkVAgASGBQzQUNCNjk5RDUwNUZGMUZEM0VBRAA="
}
}
A handler that updates your stored copy, written for Node.js with db standing in for your data layer:
// Runs inside your messages webhook handler, after the signature check.
for (const m of value.messages ?? []) {
if (m.type === "revoke") {
await db.markDeleted(m.revoke.original_message_id, Number(m.timestamp) * 1000);
} else if (m.type === "edit") {
// edit.message mirrors a normal message object: text body or media caption
const next = m.edit.message;
const body = next.text?.body ?? next[next.type]?.caption ?? null;
await db.recordEdit(m.edit.original_message_id, body, Number(m.timestamp) * 1000);
} else {
await db.saveInbound(m);
}
}
Then decide what your team should see. Keeping the original but marking it deleted, and limiting who can view it, is a common middle ground; how long you keep it is a data-protection decision as much as a product one. To link these events to delivery states, see our guide to WhatsApp message status webhooks, and for the onboarding side, our guide to WhatsApp coexistence.
Linked-number tools: edit and delete like the app
A linked-number tool is a companion device on your account, so it can do what WhatsApp Web can, within WhatsApp's own time limits.
That means editing a sent message shortly after sending, deleting it for everyone, and seeing when the other person deletes theirs. Whether a given tool exposes those actions in its interface or API varies, so check before you rely on it.
| Edit a sent message | Delete for everyone | Know when the customer deletes | |
|---|---|---|---|
| Cloud API, standard number | No | No | Not documented |
| Cloud API with coexistence | From the Business app | From the Business app | Yes, revoke webhook |
| Meta Groups API | No | No | Not applicable |
| Tenashi inbox | Yes | Yes | Yes, message kept and tagged |
| Tenashi API | No | No | Shown in the inbox |
Where Tenashi fits
If wrong messages are part of daily life on your team (they are on every team), Tenashi handles them in the inbox the way WhatsApp does on a phone. An agent can fix a sent message, delete it for everyone, or forward it to the right chat, in DMs and groups. When a customer deletes a message, Tenashi keeps it and tags it "Deleted on WhatsApp", so the context behind a dispute or an order change doesn't vanish.
The honest limit is the API: Tenashi's developer API sends, reads statuses and lists chats, but it has no edit or delete endpoints today. Corrections to messages your system sent happen in the inbox, where everyone sees them. And like any linked-number tool, it isn't endorsed by Meta.
See every feature · Get started
FAQ
Can I delete a WhatsApp message sent through the Cloud API?
No documented way exists. Meta's Message API reference lists only sending, with no delete, recall or edit operation for messages a business has sent. Once delivered, the message stays in the customer's chat. The practical fix is a short correction sent as a reply to the original, or a correction template if the window has closed.
Can I edit a message sent with the WhatsApp Business API?
Not through the Cloud API, as of October 2026. On coexistence numbers, staff can still edit from the WhatsApp Business app, and Meta mirrors edits in one-to-one chats. Meta's Groups API lists editing as unsupported. Linked-number tools that expose editing can do it within WhatsApp's 15-minute limit.
How do I know if a customer deleted a WhatsApp message?
On coexistence numbers, Meta sends a revoke webhook with the original message ID when a customer deletes a message, which they can do within two days. Meta documents this only for WhatsApp Business app users. In Tenashi, deleted customer messages stay in the inbox, tagged "Deleted on WhatsApp".
Does deleting media with the API unsend the message?
No. The Cloud API's media delete removes an uploaded file from Meta's servers, where uploads otherwise persist for 30 days. It's for managing your stored media, not for recalling messages. The message you sent stays in the customer's chat, so handle mistakes with a correction rather than relying on media deletion.
Can Tenashi's API edit or delete messages?
Not today. Tenashi's developer API sends messages, reports their status and lists chats, but it has no edit or delete endpoints. Editing, deleting for everyone and forwarding are available in the Tenashi inbox, in DMs and groups, so agents can fix mistakes where the whole team can see what changed.
On the official API, the honest answer to "how do I unsend this?" is: you can't, so correct it well and prevent the next one. If your team needs real edit and delete on the number customers already use, see every Tenashi feature, and for the rest of the platform, read our complete guide to the WhatsApp API.