Forward a message to another chat
Forwards the message identified by `mid` (located by `chat`/`sender` in the body) to the destination chat named by `to` (a recipient JID). **Note (v1 behavior):** the forwarded message is sent as a **text reference** to the original, marked as forwarded — it does **not** copy the original body verbatim or re-upload media. A faithful copy is planned once the gateway can fetch a stored message by id. Returns **200** with a `SendResult` describing the newly sent (forwarded) message. ### Preconditions & errors - Requires the **`send`** capability. - **400 `validation_error`** — missing/empty `to`. - **404 `not_found`** — the session or source message does not exist or is not owned by your organization.
Send Authorization: Bearer <token>. The router accepts two kinds of token and tries each in turn: a frontend-minted login JWT (verified against the frontend JWKS; the person's org + role are read from it), or an api-key for a script/service (carrying a fixed set of gateway permissions). The bearerFormat: JWT label describes the person-login case.
In: header
Path Parameters
The WhatsApp session id used to forward the message. Must be a connected session your organization owns.
The WhatsApp message id (the per-message stable id assigned by WhatsApp) of the message to forward.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
The JID of the source chat the message currently lives in (e.g. "123...@s.whatsapp.net" or "123...@g.us").
The JID of the original sender of the message. Leave empty ("") for your own message; set the author's JID for another participant's message.
The destination chat JID to forward into (e.g. "123...@s.whatsapp.net" for a direct chat or "123...@g.us" for a group). Required. Note (v1): the forwarded message is sent as a text reference to the original, marked as forwarded — it does not copy the original body or re-upload media.
Response Body
application/json
application/json
curl -X POST "https://example.com/api/v1/sessions/01HZX.../messages/3EB0C431C26A1916E07A/forward" \ -H "Content-Type: application/json" \ -d '{}'{ "mode": "string", "outboxId": "string", "replayed": true, "status": "string", "timestamp": 0, "waMessageId": "string"}{ "error": { "code": "not_found", "details": { "property1": null, "property2": null }, "message": "session not found" }}Revoke a message (delete for everyone) DELETE
Deletes the message identified by `mid` in the path **for everyone** in the chat — not just on your own device. Located by `chat` (and `sender`) in the body. Use the `sender` body field to revoke another participant's message (e.g. as a group admin); leave it empty to revoke your own message. This is a synchronous operation and returns **200** with a `SendResult`. WhatsApp enforces its own time/role limits on who may revoke what. ### Preconditions & errors - Requires the **`send`** capability. - **404 `not_found`** — the session or message does not exist or is not owned by your organization.
Add a reaction to a message POST
Reacts to the message identified by `mid` (located by `chat`/`sender` in the body) with a single emoji. A reaction is **idempotent per message**: sending a new reaction replaces any reaction you previously set on that message — there is at most one reaction per (you, message) pair. Returns **200** with a `SendResult`. ### Preconditions & errors - Requires the **`send`** capability. - **400 `validation_error`** — missing/empty `emoji`. - **404 `not_found`** — the session or message does not exist or is not owned by your organization.