Describe the bug
Outbound messages sent via POST /api/sendText are accepted by WAHA with HTTP 201, but the message later fails in WhatsApp Web history with:
ack = -1
ackName = ERROR
_data.isSendFailure = true
The same recipient can receive messages successfully when the exact same WhatsApp account sends from the physical phone app.
This looks related to the existing cold-contact/LID issues, but it is not the same failure mode as GOWS 463: WEBJS accepts the message first, then WhatsApp marks it failed asynchronously.
Environment
{
"version": "2026.4.3",
"engine": "WEBJS",
"tier": "PLUS",
"platform": "linux/x64"
}
Session status is WORKING.
Related issues found before opening
Steps to reproduce
- Start a WAHA Plus session using WEBJS.
- Confirm session status is
WORKING.
- Send a message to a new/cold recipient using the physical WhatsApp phone app.
- Confirm the recipient receives that physical-phone message.
- Call
POST /api/sendText through WAHA to the same recipient using a valid @c.us chatId.
- WAHA returns HTTP
201.
- Read the chat history from WAHA.
- The API-sent message is present, but has
ack=-1, ackName=ERROR, and _data.isSendFailure=true.
Expected behavior
If the physical phone app can send to the recipient, WAHA WEBJS should also deliver the message or return a synchronous error explaining why it cannot.
At minimum, we need to know whether this is an expected limitation of WhatsApp Web / linked device sending to cold contacts, or a WAHA WEBJS/LID handling issue.
Actual behavior
Physical phone app message succeeds:
{
"ack": 2,
"ackName": "DEVICE",
"from": "@c.us",
"to": "@lid",
"body": "",
"isSendFailure": null
}
WAHA WEBJS API message to the same chat fails after HTTP 201:
{
"ack": -1,
"ackName": "ERROR",
"from": "@lid",
"to": "@lid",
"body": "",
"isSendFailure": true,
"error": null
}
Important observation: the physical phone message appears as sent from the phone-number identity (<phone-number>@c.us), but the WAHA API message appears as sent from a LID identity (<sender-lid>@lid). The LID-sender API messages fail.
API request
POST /api/sendText
Content-Type: application/json
X-Api-Key:
{
"session": "default",
"chatId": "@c.us",
"text": "Test message"
}
Response:
HTTP/1.1 201 Created
The response includes a message id, but the later chat history shows the message failed with ack=-1.
Additional context
We previously tried GOWS for the same production use case. GOWS failed differently for cold/new contacts with server-side errors around LID / cold-contact reachout behavior. WEBJS improved the synchronous API response, but the actual delivery still fails asynchronously.
Questions:
- Is this a known WEBJS limitation with cold outbound messages and LID sender identity?
- Is there a way to force WEBJS/WAHA to send from the phone-number identity instead of the LID identity?
- Is there a recommended engine/build/configuration for reliable outbound messages to new recipients?
- Are there additional logs or debug flags we should capture for
ack=-1 / _data.isSendFailure=true cases?
I can provide full unredacted message IDs and JIDs privately if needed, but I redacted them here because this is a public issue.
Describe the bug
Outbound messages sent via
POST /api/sendTextare accepted by WAHA with HTTP201, but the message later fails in WhatsApp Web history with:ack = -1ackName = ERROR_data.isSendFailure = trueThe same recipient can receive messages successfully when the exact same WhatsApp account sends from the physical phone app.
This looks related to the existing cold-contact/LID issues, but it is not the same failure mode as GOWS
463: WEBJS accepts the message first, then WhatsApp marks it failed asynchronously.Environment
{
"version": "2026.4.3",
"engine": "WEBJS",
"tier": "PLUS",
"platform": "linux/x64"
}
Session status is
WORKING.Related issues found before opening
463/ missingtctoken/cstokensendText463, physical device succeedssendText500,no LID found from serverSteps to reproduce
WORKING.POST /api/sendTextthrough WAHA to the same recipient using a valid@c.uschatId.201.ack=-1,ackName=ERROR, and_data.isSendFailure=true.Expected behavior
If the physical phone app can send to the recipient, WAHA WEBJS should also deliver the message or return a synchronous error explaining why it cannot.
At minimum, we need to know whether this is an expected limitation of WhatsApp Web / linked device sending to cold contacts, or a WAHA WEBJS/LID handling issue.
Actual behavior
Physical phone app message succeeds:
{
"ack": 2,
"ackName": "DEVICE",
"from": "@c.us",
"to": "@lid",
"body": "",
"isSendFailure": null
}
WAHA WEBJS API message to the same chat fails after HTTP
201:{
"ack": -1,
"ackName": "ERROR",
"from": "@lid",
"to": "@lid",
"body": "",
"isSendFailure": true,
"error": null
}
Important observation: the physical phone message appears as sent from the phone-number identity (
<phone-number>@c.us), but the WAHA API message appears as sent from a LID identity (<sender-lid>@lid). The LID-sender API messages fail.API request
POST /api/sendText
Content-Type: application/json
X-Api-Key:
{
"session": "default",
"chatId": "@c.us",
"text": "Test message"
}
Response:
HTTP/1.1 201 Created
The response includes a message id, but the later chat history shows the message failed with
ack=-1.Additional context
We previously tried GOWS for the same production use case. GOWS failed differently for cold/new contacts with server-side errors around LID / cold-contact reachout behavior. WEBJS improved the synchronous API response, but the actual delivery still fails asynchronously.
Questions:
ack=-1/_data.isSendFailure=truecases?I can provide full unredacted message IDs and JIDs privately if needed, but I redacted them here because this is a public issue.